For at vi kan koncentrere os fuldt ud om at arbejde med Dynamics og MoGraph, finder du alle de andre komponenter i scenen i arbejdsfilen "PSD_C4D_R12_Dyn_RigidB_Konnektoren_Start.c4d".
Et roterende hjul med tre blade og et kugleobjekt burde være tilstrækkeligt; resten klares med MoGraph-kloner eller en partikelemitter.
Opbygning af scenen med MoGraph-kloner
De tre vigtigste objekter i vores scene er kuglen, det roterende hjul og det skråplan, som kuglerne senere skal rulle nedad på. Med undtagelse af vingerne på det roterende hjul har alle objekter allerede et materiale. Hvis du vil, kan du tilpasse scenen med andre materialer, så den passer til dine egne ideer.
Til kuglerne bruger vi et simpelt, parametrisk kugleobjekt, som vil blive klonet senere. Radius på 7 cm matcher vores roterende hjul og planet, hvis nederste kant senere skal fange kuglerne så godt som muligt.
Det roterende hjul er skabt ved at ekstrudere et flower spline-objekt med en Extrude NURBS-generator. Antallet af blade blev reduceret tilsvarende for de tre vinger på det roterende hjul. Den indre radius er lige stor nok til at rumme den indsatte aksel (et simpelt cylinderobjekt ).
Hvis du vil, kan du også eksperimentere med fire eller endda fem vinger.
Extrude NURBS-generatoren sørger for den tredimensionelle formning af det angivne flower spline-objekt. Dybden på det roterende hjul defineres via forskydningsparameteren.
Det tidligere nævnte cylinderobjekt er overordnet det roterende hjul. Det vil senere fungere som konnektorens rotationsakse for Dynamics.
Endelig kommer vi til planet, som faktisk også er et Extrude NURBS-objekt, der omdanner en foruddefineret splinesti (i dette tilfælde en L-spline ) til et tredimensionelt objekt ved hjælp af ekstrudering.
Så meget for strukturen i startscenen. Vi starter med de snurrende hjul og bruger MoGraph til at få nok kopier eller kloner til vores plan.
Så vi henter et klonobjekt fra MoGraph-menuen.
I klonobjektets indstillingsdialog indstiller vi først tilstanden til gitter.
I de tilknyttede parametre kan vi nu angive antallet af kloner og størrelsen på det resulterende gitter. Da gitteret skal bestå af ét lag i x-retningen, lader vi antallet af kopier være 1; i y-retningen opretter vi 6 eller 5 kloner i de viste dimensioner.
For at klonobjektet også ved, hvilke objekter det skal duplikere, placerer vi hele hierarkiet af det roterende hjul i objekthåndteringen som et underobjekt i klonobjektet. Som ønsket producerer klonobjektet de roterende hjul i det gitterformede arrangement.
Vi placerer nu de klonede roterende hjul på flyet. Da planets rotationsvinkel er 40°, anvender vi også denne værdi for klonobjektet, her som en hældningsvinkel på - 40°.
For at placere klongitteret med de roterende hjul nøjagtigt på flyet er det bedst at skifte til sidevisningen, aktivere den globale aksejustering og flytte de roterende hjul langs deres akse tæt på flyet. Da de roterende hjuls akse stikker lidt bagud, kan den nemt dykke ned i flyet.
De roterende hjul vil derefter være installeret og kan flyttes tilbage til gruppen "slide" som et underobjekt. Det, der stadig er ret irriterende i øjeblikket, er den alt for perfekte, helt identiske justering af de roterende hjul. For at gøre en ende på denne monotoni vil vi integrere en randomiser.
Vi kan finde den i menuen MoGraph>Effectors og bringe den ind i vores scene. Hvis du vælger klonobjektet i Object Manager, før du kalder den tilfældige effektor op, bliver effektoren automatisk tildelt dette klonobjekt.
I dialogboksen med indstillinger for den tilfældige effektor skaber vi først de tilfældige rotationer af hjulene. For at gøre dette åbner vi feltet Transform i området Parameters og aktiverer indstillingen Angle for transformationen. Vi indtaster en værdi her for at rotere hjulene med deres hældningsvinkel. En vinkel på 60° giver hjulene nok manøvrerum, når de roterer.
Da vi også vil bruge den tilfældige effektor til farven på hjulene i deres materiale, åbner vi også farvefeltet og aktiverer farvetilstanden. I effektorparametrene på højere niveau for den tilfældige effektor kan vi eksperimentere med de tilfældige værdier ved hjælp af startværdien. Mere om dette senere.
I redigeringsvisningen kan de ændringer, der forårsages af effektoren, normalt observeres med det samme. Forudsat at den tilfældige effektor blev tildelt klonobjektet, da det blev oprettet. Hvis ikke, kan vi hurtigt gøre det i klonobjektets indstillingsdialog via Effectors-området. Fra Object Manager trækker vi alle de effektorer ind, som skal eller kan påvirke klonobjektet.
For at peppe scenen lidt op kan vi give drejeknapperne forskellige farver. Den tilfældige effekt vil spare os for en masse arbejde. Først opretter vi dog et nyt materiale, enten via menukommandoen med samme navn i materialemanageren eller ved at dobbeltklikke på en ledig plads i manageren.
For at den tilfældige effekt kan påvirke farven i farvekanalen, opretter vi farveshaderen fra undermenuen MoGraph i teksturens pileknapmenu.
Når vi har klikket på knappen colour shader, befinder vi os i den ret klare indstillingsdialog for colour shader. Her sørger vi for, at farveindstillingen er valgt for kanalen.
Nu skal vi bare tildele materialet til hjulene til vinduesrammens ExtrudeNURBS-objekt. Det gør vi ved at trække det fra Material Manager til det roterende hjuls rammeobjekt i Object Manager. Hvis du stadig ikke bryder dig om farvekombinationen til de roterende hjul, kan du ændre startværdiparameteren i den tilfældige effektor, indtil du kan lide de tilfældigt valgte farver.
Opsætning af dynamiksystemet med kollisionsobjekter og stive kroppe
Nu er scenen forberedt i en sådan grad, at vi kan integrere de elementer, der er involveret i simuleringen, i et dynamiksystem. Lad os starte med de rene kollisionsobjekter, dvs. objekter som flyet og gulvet, som ikke er dynamiske, men kun er involveret i systemet til kollisionsdetektering.
Begge defineres som kollisionsobjekter via menuen Simulation>Dynamics ved hjælp af kommandoen Create collision object.
Kommandoen tildelte de valgte objekter et Dynamics Body Tag, i hvis indstillingsdialog den dynamiske funktionalitet automatisk blev deaktiveret for os, og kollisionsdetektering blev aktiveret. I kollisionsområdet indstiller vi elasticiteten og friktionen til 30 % hver, så de kolliderende kugler ikke hopper utilsigtet opad, men ruller langsomt ud.
Situationen er lidt anderledes for det andet kollisionsobjekt, rutschebanen. Her har vi brug for det statiske net som kollisionsform i kollisionsområdet. På grund af glideplanets L-kontur garanterer dette, at objektets form også bruges korrekt til beregning af kollisionen. Friktionsparameteren kan være lidt højere for planet, så kuglerne ikke ruller for hurtigt gennem den drejende hjulbane senere.
I modsætning til de rene kollisionsobjekter deltager de roterende hjul aktivt i de dynamiske begivenheder. Da de også er stive legemer, definerer vi dem som stive leg emer. Det gør vi ved at vælge vingeobjektet i klonstrukturhierarkiet og definere det som et stift legeme ved hjælp af kommandoen Create Rigid Body i menuen Simulation>Dynamics.
De roterende hjuls opførsel i tilfælde af en kollision er også anderledes. For at forhindre uønsket uro i klongitteret, før en reel kollision finder sted, indstiller vi udløsningen af den dynamiske egenskab til Ved kollision i indstillingsdialogen for Dynamics Body-tagget.
Kollisionssiden handler om den detaljerede indstilling af kollisionsegenskaberne. Her sikrer indstillingen Automatic collision shape, at den bedst mulige kollisionskonvolut bruges til de roterende hjuls særlige form. Da vi ikke ønsker, at de ramte kugler skal hoppe langt væk efter kollisionen, reducerer vi elasticiteten til 20 %. Den høje friktionsværdi på 80 % sikrer også, at kuglerne mister energi, hver gang de kommer i kontakt med de roterende hjul.
Det er altid tilrådeligt at bruge en separat masse, når kolliderende objekter med forskellige masser skal koordineres. Da kuglerne i spinnehjulene ikke adskiller sig i størrelse fra spinnehjulene, men adskiller sig meget i deres masse, angiver vi en separat masse på 8 her. Rotationsmassen på 80% sikrer, at hjulene er noget lettere at dreje.
For at få lidt mere indflydelse på den fremherskende energi og for at sikre, at simuleringen kommer til at hvile inden for en rimelig tidsperiode, dæmper vi desuden de kræfter, der virker på de roterende hjul.
På siden med kræfter i indstillingsdialogen tildeles de roterende hjul en lineær dæmpning på 60 % og en dæmpning af rotationen på 80 %. På trods af kuglernes stærke påvirkning vil dette stabilisere de drejende hjul relativt hurtigt.
Funktionel udvidelse af de roterende hjul med connectorer
Hvis du starter simuleringen ved at klikke på play-knappen, vil hjulene falde og glide ned ad planet uden en lyd ved den første kollision. Selv om de visuelt sidder fast i flyet med deres akse, spiller akserne ingen rolle i vores simulering. Vi bruger de såkaldte connectors til at skabe en forbindelse mellem de roterende vinger på de drejende hjul og aksen. De findes i menuen Simulation>Dynamics.
I princippet er konnektoren ligeglad med, hvor den er placeret i elementerne eller hierarkierne i Object Manager. Men for at bevare logikken i vores scene kombinerer vi den funktionelt korrekt med aksens cylinderobjekt. For at få et bedre overblik, når vi integrerer connectoren, deaktiverer vi midlertidigt produktionen af kloner via Object Manager.
Hvis konnektoren skal spille rollen som en roterende akse, skal den først have den korrekte position og orientering, i vores tilfælde den cylindriske akses koordinater og vinkel. Denne proces forenkles med kommandoen Apply fra menuen Functions, som vi kalder frem, når konnektoren er valgt.
I indstillingsdialogen for værktøjet Apply angiver vi først aksens cylinderobjekt som datadonor. Det gør vi ved at trække det fra Object Manager til det tilsvarende Transfer from-felt. Da vi skal finjustere selve forbindelsen, kan vi anvende alle parametrene på dette tidspunkt ved at klikke på knappen Assign.
Vi vælger konnektoren via Object Manager og justerer dens tilpasning til drejehjulet. Som det fremgår af illustrationen nedenfor, skal kursvinklen drejes med - 90° og hældningsvinklen (i henhold til flyets hældning) med 40°. På displaysiden kan vi reducere størrelsen på konnektoren, så den passer bedre til det roterende hjul.
Vi definerer konnektorens faktiske funktionalitet på objektsiden i indstillingsdialogen. Hængseltypen holder de tilsluttede objekter til aksen og tillader kun rotation omkring den angivne referenceakse. Da vores eksempel med pumpehjulet og aksen er den samme akse, kunne vi være mere økonomiske, men det hjælper stadig at arbejde så præcist som muligt under orienteringen, især med mere komplekse scener, så alt stadig kan forstås senere.
Som objekt A for forbindelsen trækker vi akseobjektet fra Object Manager ind i det angivne felt. Da bevægelsen skal køre omkring X-aksen, vælger vi denne akse som referenceakse. Objekt B er løbehjulsobjektet med den samme referenceakse. Der er ikke mere at overveje for konnektoren på dette tidspunkt.
Når vi har taget os af konnektorens egentlige funktion, opretter vi den som et underobjekt til drejehjulets akse. Da aksen er funktionelt forbundet med løbehjulet via konnektoren, er konnektoren i gode hænder her.
Generering af dynamiske kugler med partikelsystemet
Spillemaskinen er fuldt udstyret og funktionel, nu skal vi bare bruge bolde med dynamiske egenskaber, som vi kan slippe løs på den. Vi har allerede en bold i scenen. Men for at få legeredskabet til at fungere ordentligt skal vi frigive flere kugler fra en partikelemitter. Men først skal vi give kuglen de ønskede dynamiske egenskaber, så den overhovedet kan deltage i simuleringen.
Til det formål skal kuglen have et Dynamics Body Tag med aktiverede dynamiske egenskaber. Så vi tildeler dette passende tag til kugleobjektet ved hjælp af kommandoen Create rigid body fra menuen Simulation>Dynamics.
I indstillingsdialogen for Dynamics Body Tag finder vi de grundlæggende egenskaber på siden Dynamics. Her sætter vi opløsningen til Immediate, så kuglerne kan handle, så snart de dukker op i scenen.
Lad os se på kollisionsegenskaberne på kollisionssiden. En kugle er helt uproblematisk i kollisionsberegningen; den automatiske detektion fungerer her. Kuglens elasticitet og friktion forbliver inden for rimelige grænser. Hvis kugler kolliderer med hinanden senere, vil de også hoppe mindre langt.
Indstillingerne på massesiden er interessante i forbindelse med indstillingerne af drejehjulet. Der havde vi vores egen masse på 8. For at forhindre, at kuglerne rammer de roterende hjul for hårdt og tungt på grund af en for høj masse og forstyrrer systemet, satte vi kuglens masse til en værdi på omkring 5.
For at sikre, at kuglerne også kommer til hvile relativt hurtigt efter rotationen (analogt med de roterende hjul), tildeler vi en dæmpning på kraftsiden. En værdi på 20 % er tilstrækkelig til lineær dæmpning og rotationsdæmpning, så kuglerne ikke ruller for langt ud.
Kuglen har nu sine dynamiske egenskaber, men den er stadig alene. For at producere flere kugler af dens slags bruger vi den som en partikel i et partikelsystem. Til det har vi brug for et emitter-objekt, som genererer kuglepartiklerne og sender dem af sted. Vi kan finde det i paletten med partikelsystemets objekter.
I indstillingsdialogen for partikelemitteren kan vi angive præcis, hvor mange kugler der skal produceres på hvilket tidspunkt og fra hvilken position. For ikke at overbelaste spilenheden har jeg valgt en fødselsrate på to partikler (pr. sekund). Udsendelsen af kuglerne starter med det samme og slutter efter otte sekunder, dvs. ved billede 200. En tilstrækkelig lang partikellevetid er vigtig, så kuglerne ikke forsvinder for tidligt fra skærmen.
På emitter-siden i indstillingsdialogen definerer vi emitterens form og størrelse. Fordi de udsendte kugler skal udnytte næsten hele bredden af spilleenheden, bruger vi en X-længde på 145 cm. De smalle 10 cm i Y-retningen sikrer, at kuglerne udsendes næsten vandret og ikke falder for højt op.
Vi placerer nu den færdige partikelemitter på den øverste kant af spilenheden ved hjælp af redigeringsvisningen eller koordinatstyringen. Når du justerer, skal du altid sørge for, at partiklerne udsendes i retning af Z-aksen.
For at tildele kuglen til partikelemitteren som en partikel, skal vi blot tildele den til den via Object Manager. Det egentlige kugleobjekt er nu forsvundet fra editorvisningen og vises kun i form af de udsendte partikler.
Indstillinger for global dynamik
Som standard har CINEMA 4D en tyngdekraft, der svarer til jordens tyngdekraft. Disse og andre indstillinger kan findes i dokumentindstillingerne på siden Dynamik.
På Expert-siden kan man også ændre nogle standardværdier for bedre at kunne tilpasse kollisionsregistreringen til de elementer, der er involveret i simuleringen. I vores tilfælde giver det mening at reducere skaleringen til 10 cm og holde kollisionstolerancen så lav som muligt.
Nu, hvor alle forberedelser og indstillinger er foretaget, kan vi starte Dynamics-simuleringen ved at klikke på play-knappen.
Med dette færdige eksempel kan effekten af de dynamiske egenskaber studeres meget godt. Med forskellige masse-, friktions- eller dæmpningsværdier i de enkelte Dynamics body-tags får elementerne meget hurtigt helt forskellige egenskaber.
God fornøjelse med at eksperimentere!