For at vi skal kunne konsentrere oss fullt og helt om å jobbe med Dynamics og MoGraph, finner du alle de andre komponentene i scenen i arbeidsfilen "PSD_C4D_R12_Dyn_RigidB_Konnektoren_Start.c4d".
Et trebladet roterende hjul og et kuleobjekt bør være tilstrekkelig; resten gjøres med MoGraph-kloner eller en partikkelemitter.
Bygge opp scenen med MoGraph-kloner
De tre viktigste objektene i scenen vår er kulen, det roterende hjulet og det skråplanet som kulene senere skal rulle nedover på. Med unntak av vingene på det roterende hjulet har alle objektene allerede et materiale. Hvis du vil, kan du tilpasse scenen med andre materialer etter dine egne ideer.
Til kulene bruker vi et enkelt, parametrisk k uleobjekt som skal klones senere. Radiusen på 7 cm passer til det roterende hjulet vårt og planet, hvis nedre kant senere skal fange opp kulene så godt som mulig.
Det roterende hjulet er laget ved å ekstrudere et flower spline-objekt med en Extrude NURBS-generator. Antall blader ble redusert tilsvarende for de tre vingene på det roterende hjulet. Den indre radiusen er akkurat stor nok til å få plass til den innsatte akselen (et enkelt sylinderobjekt ).
Hvis du vil, kan du også eksperimentere med fire eller til og med fem vinger.
Extrude NURBS-generatoren sørger for tredimensjonal støping av det spesifiserte blomstersplineobjektet. Dybden på det roterende hjulet defineres via forskyvningsparameteren.
Det tidligere nevnte sylinderobjektet er overordnet det roterende hjulet. Det vil senere fungere som rotasjonsakse for Dynamics-kontakten.
Til slutt kommer vi til planet, som faktisk også er et Extrude NURBS-objekt som omdanner en forhåndsdefinert spline-bane (i dette tilfellet en L-spline ) til et tredimensjonalt objekt ved hjelp av ekstrudering.
Så mye for strukturen i startscenen. Vi starter med de snurrende hjulene og bruker MoGraph for å få nok kopier eller kloner til flyet vårt.
Så vi henter et kloneobjekt fra MoGraph-menyen.
I innstillingsdialogen til kloneobjektet setter vi først modusen til rutenett.
I de tilhørende parameterne kan vi nå spesifisere antall kloner og størrelsen på det resulterende rutenettet. Fordi rutenettet skal bestå av ett lag i x-retningen, lar vi dette antallet kopier være 1; i y-retningen lager vi 6 eller 5 kloner i de viste dimensjonene.
For at kloneobjektet også skal vite hvilke objekter det skal duplisere, plasserer vi hele hierarkiet til det roterende hjulet i objektbehandleren som et underobjekt i kloneobjektet. Som ønsket produserer kloneobjektet de roterende hjulene i det rutenettformede arrangementet.
Vi plasserer nå de klonede roterende hjulene på flyet. Siden planets rotasjonsvinkel er 40°, bruker vi også denne verdien for kloneobjektet, her som en bankvinkel på - 40°.
For å plassere kloningsrutenettet med de roterende hjulene nøyaktig på flyet, er det best å bytte til sidevisning, aktivere den globale aksejusteringen og flytte de roterende hjulene langs aksen sin nær flyet. Ettersom aksen til de roterende hjulene stikker litt bakover, kan den lett dyppe inn i planet.
De roterende hjulene vil da være installert og kan flyttes tilbake til "slide"-gruppen som et underobjekt. Det som fortsatt er ganske irriterende for øyeblikket, er den altfor perfekte, helt identiske innrettingen av de roterende hjulene. For å få slutt på denne monotonien vil vi integrere en randomiser.
Vi finner den i MoGraph>Effectors-menyen og tar den med inn i scenen vår. Hvis du velger kloneobjektet i Object Manager før du henter frem den tilfeldige effektoren, blir effektoren automatisk tilordnet dette kloneobjektet.
I dialogboksen for innstillinger for den tilfeldige effektoren lager vi først de tilfeldige rotasjonene av hjulene. For å gjøre dette åpner vi Transform-feltet i Parameters-området og aktiverer alternativet Angle for transformasjonen. For å rotere hjulene etter pitching-vinkelen skriver vi inn en verdi her. En vinkel på 60° gir hjulene nok manøvreringsrom når de roterer.
Siden vi også ønsker å bruke den tilfeldige effektoren for fargen på hjulene i materialet, åpner vi også fargefeltet og aktiverer fargemodus. I effektorparametrene på høyere nivå i tilfeldighetseffektoren kan vi eksperimentere med de tilfeldige verdiene ved hjelp av startverdien. Mer om dette senere.
I redigeringsvisningen kan endringene som forårsakes av effektoren, normalt observeres umiddelbart. Forutsatt at den tilfeldige effektoren ble tilordnet klonobjektet da det ble opprettet. Hvis ikke, kan vi gjøre dette raskt i innstillingsdialogen for klonobjektet via Effectors-området. Fra Object Manager drar vi inn alle effektorene som skal eller kan påvirke klonobjektet.
For å piffe opp scenen litt, kan vi gi urskivene forskjellige farger. Den tilfeldige effekten vil spare oss for mye arbeid. Først oppretter vi imidlertid et nytt materiale, enten via menykommandoen med samme navn i materialbehandleren eller ved å dobbeltklikke på en ledig plass i behandleren.
For at den tilfeldige effekten skal påvirke fargen i fargekanalen, oppretter vi en fargeskygger fra undermenyen MoGraph i teksturens pilknappmeny.
Etter å ha klikket på knappen for fargeskygger befinner vi oss i den ganske oversiktlige innstillingsdialogen for fargeskyggeren. Her sørger vi for at fargealternativet er valgt for kanalen.
Nå trenger vi bare å tilordne materialet for hjulene til ExtrudeNURBS-objektet på rammen. Dette gjør vi ved å dra det fra Material Manager til det roterende hjulets rammeobjekt i Object Manager. Hvis du fortsatt ikke liker fargekombinasjonen for de roterende hjulene, kan du endre startverdiparameteren i den tilfeldige effektoren til du liker de tilfeldig valgte fargene.
Sette opp dynamikksystemet med kollisjonsobjekter og stive kropper
Nå er scenen såpass klargjort at vi kan integrere elementene som inngår i simuleringen, i et dynamikksystem. La oss begynne med de rene kollisjonsobjektene, det vil si objekter som flyet og gulvet, som ikke er dynamiske, men bare er involvert i systemet for kollisjonsdeteksjon.
Begge defineres som kollisjonsobjekter via menyen Simulering>Dynamikk ved hjelp av kommandoen Opprett kollisjonsobjekt.
Kommandoen tildelte de valgte objektene en Dynamics Body Tag, og i innstillingsdialogen ble den dynamiske funksjonaliteten automatisk deaktivert for oss, og kollisjonsdeteksjonen ble aktivert. I kollisjonsområdet satte vi elastisiteten og friksjonen til 30 % hver, slik at de treffende kulene ikke spretter utilsiktet oppover, men ruller sakte ut.
Situasjonen er litt annerledes for det andre kollisjonsobjektet, glidenivået. Her trenger vi det statiske nettet som kollisjonsform i kollisjonsområdet. På grunn av L-konturen til glideplanet garanterer dette at objektets form også brukes korrekt for beregning av kollisjonen. Friksjonsparameteren kan være litt høyere for planet, slik at kulene ikke ruller for raskt gjennom den svingende hjulbanen senere.
I motsetning til de rene kollisjonsobjektene deltar de roterende hjulene aktivt i de dynamiske hendelsene. Siden de også er stive legemer, definerer vi dem som stive leg emer. Dette gjør vi ved å velge vingeobjektet i klonstrukturhierarkiet og definere det som et stivt legeme ved hjelp av kommandoen Create Rigid Body fra menyen Simulation>Dynamics.
De roterende hjulene oppfører seg også annerledes ved en kollisjon. For å forhindre uønsket uro i klonens rutenett før en reell kollisjon finner sted, setter vi utløsningen av den dynamiske egenskapen til Ved kollisjon i innstillingsdialogen for Dynamics Body-taggen.
Kollisjonssiden handler om detaljert innstilling av kollisjonsegenskapene. Her sørger innstillingen Automatic collision shape ( Automatisk kollisjonsform) for at den best mulige kollisjonskonvolutten brukes for den spesielle formen til de roterende hjulene. Fordi vi ikke ønsker at de treffende kulene skal sprette langt unna etter kollisjonen, reduserer vi elastisiteten til 20 %. Den høye friksjonsverdien på 80 % sørger også for at kulene mister energi hver gang de kommer i kontakt med de roterende hjulene.
Det er alltid lurt å bruke en separat masse når kolliderende objekter med ulik masse skal koordineres. Siden kulene i spinnehjulene ikke skiller seg fra spinnehjulene i størrelse, men er svært forskjellige i masse, angir vi her en separat masse på 8. Rotasjonsmassen på 80 % sørger for at hjulene blir noe lettere å dreie.
For å få litt mer innflytelse på den rådende energien og for å sikre at simuleringen kommer til ro innen rimelig tid, demper vi i tillegg kreftene som virker på de roterende hjulene.
På siden for krefter i innstillingsdialogen er de roterende hjulene tildelt en lineær demping på 60 % og en demping av rotasjonen på 80 %. Til tross for kulenes sterke påvirkning vil dette stabilisere de roterende hjulene relativt raskt.
Funksjonsutvidelse av de roterende hjulene med kontakter
Hvis du starter simuleringen ved å klikke på avspillingsknappen, vil hjulene falle og gli nedover planet uten en lyd ved første kollisjon. Selv om de visuelt sitter fast i planet med aksene sine, spiller ikke aksene noen rolle i simuleringen vår. Vi bruker såkalte konnektorer for å skape en forbindelse mellom de roterende vingene på de svingende hjulene og aksen. Du finner dem i menyen Simulering>Dynamikk.
I prinsippet spiller det ingen rolle for konnektoren hvor den befinner seg i elementene eller hierarkiene i Object Manager. For å opprettholde logikken i scenen vår kombinerer vi den imidlertid funksjonelt korrekt med aksens sylinderobjekt. For å få bedre oversikt når vi integrerer kontakten, deaktiverer vi midlertidig produksjonen av kloner via Object Manager.
Hvis konnektoren skal fungere som en roterende akse, trenger den først riktig posisjon og orientering, i vårt tilfelle koordinatene og vinkelen til den sylindriske aksen. Denne prosessen forenkles ved hjelp av Apply-kommandoen fra Functions-menyen, som vi henter opp når kontakten er valgt.
I innstillingsdialogen til Apply-verktøyet angir vi først aksens sylinderobjekt som datadonor. Dette gjør vi ved å dra det fra Object Manager til det tilsvarende Transfer from-feltet. Ettersom vi skal finjustere selve kontakten, kan vi bruke alle parametrene på dette punktet ved å klikke på knappen Assign.
Vi velger kontakten via Object Manager og justerer justeringen i forhold til dreiehjulet. Som det fremgår av illustrasjonen nedenfor, må kursvinkelen roteres med -90° og stigningsvinkelen (i henhold til flyets helning) med 40°. På skjermsiden kan vi redusere størrelsen på kontakten slik at den passer bedre med det roterende hjulet.
Vi definerer den faktiske funksjonaliteten til kontakten på objektsiden i innstillingsdialogen. Hengseltypen holder de tilkoblede objektene til aksen og tillater bare rotasjon rundt den angitte referanseaksen. Siden vårt eksempel med løpehjulet og aksen er den samme aksen, kan vi være mer økonomiske, men det hjelper fortsatt å jobbe så nøyaktig som mulig under orientering, spesielt med mer komplekse scener, slik at alt fremdeles kan forstås senere.
Som objekt A for tilkoblingen drar vi akseobjektet fra Object Manager inn i det angitte feltet. Siden bevegelsen skal gå rundt X-aksen, velger vi denne aksen som referanseakse. Objekt B er løpehjulsobjektet med identisk referanseakse. Det er ikke noe mer å ta hensyn til for kontakten på dette punktet.
Når vi har tatt hånd om den faktiske funksjonen til kontakten, oppretter vi den som et underobjekt til aksen til det roterende hjulet. Siden aksen er funksjonelt koblet til løpehjulet via kontakten, er kontakten i gode hender her.
Generering av dynamiske kuler med partikkel-systemet
Spillmaskinen er fullt utstyrt og funksjonell, nå trenger vi bare kuler med dynamiske egenskaper som vi kan slippe ut på den. Vi har allerede en ball i scenen. Men for å få lekeapparatet til å fungere skikkelig, må vi slippe flere kuler fra en partikkelemitter. Men først må vi gi kulen de ønskede dynamiske egenskapene slik at den i det hele tatt kan delta i simuleringen.
For å gjøre dette trenger kula en Dynamics Body Tag med aktiverte dynamiske egenskaper. Derfor tilordner vi denne taggen til kuleobjektet ved hjelp av kommandoen Create rigid body fra menyen Simulation>Dynamics.
I innstillingsdialogen for Dynamics Body Tag finner vi de grunnleggende egenskapene på Dynamics-siden. Her setter vi oppløsningen til Immediate, slik at kulene kan handle så snart de dukker opp i scenen.
La oss gå videre til kollisjonsegenskapene på kollisjonssiden. En kule er helt uproblematisk i kollisjonsberegningen; den automatiske deteksjonen fungerer her. Kulens elastisitet og friksjon holder seg innenfor rimelige grenser. Hvis kulene kolliderer med hverandre senere, vil de også sprette mindre langt.
Innstillingene på massesiden er interessante i forbindelse med innstillingene til det roterende hjulet. Der hadde vi en egen masse på 8. For å unngå at kulene treffer de roterende hjulene for hardt og tungt på grunn av for høy masse og forstyrrer systemet, satte vi massen til kulen til en verdi på rundt 5.
For å sikre at kulene også kommer til ro relativt raskt etter rotasjonen (analogt med de roterende hjulene), tilordner vi en demping på kraftsiden. En verdi på 20 % er tilstrekkelig for lineær demping og rotasjonsdemping, slik at kulene ikke ruller for langt ut.
Kulen har nå sine dynamiske egenskaper, men den er fortsatt alene. For å produsere flere kuler av denne typen bruker vi den som en partikkel i et partikkel-system. For å gjøre dette trenger vi et emitterobjekt som genererer kulepartiklene og sender dem av gårde. Du finner det i paletten med partikkelobjektene.
I innstillingsdialogen til partikkelemitteren kan vi spesifisere nøyaktig hvor mange kuler som skal produseres på hvilket tidspunkt og fra hvilken posisjon. For ikke å overbelaste spillenheten har jeg valgt en fødselsrate på to partikler (per sekund). Utsendelsen av kulene starter umiddelbart og avsluttes etter åtte sekunder, dvs. ved bilde 200. En tilstrekkelig lang partikkellevetid er viktig for at kulene ikke skal forsvinne for tidlig fra skjermen.
På emitter-siden i innstillingsdialogen definerer vi formen og størrelsen på emitteren. Fordi de utsendte kulene skal utnytte nesten hele bredden på spillenheten, bruker vi en X-lengde på 145 cm. De smale 10 cm i Y-retningen garanterer at kulene sendes ut nesten horisontalt og ikke faller for høyt opp.
Vi plasserer nå den ferdige partikkelemitteren på den øvre kanten av spillenheten ved hjelp av redigeringsvisningen eller koordinatbehandleren. Når du justerer, må du alltid sørge for at partiklene sendes ut i retning av Z-aksen.
For å tilordne kula til partikkelemitteren som en partikkel, tilordner vi den ganske enkelt til den via Object Manager. Selve kuleobjektet har nå forsvunnet fra redigeringsvisningen og vises bare i form av de emitterte partiklene.
Innstillinger for global dynamikk
Som standard har CINEMA 4D en gravitasjonskraft som ligner på jordens tyngdekraft. Disse og flere andre innstillinger finner du i dokumentinnstillingene på Dynamics-siden.
På Expert-siden kan du også endre noen av standardverdiene for å tilpasse kollisjonsdeteksjonen bedre til de elementene som er involvert i simuleringen. I vårt tilfelle er det fornuftig å redusere skaleringen til 10 cm og holde kollisjonstoleransen så lav som mulig.
Nå som alle forberedelser og innstillinger er gjort, kan vi starte Dynamics-simuleringen ved å klikke på play-knappen.
Med dette ferdige eksemplet kan effekten av dynamikkegenskapene studeres veldig godt. Med forskjellige verdier for masse, friksjon eller demping i de enkelte Dynamics-kroppstaggene får elementene veldig raskt helt forskjellige egenskaper.
Ha det gøy med å eksperimentere!