For at få et indtryk af resultatet af denne vejledning, er det bedst at se den tilhørende video.
I arbejdsfilen PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d er de vigtigste elementer i scenen allerede forberedt, så vi straks kan gå i gang med arbejdet med Dynamics. Da vi vil begynde med udvidelsen af den lille legetøjsbil, er alle forstyrrende elementer i scenen midlertidigt skjult via bryderne på Objekt-Managerens lamper.
Sceneopbygning
Lad os kort se på opsætningen af scenen. Udover bilen er der også et kugleobjekt som senere hindring, et HyperNURBS-objekt med integreret landskabsobjekt samt bund, himmel og lysobjekter til miljøet og belysningen i scenen.
For at gøre opbygningen af køretøjet så enkel og gennemskuelig som muligt består bilen kun af karosseriet og de fire hjul. Som hjul fungerer i alt fire rørobjekter, der er rettet mod positiv X-retning og placeret på det dertil beregnede sted på bilen.
For at gøre det lettere senere, når vi skal tilføje forbindelser og motorer, er der knyttet en forkortelse til hver hjuls position (vl = venstre foran).
Karosseriet genererer et Extrude-NURBS-objekt fra en splin. Selvfølgelig kan I også bruge en anden bil eller et andet karosseri; det vigtige er senere den korrekte integration gennem forbindelse eller Dynamics Body-Tag.
I indstillingsdialogen for Extrude-NURBS-objektet er bredden på vores køretøj angivet. Den fremkommer ved forskydning i X-retning ved ekstrusionen. For et naturligt, realistisk udseende sørger udrundingerne på karosseriets kanter.
Skjult i HyperNURBS-objektet findes et landskabsobjekt, som giver os et brugbart terræn til bilens offroad-kørsel. Takket være HyperNURBS-underopdeling kan vi spare ved segmenteringen af landskabet uden at få for kantede terrænner.
For at tilføje lidt mere action under kørslen gennem terrænet integrerer vi nogle forhindringer. I mit tilfælde enkle kugleobjekter med 50 cm-radius, som senere bliver tilfældigt fordelt på terrænet eller landskabsobjektet ved hjælp af MoGraph.
Køretøjsopbygning med forbindelser og motorer
Lad os først se på legetøjsbilen. Hvilke funktioner skal den opfylde for vores formål?
Først og fremmest skal hjulene kunne rotere fastgjort til køretøjet; desuden har den brug for et drev til hjulene, så den overhovedet kan bevæge sig selvstændigt. Og den skal selvfølgelig kunne registrere kollisioner - det begynder allerede med at hjulene skal stå på jorden.
For at kunne tilbyde denne funktionalitet via de nye Dynamics fra CINEMA 4D, har de involverede elementer brug for Dynamics Body-Tags, så de overhovedet kan accepteres af Dynamics-motoren.
Vi begynder med de fire hjul, som vi alle vælger i Objekt-Manageren og definerer dem som Rigid Body via menuen Simulation>Dynamics.
Da alle fire hjul selvfølgelig får de samme dynamiske egenskaber, lader vi de fire Dynamics Body-Tags være valgt og indstiller de ønskede parametre.
På Dynamics-siden kan vi overtage standardindstillingerne. Den øjeblikkelige udløsning er vigtig, så hjulene straks har kontakt med jorden.
På kollisionsiden hjælper vi Dynamics' kollisionssporing ved at indstille formen som cylinder X-aksen. Det svarer jo til hjulets form og forbedrer ydeevnen ved Dynamics-beregningen. For at køretøjet kun hopper lidt ved et sammenstød med jorden, indstiller vi en let elasticitet på 10%. Til gengæld øger vi friktionen til 120%, så hjulene kan opbygge ordentligt greb på jorden.
Lad os nu gå videre til køretøjets næste element, karosseriet. Desværre egner Extrude-NURBS-objektet sig ikke som referencepunkt for karosseriet på grund af sin uheldige akshældning, så vi lader blot det overordnede Null-objekt Auto træde til. Dets akse er i bilens centrum.
Så via menuen Simulation>Dynamics tildeler vi Rigid Body-taget til Null-objekt Auto.
I dialogen for Dynamics Body Tags tillader vi også at starte udløsningen for bilen øjeblikkeligt.
På kollisionssiden skal vi tage højde for hierarkiet af vores køretøj, så karosseriet overhovedet kan genkendes. Vi sætter hierarkiet til Sammensat kollisionsform og vælger bedst muligt formen som den kuplede skal eller det bevægede mesh.
De øvrige kollisionsegenskaber kan forblive uændrede; trods alt vil køretøjet hovedsageligt stå på fire hjul og ikke nødvendigvis vælte rundt.
For at sikre, at tyngdepunktet for vores køretøj også korrekt bruger den ønskede akse, skal vi kort skifte til masse-siden.
Her aktiverer vi muligheden for Egen massetungepunkt - da vi dog ikke ønsker at afvige fra den definerede akse, forbliver X-, Y- og Z-offsetværdierne på 0.
Hvis vi startede animationen nu, ville vores køretøj simpelthen falde sammen. Det er ikke overraskende, da vi kun har defineret fem Dynamics Bodys, CINEMA 4D (endnu) ikke kender de konstruktive forbindelser.
Dette ændrer vi nu med forbindelser. Med dem fastgør vi dels hjulene til køretøjet, dels muliggør vi rotation omkring hjulaksen, og dels realiserer vi samtidig en acceptabel fjedring til vejen gennem terrænet.
Lad os hente den første forbinder fra menuen Simulation>Dynamics.
Hvert hjul får sin egen forbindelse. Vi starter med det forreste venstre hjul og omdøber den nyoprettede forbinder passende. For at forbindingen skal overtage hjulets position, aktiverer vi Overtagelsesværktøjet fra menuen Funktioner og trækker hjulet vl til objektfeltet til overtagelse.
Efter at have klikket på Tildel-knappen er forbindelsen på samme position som det angivne hjul.
På samme måde opretter vi den næste forbindelse; denne gang til det forreste højre hjul. Også denne forbindelse tildeler vi hjulets position via Overtag-kommandoen.
Før vi fortsætter med de bageste hjul, justerer vi forbindelserne på forhjulene korrekt. Vi vælger forbindelsen og drejer den ved hjælp af Heading-vinklen i Attributmanageren med det gule hængsel udad. For det højre forhjul bliver vinklen 90°, for det venstre forhjul er vinklen -90°.
På samme måde kan I nu også udstyre de to bageste hjul med forbindelser på den rigtige position og med korrekt drejning. Det nederste billede viser de fire placerede forbindelser set ovenfra.
For at forbindelserne også er synlige, når de ikke er valgt, aktiverer I simpelthen muligheden Altid synlig på visningssiden af forbindelsesindstillingsdialogen. Reducér størrelsen på forbindelserne lidt, så de passer bedre til køretøjet.
Nu skal vi endelig bestemme den korrekte funktion for forbindelserne; vi vil trods alt have fjedrede aksler og ikke hængsler på bilen. Dette gøres på objektsiden, hvor vi sætter typen Hjulfjedring for alle fire forbindelser.
Vi lader stadig de fire forbindelser være valgt, da vi også kan foretage de næste indstillinger for alle fire hjulfjedre. Som det første objekt for at binde forbindelserne trækker vi Nul-objektet Auto som Objekt A til det relevante felt.
For fjederens hårdhed vælger vi værdien 20, for fjederdæmpningen, altså hvor hurtigt fjederen vender tilbage, vælger vi en værdi på 20%.
Vi aktiverer nederste og øverste begrænsning i Y-retning, med en forskydning på 20 cm hver. Selvom det er usandsynligt, at vores køretøj når disse grænser, gør det scenen mere overskuelig.
Nu tager vi os af de enkelte forbindelser eller hjulfjedre. Den eneste tilpasning, vi stadig skal foretage for hver forbindelse, er at trække det tilhørende hjul ind i feltet Objekt B.
Når vi har konfigureret alle fire stik og affjedringer, integrerer vi dem også i objekthierarkiet i køretøjet. Vi placerer dem tæt på hjulene som en underobjekt i det nulfelt "Bil".
Det eneste vores legetøjsbil mangler er drivkraften, så den selv kan bevæge sig. Selvom firhjulstræk ville være ideelt på terrænet, er det kun de to forreste hjul, der skal drives i vores eksempel. To motorer er derfor nødvendige, da kraftoverføringen til de enkelte hjul forløber mere fysisk korrekt.
Vi indsætter den første motor i scenen via menuen Simulation>Dynamics.
På samme måde som stikene, omdøber vi også motoren passende til det drevne hjul. Her skal motoren drive det forreste venstre hjul.
Med værktøjet Overfør fra menuen Funktioner lader vi motoren overtage positionen af hjulet. Efter at have klikket på Tildel-knappen, sidder motoren på det ønskede sted og skal blot rettes.
Dette gør vi via Attributadministrator på Koordinatsiden. Vi drejer motoren med en Vinkelretning på 90°, så den gule bevægelsesretning passer med hjulets rotationsretning.
Motoren bindes af Objektfelterne i dens indstillingsdialog. I vores tilfælde trækker vi det forreste venstre hjul ind i feltet Objekt A. For at drive motoren giver vi den en Vinkelhastighed på 400° og et Moment på 50.
På samme måde installerer vi nu en anden motor til at drive det forreste højre hjul. Vi omdøber den passende og overfører igen hjulets position til motoren med Overfør-værktøjet.
Vi drejer også den anden motor via Attributadministrator i den rigtige bevægelsesretning og overfører denne gang det forreste højre hjul som Objekt A.
Den anden motor får naturligvis også de samme parametre for Vinkelhastighed og Moment.
Dermed er drivkraften nu korrekt integreret i køretøjet. Jeg anbefaler at inkludere motorerne som underobjekter i køretøjets objekthierarki, så Editoren forbliver overskuelig under Simulationen.
Før vi kan lade vores bil køre, har vi brug for et robust underlag, da legetøjsbilen hidtil bare ville falde ud i intetheden.
Til vores første test og som underlag til senere gør vi gulvet til et Kollisionsobjekt. Dertil vælger vi Gulvobjektet og tildeler det over menuen Simulation>Dynamics det tilsvarende Dynamics Body-Tag.
Dialogboksen for indstillinger er ret overskuelig for et simpelt Kollisionsobjekt. Vi er især interesseret i friktionsværdien. Vi indstiller den til 100%, så hjulene hurtigt kan få fat og accelerere ordentligt.
Når vi trykker på Afspil-knappen, kører legetøjsbilen allerede af sig selv. Senere vil vi udstyre bilen med en lille styring; nu fokuserer vi først på terrænet.
Udvidelse af scenen med Dynamics- og MoGraph-elementer
Indtil videre usynligt, da det er deaktiveret som et parametrisk objekt via Objektmanageren, skal Landskabsobjektet nu anvendes som kuperet terræn. Ligesom med Gulvobjektet skal vi først definere landskabet som et Kollisionsobjekt. Vi tildeler det overordnede HyperNURBS-objekt en Kollisionsobjekt Dynamics Body-Tag gennem menuen Simulation>Dynamics.
Også for dette Kollisionsobjekt er Kollisionsformen på indstillingssiden af dialogboksen af særlig betydning. Her har vi brug for statiske mesh som Kollisionsform, så bilen senere også kan genkende enhver forhøjning på overfladen. Ligesom med gulvobjektet giver vi også her en høj friktionsværdi på 100%.
Lad os straks teste, hvordan vores bil klarer sig i terrænet. Først flytter vi dog hele autogruppen over z-koordinaten i attributmanageren til 3000 cm. På den måde står bilen klar i kørselsretningen og kan svinge mod terrænet med fart.
Efter at have klikket på afspilningsknappen kan vi se vores legetøjsbil kæmpe sig gennem bakkelandskabet. For at gøre scenen lidt mere interessant, tilføjer vi yderligere forhindringer.
Udgangspunktet for vores forhindringer er allerede formet som kugleobjektet. For at sikre, at de klonede kugler ikke kun står i vejen for bilen, men også skubbes væk, skal vi definere dem som rigid body. I princippet er det ligegyldigt, om kuglen selv eller klonobjektet tildeles dynamics body-tagget. I første tilfælde får I dog mere fleksibilitet, da I kan give hver klonetype sine egne dynamiske egenskaber.
Så lad os tildele det nødvendige dynamics body-tag som rigid body til kugleobjektet; I finder det som sædvanligt under menuen simulation>dynamics.
I indstillingsdialogen for dynamics body-tagget til kuglen sætter vi aktivering under dynamics-siden til ved sammenstød. Dermed sætter kuglerne ikke sig selv i bevægelse utilsigtet, men reagerer kun, når bilen eller en anden kugle udløser et sammenstød.
På grund af de enkle objektformer stoler vi på automatisk sammenstødsregistrering; en forøget friktion på 80% holder kuglerne primært på jorden, så de ruller jævnt over terrænet uden uønsket hoppen.
Nu har kuglen fået dynamiske egenskaber, så vi kan fordele dem over terrænet. Vi bruger et klonobjekt fra menuen MoGraph.
Vi placerer kugleobjektet under klonobjektet som en klon via objektmanageren. Da vi bruger en parametrisk kugle, der bruger kuglens midte som referencepunkt, ville placeringen af kugleklonerne i øjeblikket medføre, at alle kloner stikker halvvejs ned i terrænet.
For at forhindre dette og flytte kuglerne opad i forhold til radiusen, finder vi muligheden for at justere en forskydning på transformations-siden af indstillingsdialogen. Vi flytter kuglerne i z-retning med 50 cm, svarende til kuglens radius.
De egentlige indstillinger for duplikeringen og distribueringen af klonerne foretages på objektsiden af indstillingsdialogen.
Først vælger vi tilstanden objekt; da vi vil bruge landskabsobjektet til at fordele klonerne. Vi trækker det nævnte landskabsobjekt ind i feltet for objekt.
Distributionen af klonerne skal ske på overfladen af objektet, og I kan selvfølgelig selv bestemme antallet. For at undgå, at bilen skal rydde en masse kugler af vejen, ville en mængde på højst 80 være anbefalelsesværdig.
På billedet nedenfor kan I se den nuværende status i renderingen. Kuglerne er godt fordelt på landskabsobjektet, men sidder stadig alle i samme retning. Dette lille problem kan dog nemt løses med en tilfældighedseffektor.
For at tildele tilfældighedseffektoren til klonobjektet ved tilføjelsen i scenen, vælger vi klonobjektet i objektmanageren, før vi henter tilfældighedseffektoren fra menuen MoGraph>effektorer.
I indstillingsdialogen for effektoren finder vi transformationsparametrene på parameter-siden. Da kuglerne kun skal drejes om alle akser, har vi kun brug for ændrede vinkelparametre. En vinkel på 90° er tilstrækkelig til at give tilstrækkelig plads til forskellige rotationer.
En testrendering viser, at kuglerne nu er helt tilfældigt fordelt og drejet på landskabet takket være tilfældighedseffektoren.
Det er nu på høje tid at slippe vores legetøjsbil løs på forhindringerne. Da vi fremover kan forvente lidt flere kollisioner, kan det være værd at kaste et blik på størrelsen eller skaleringen af forhindringerne og også kigge på Dynamics-forudindstillingerne under Dokumentindstillingerne.
Da størrelsen af kuglerne, hjulene og også legetøjsbilen ligger meget tæt på den angivne skalering og fungerer godt med kollisionstolerance, er der ikke behov for justeringer i mit eksempel her.
For at sikre, at legetøjsbilen ikke bare forsvinder ud af syne kort efter starten, vil du finde en målkamera blandt sceneelementerne i Objekt-Manageren, som automatisk retter sig mod bilen. I dens Udtryk for retning er det fastlagt, at den ikke må miste synet af objektet Auto.
Vi aktiverer det ved at klikke på det hvide søger-symbol i Objekt-Manageren.
Nu kan du trykke på afspilningsknappen og følge bilen på dens færd gennem terrænet fyldt med forhindringer.
Implementering af en simpel styring til bilen med XPresso
Det ville være smukkere, hvis bilen ikke bare kørte ligeud gennem terrænet, men også hvis vi som brugere havde mulighed for at styre den.
Til vores eksempel er en simpel styremulighed til venstre eller højre ved hjælp af en skydekontrol tilstrækkelig. Da vi egentlig burde styre to objekter (hjulene eller konnektorerne), men kun ønsker en behagelig kontrol, integrerer vi bare vores egen styreparameter i form af brugerdata.
Vi markerer Autogruppen og tilføjer vores egne brugerdata via menuen Bruger i Attribut-Manageren.
Vinduet Administrer brugerdata åbnes. Her finder du alle individuelle brugerdata, der hører til bærerobjektet. Vi navngiver den nyoprettede post som Styring og angiver også, hvordan parameteren skal være i Egenskabsfeltet.
Som interface vælger vi en flydekomma-slider i enheden grader. For at have overskuelige trin vælger vi et trin på 1°.
For at forhindre, at hjulene drejes for meget og krydser over med køretøjet, begrænser vi minimumsudsvinget til -30° og maksimumudsvinget til 30°. Den forvalgte værdi på 0° sikrer, at hjulene står lige ved starten.
Når dialogen er lukket med OK og brugerdata dermed er oprettet, finder vi vores oprettede parameter Styring på Brugerdata-siden for vores bil som ønsket som en skydekontrol.
Så nu har vi oprettet en mulighed for at styre en egen parameter. Nu skal vi bare videregive den til det rette sted i vores køretøjsopbygning.
En paradegren for XPresso. Til dette har vi brug for et XPresso-tag, som vi nemmest tildeler via genvejsmenuen med højreklik på undermenuen CINEMA 4D Tags.
Som bærer for dette udtryk egner vores Autogruppe sig naturligvis fremragende.
Ved at dobbeltklikke på XPresso-tagget åbner vi XPresso-editoren. Som den første post eller nodalpunkt (Node) trækker vi Null-objektet Auto fra Objekt-Manageren ind i XPresso-editoren.
For at gøre vores selvoprettede parameter tilgængelig som port til forbindelse trækker vi på den røde knap til Udgangshavnene og vælger Porten Styring fra undermenuen Brugerdata.
Med vores parameter Styring ønsker vi at påvirke styringsvinklerne for radfjeder-konnektorerne. For at kunne få adgang til disse parametre i XPresso-editoren, finder vi de to konnektorer til de venstre og højre forreste hjul i Objekt-Manageren og trækker begge objekter også ind i XPresso-editoren.
Da vi ønsker at overføre en værdi til de to konnektorer, har vi brug for parametrene styringsvinkel ved indgangshavnen. Dertil klikker vi på den blå knap til Indgangshavnene på konnektor-noderne og vælger i undermenuen Objektegenskaber hver port styringsvinkel.
Nu skal vi blot forbinde de to styrevinkelporte med bilens styringsport. Dette gør vi ved blot at trække med musen fra den ene port til den anden.
Vores lille udflugt i XPresso er desværre allerede overstået, så vi kan lukke XPresso-editoren. For at undgå at skulle lede efter nullobjekt og dets brugerdata-post konstant for at styre bilen, integrerer vi simpelthen skyderkontrollen i editorens head-up-display (HUD).
For at gøre dette højreklikker vi på parameterindgangen Styring i Attributmanageren og vælger kommandoen Tilføj til HUD fra genvejsmenuen.
For at flytte HUD-posten i editoren klikker I simpelthen på HUD-elementet og holder Ctrl-tasten nede og positionerer det med musen på et passende sted.
For at sikre at HUD-elementet ikke kun er synligt, når vores køretøj er valgt, højrekliker vi og vælger indstillingerne Vis og derefter Altid.
Nu kan I klikke på afspilknappen og sende bilen rundt i terrænet ved hjælp af skyderen. Sørg for at nulstille styringen ved starten af hver tur, så bilen ikke overdrejer.
Hvis I senere vil konvertere den eventyrlige tur til en animation, kan I blot tilføje keyframes til de vigtige styringspunkter for den respektive styringsværdi. God fornøjelse med kørslen rundt i terrænet!