For å få et inntrykk av resultatet av denne opplæringen, bør du se den tilhørende videoen.
I arbeidsfilen PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d er de viktigste elementene i scenen allerede forberedt, slik at vi kan begynne å jobbe med Dynamics umiddelbart. Fordi vi starter med montering av den lille lekebilen, er alle forstyrrende elementer i scenen midlertidig skjult via de grønne bryterne til Objekt Manager.
Oppbyggingen av scenen
La oss se nærmere på sammensetningen av scenen. I tillegg til bilen er det også et Kule-Objekt som senere vil være et hinder, et HyperNURBS-Objekt med integrert Landskapsobjekt samt Gulv, Himmel og Lys-Objekter for miljøet og belysningen i scenen.
For at oppbyggingen av kjøretøyet skal være så enkel og forståelig som mulig, består bilen bare av karosseriet og de fire hjulene. Totalt fire Sylinder-Objekter, som er rettet i positiv X-retning og plassert på de tilsvarende stedene på bilen.
For enklere integrering senere av Konnektorer og Motorer, henger hvert hjul sin posisjon som en forkortelse på seg (vl = foran venstre).
Karosseriet genererer et Ekstruder-NURBS-Objekt fra en Spline. Selvfølgelig kan du også bruke en annen bil eller et annet karosseri; det viktige senere er bare den korrekte integreringen via Konnektor eller Dynamics Body-Tag.
I innstillingsdialogen til Ekstruder-NURBS-Objektet er bredden på kjøretøyet vårt definert. Den oppnås ved Forskyvning i X-retning under Ekstruderingen. For et naturlig, realistisk utseende sørger Abrundinger av kantene på karosseriet.
Skjult i HyperNURBS-Objektet ligger et Landskapsobjekt, som gir oss et brukbart terreng for offroad-delen av bilen. Takket være HyperNURBS-Subdivisjon kan vi spare ved segmenteringen av landskapet uten å få et for kantet terreng.
For å øke spenningen under kjøringen gjennom terrenget, integrerer vi noen hindringer. I mitt tilfelle enkle Kule-Objekter med 50 cm-Radius, som senere blir tilfeldig distribuert på terrenget eller Landskapsobjektet via MoGraph.
Bygging av kjøretøyet med konnektorer og motorer
La oss først se på lekebilen. Hvilke funksjoner må den oppfylle for våre formål?
Først må hjulene festes roterende til kjøretøyet; i tillegg trenger den en drivkraft på hjulene slik at den i det hele tatt kan forflytte seg selvstendig. Og den må selvfølgelig oppdage Kollisjoner - det begynner allerede med at hjulene står på bakken.
For å kunne tilby denne funksjonaliteten via de nye Dynamics i CINEMA 4D, trenger de involverte elementene Dynamics Body-Tags, slik at de i det hele tatt aksepteres av Dynamics-motoren.
Vi begynner med de fire hjulene, som vi alle velger i Objekt Manager og definerer dem som Rigid Body via menyen Simulering>Dynamics.
Ettersom alle fire hjul selvsagt får de samme dynamiske egenskapene, vil vi la de fire Dynamics Body-Tagsene være valgt og angi de ønskede parametrene.
På Dynamics-siden kan vi bruke standardinnstillingene. Øyeblikkelig utløsning er viktig slik at hjulene har kontakt med bakken umiddelbart.
På Kollisjonssiden hjelper vi Dynamics' Kollisjonsdeteksjon ved å stille inn Form som Sylinder X-Axis. Dette tilsvarer formen på hjulet og øker ytelsen i Dynamics-beregningen. For at kjøretøyet ved en kollisjon med bakken bare hopper veldig lett, stiller vi inn en liten Elastisitet på 10%. Deretter øker vi Friksjonen til 120%, slik at hjulene kan bygge skikkelig grep på bakken.
La oss gå videre til neste element i kjøretøyet, karosseriet. Dessverre passer ikke Ekstruder-NURBS-Objektet på grunn av sin ugunstige akselforhold som referansepunkt for karosseriet, så vi la det enkle Null-Objekt Auto trå til. Dens akse er i sentrum av bilen.
Så tildeler vi Null-Objekt Auto et Dynamics Body-Tag som Rigid Body via menyen Simulering>Dynamics.
I innstillingsdialogen til Dynamics Body-Tags, lar vi også for bilen utløsningen starte umiddelbart.
På sammenstøt-siden må vi ta hensyn til hierarkiet til kjøretøyet vårt, slik at karosseriet i det hele tatt kan bli oppdaget. Vi setter hierarkiet til sammensatte kollisjonsformer og velger best form som den konvekse hylsen eller animert mesh.
De andre kollisjonsegenskapene kan forblir uendret; til syvende og sist vil kjøretøyet i hovedsak stå på de fire hjulene og ikke nødvendigvis velte over.
For å sikre at senteret for kjøretøyet vårt også sikkert bruker aksen vi ønsker, må vi kort bytte til masse-siden.
Her aktiverer vi alternativet eget massesenter - men siden vi ikke ønsker å avvike fra den definerte aksen, forblir X-, Y- og Z-forflytningsverdiene på 0.
Hvis vi skulle starte animasjonen nå, ville kjøretøyet vårt bare kollapse. Dette er ikke overraskende, for til syvende og sist har vi bare definert fem Dynamics Bodys, CINEMA 4D vet (fortsatt) ingenting om de konstruktive sammenhengene.
Det endrer vi nå med konnektorer. Med dem fester vi hjulene til kjøretøyet, muliggjør rotasjon rundt hjulaksen og samtidig realiserer en akseptabel fjæring for å kjøre over terreng.
La oss hente den første konnektoren fra menyen Simulation> Dynamics.
Hvert hjul får sin egen konnektor. Vi begynner med det fremre venstre hjulet og gir den nyopprettede konnektoren et passende navn først. For at konnektoren skal ta over posisjonen til hjulet aktiverer vi Overfør-verktøyet fra menyen Funksjoner og drar hjulet vl inn i objektfeltet for overføring.
Etter å ha trykket på Tildel-knappen, befinner konnektoren seg på samme posisjon som det angitte hjulet.
På samme måte oppretter vi neste konnektor; denne gangen for det fremre høyre hjulet. Vi tildeler også posisjonen til det tilhørende hjulet ved hjelp av Overfør-kommandoen.
Før vi fortsetter med de bakre hjulene, retter vi konnektorene på forhjulene korrekt. For å gjøre dette velger vi konnekteren og dreier den ved hjelp av Heading-vinkelen i Attributtbehandleren med den gule hengseldelen utad. For høyre forhjul blir det en vinkel på 90°, for venstre forhjul en vinkel på -90°.
På samme måte kan du nå utstyre de to bakhjulene med riktige konnektorer og riktig rotasjon ved å følge samme fremgangsmåte. Det nederste bildet viser de fire plasserte konnektorene fra et overs-perspektiv.
Slik at konnektorene også er synlige når de ikke er valgt, aktiverer du enkelt alternativet Alltid synlig på visnings-siden av konnektor-innstilling-dialogboksen. Reduser størrelsen på konnektorene litt, så passer de bedre til kjøretøyet.
Nå bør vi endelig bestemme riktig funksjon for konnektorene; vi ønsker tross alt fjærede aksler og ikke hengsler på bilen. Dette gjøres på objekt-siden, der vi definerer typen fjæring for alle fire konnektorer.
Vi lar fortsatt de fire konnektorene være valgt, for vi kan gjøre de neste innstillingene for alle fire hjulfjæringene. Som det første objektet for bindingen av konnektorene flytter vi Null-objekt Auto til Objekt A i det angitte feltet.
For fjærstyrken velger vi verdien 20, for fjærdempingen, altså hvor raskt fjæren stiller seg tilbake, tar vi en verdi på 20%.
Vi aktiverer nedre og øvre grense i Y-retning, med en forskyvning på 20 cm hver. Selv om det er usannsynlig at kjøretøyet vårt kommer til disse grensene, gjør det scenen oversiktligere.
Nå tar vi oss av de enkelte konnektorer eller hjulfjæringene. Den eneste tilpasningen vi må gjøre for hver konnektor, er det andre objektet for bindingen. For dette drar vi det tilhørende hjulet for den aktuelle konnekten til feltet Objekt B.
Når vi har satt opp alle fire kontakterne eller hjulfjæringene, integrerer vi dem også i objekthierarkiet til kjøretøyet. Vi legger dem i nærheten av hjulene som underobjekt i nullobjektet "Bil".
Det som mangler i lekebilen vår er den fremdriften som gjør at den kan bevege seg på egen hånd. Selv om en firhjulsdrift ville vært ønskelig i terrenget, skal i vårt eksempel bare de to fremre hjulene drives av motorer. To motorer fordi da overføres kraften til de enkelte hjulene mer fysisk riktig.
Vi bygger den første motoren inn i scenen via menyen Simulering>Dynamikk.
Vi gir også motoren et passende navn som tilsvarer den drevne hjul. Her skal motoren drive det venstre fremre hjulet.
Ved hjelp av Overtakelser-verktøyet fra Funksjoner-menyen lar vi motoren overta hjulets posisjon. Etter at du har klikket på Tildele-knappen, sitter motoren på ønsket sted og må bare rettes opp.
Dette utfører vi gjennom Attributtstyreren på Koordinatsiden. Vi vrir motoren med en Heade-vinkel på 90°, slik at den gule løpsretningen samsvarer med rotasjonsretningen til hjulet.
Motoren bindes av objektfeltene i sin innstillingsdialog. I vårt tilfelle drar vi det fremre venstre hjulet inn i feltet Objekt A. For drivverket gir vi motoren en Vinkel-hastighetsmål på 400° og et Dreiemoment på 50.
På samme måte bygger vi nå inn en annen motor for å drive det høyre fremre hjulet. Vi gir den et passende navn og overfører igjen posisjonen til det tilhørende hjulet med Overtakelser-verktøy.
Også den andre motoren vrir vi via Attributtstyreren i riktig løpsretning og overfører denne gang det fremre høyre hjulet som Objekt A.
Den andre motoren får selvfølgelig de samme parameterne for Vinkel-hastighetsmål og Dreiemoment.
Slik er nå også drivverket riktig installert i kjøretøyet. Jeg anbefaler at motorene tas opp som underobjekt i kjøretøyets objekthierarki, slik at redigeringsprogrammet forblir oversiktlig selv under simuleringen.
Før vi endelig kan la bilen vår kjøre, trenger vi en bærekraftig overflate, for så langt ville lekebilen bare falle inn i ingenting.
For vår første test, og som grunnlag for senere, gjør vi bakken til et kollisjonsobjekt. Vi velger Bakke-objektet og tildeler det et tilsvarende Dynamikk-Body-Tag via menyen Simulering>Dynamikk.
I likhet med et rent kollisjonsobjekt er innstillingene for dette relativt oversiktlige. Det vi er interessert i her er i første omgang Friksjonsverdien. Vi øker den til 100%, slik at hjulene raskt får feste og kan akselerere ordentlig.
Når vi nå trykker på Spillknappen, kjører lekebilen allerede av seg selv. Senere vil vi utstyre bilen med en liten styring; nå skal vi imidlertid først ta oss av terrenget.
Utvidelse av scenen med Dynamics- og MoGraph-elementer
Ikke synlig hittil fordi den er deaktivert som et parametrisk objekt via Objekt-Manageren, skal Landskaps-objektet nå brukes som kupert terreng. På samme måte som med Bakke-objektet, må vi først definere terrenget som et kollisjonsobjekt. Vi tildeler et Dynamikk-Body-tag til det overordnede HyperNURBS-objektet via menyen Simulering>Dynamikk som et Kollisjonsobjekt.
Også for dette kollisjonsobjektet er Sammenstøt-siden i innstillingsdialogen spesielt viktig. Her trenger vi kollisjonsformen den statiske Mesh, slik at bilen senere kan identifisere alle humper på overflaten. På samme måte som med bakke-objektet tildeler vi også her den høye Friksjonsverdien på 100%.
La oss nå teste hvordan bilen vår klarer seg i terrenget. For dette formålet flytter vi imidlertid først hele bilgruppen over Z-koordinaten i Attribute-Manager til 3000 cm. Slik står bilen klar i kjøreretningen og kan styre mot terrenget med en viss kraft.
Etter å ha klikket på spill-knappen, kan vi se hvordan lekebilen vår modig baner vei gjennom åslandskapet. For å gjøre scenen litt mer spennende, legger vi til hindringer i tillegg.
Utgangspunktet for hindringene våre er allerede gitt i form av kule-objekter. For at de klonede kulene senere ikke bare står i veien for bilen, men også blir støttet bort, må vi definere dem som Rigid Body. I prinsippet spiller det ingen rolle om kulen selv eller klon-objektet får tildelt Dynamics Body-Tag. Det er mer fleksibelt å bruke den første varianten, siden dere kan gi hver klone-type sine egne dynamiske egenskaper på denne måten.
Så la oss tildele kule-objektet den nødvendige Dynamics Body-Tag som Rigid Body; det finner vi som vanlig i menyen Simulation>Dynamics.
I innstillingsdialogen for Dynamics Body-Tag for kulen setter vi på Dynamics-siden Utbrudd til Ved kollisjon. Dette gjør at kulene ikke begynner uønsket å bevege seg, men reagerer bare når bilen eller en annen kule forårsaker en kollisjon.
På grunn av den enkle objekt-formen stoler vi på automatisk kollisjonsdeteksjon; en økt friksjon på 80% holder kulene i stor grad på bakken, slik at de ruller over terrenget uten å hoppe uønsket.
Nå er kulen utstyrt med dynamiske egenskaper, slik at vi kan fordele dem over terrenget. Til dette bruker vi et klon-objekt fra MoGraph-menyen.
Vi tilordner kule-objektet til klon-objektet som en klon via Objekt-Manager. Siden vi bruker en parametrisk kule, som bruker kulemidten som referansepunkt, ville plasseringen av kuleklonene for øyeblikket bety at alle klones halvpart er under terrenget.
For å hindre dette og flytte kulene tilsvarende oppover med radiusen, finner vi på Transformasjon-siden av innstillingsdialogen muligheten til å sette en forskyvning. Vi flytter kulene i Z-retning med 50 cm, som er kulens radius.
De faktiske innstillingene for dupliseringen og distribusjonen av klonene gjøres på Objekt-siden av innstillingsdialogen.
Først velger vi modusen Objekt; vi vil til slutt bruke landskapsobjektet for å distribuere klonene. Det nevnte landskapsobjektet drar vi deretter inn i feltet Objekt.
Distribusjonen av klonene skal skje på overflaten av objektet, antallet kan dere selv bestemme. For at bilen ikke skal måtte flytte for mange kuler unødvendig, ville en mengde på maksimalt 80 være anbefalt.
På bildet nedenfor ser dere den nåværende tilstanden i gjengivelsen. Kulene er godt distribuert på landskapsobjektet, men peker alle fortsatt i samme retning. Dette lille problemet kan imidlertid enkelt løses med en tilfeldighets-effector.
For å tildele tilfeldighets-effektoren til klon-objektet umiddelbart når det er inkludert i scenen, velger vi klon-objektet i Objekt-Manager, før vi henter tilfeldighets-effektoren fra MoGraph>Effektorer menyen.
I innstillingsdialogen for effektoren finner vi transformasjonsparameterne på Parameter-siden. Siden kulene bare skal roteres over alle akser, trenger vi bare endrede vinkelparametere. En vinkel på 90° er tilstrekkelig for å gi tilstrekkelig rom for ulike rotasjoner.
En test-gjengivelse viser at kulene nå er fullstendig tilfeldig vridd og distribuert over landskapet takket være tilfeldighets-effektoren.
Nå er det på tide å slippe leketøybilen vår løs på hinderløypa. Siden vi fremover må regne med litt flere kollisjoner, lønner det seg å ta en titt på størrelsen eller skaleringen av hindringene, og også se inn i dynamikkinnstillingene under dokumentinnstillinger.
Siden størrelsen på kulene, hjulene og leketøybilen ligger veldig nær den angitte skaleringen eller fungerer godt med kollisjonstoleransen, er det ingen justeringer som trengs her i mitt eksempel.
For at leketøybilen ikke bare forsvinner fra synsfeltet kort tid etter starten, finner du i objektbehandleren under sceneelementene også et målkamera som automatisk retter seg mot bilen. Det er fastsatt i uttrykket for å holde objektet bilen i fokus.
Vi aktiverer det ved å klikke på det hvite søker-symbolet i objektbehandleren.
Nå kan du trykke på avspillingsknappen og se bilen når den kjører gjennom det hindrede området.
Innføring av en enkel styring for bilen med XPresso
Det ville vært fint om bilen ikke bare kjørte rett gjennom området, men om vi som brukere også hadde en styringsmulighet. For vårt eksempel vil en enkel styringsmulighet til venstre eller høyre via en glidebryter være tilstrekkelig. Siden vi egentlig må styre to objekter (hjulene eller kontaktpunktene), men bare vil ha en praktisk bryter, integrerer vi en egen styreparameter i form av brukerdata.
Velg bilt-gruppen og legg til egne brukerdata via menyen Bruker i attributterbehandleren.
Vinduet for administrering av brukerdata åpnes. Her finner du alle de individuelle brukerdataene som tilhører objektbæreren. Vi kaller den nyopprettede oppføringen passende styring, og i tillegg spesifiserer vi gjennom feltet egenskaper hvordan parameteren skal være.
Vi velger en flytskjerm i enheten grader som grensesnitt, og for å ha oversiktlige trinn velger vi et steg på 1°.
For å forhindre at hjulene blir vridd for mye og overlapper kjøretøyet, begrenser vi den minimale vinkelen til -30° og den maksimale vinkelen til 30°. Den forhåndsinnstilte verdien på 0° vil sørge for at hjulene er rette i begynnelsen.
Etter at vi har lukket dialogen med OK og dermed opprettet brukerdataene, finner vi parameteren styring på brukerdatasiden til bilen vår som ønsket, som en glidebryter.
Nå har vi altså skapt en mulighet til å styre en egen parameter. Vi må nå bare sende den til rett sted i kjøretøyoppsettet vårt.
En ideell oppgave for XPresso. For dette trenger vi først et XPresso-tag som vi enkelt kan tilordne via kontekstmenyen med høyreklikk i undermenyen CINEMA 4D Tags.
Vår autogruppe egner seg selvfølgelig godt som bærer for dette uttrykket.
Ved å dobbeltklikke på XPresso-taggen åpner vi XPresso-redigereren. Som den første oppføringen eller noden drar vi nullobjektet Auto fra objektbehandleren til XPresso-redigeringsvinduet.
For å kunne tilby vår egen opprettede parameter som en port for tilkobling, klikker vi på den røde knappen på de utgående portene og velger porten styring fra undermenyen brukerdata.
Med parameteren vår styring vil vi påvirke styringsvinklene for hjulopphenning-kontaktorene. For å kunne få tilgang til disse parameterne i XPresso-redigereren, finner vi de to kontaktorene for de venstre og høyre fremre hjulene i objektbehandleren og drar begge objektene inn i XPresso-redigereren.
Da vi ønsker å videreformidle en verdi til de to kontaktorene, trenger vi å ha parameterne styringsvinkler på inngangsporten. For å gjøre dette klikker vi på den blå knappen på inngangsportene til kontaktnodene og velger porten styringsvinkel fra undermenyen objektegenskaper.
Nå må vi bare koble de to styrevinkelportene til bilens styreport. Dette gjør vi ved å dra enkelt med den ene Porten til den andre.
Vår lille innføring i XPresso er dessverre allerede fullført, så vi kan lukke XPresso-Editoren. For å unngå å stadig måtte lete etter Null-objektet og dets Brukerdataoppføring for å styre bilen, integrerer vi bare skyvekontrollen direkte inn i Head-Up Display (HUD) i redigeringsvinduet.
Dette gjør vi ved å høyreklikke på parameteroppføringen Styring i Attributtbehandleren og velge kommandoen Legg til i HUD fra hurtigmenyen.
For å flytte HUD-oppføringen i editoren, klikker du bare med tasten Ctrl holdt nede på HUD-elementet og flytter det til ønsket sted med musen.
For at HUD-elementet ikke bare skal være synlig når kjøretøyet vårt er valgt, høyreklikker vi for å vise den tilhørende hurtigmenyen og velger i menyen Vis alternativet Alltid.
Nå kan du trykke på avspillingsknappen og sende bilen rundt i terrenget etter ønske ved hjelp av skyvekontrollen. Pass på å nullstille Styringen ved begynnelsen av hvert kjøretøy for å unngå at bilen overstyres.
Hvis du senere ønsker å gjøre den spennende kjøreturen til en animasjon, opprett bare viktige kontrollpunkter Nøkkelframpekter for den aktuelle styringsverdien. Kos deg med å kjøre rundt i terrenget!