Om een idee te krijgen van het resultaat van deze tutorial, kun je het beste de bijbehorende video bekijken.
In het werkbestand PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d zijn de belangrijkste elementen van de scène al voorbereid, zodat we meteen aan de slag kunnen met Dynamics. Omdat we zullen beginnen met de bouw van het kleine speelgoedvoertuig, zijn alle storende elementen van de scène tijdelijk uitgeschakeld via de laagschakelaars van de Object Manager.
Opbouw van de scène
Laten we snel kijken naar de samenstelling van de scène. Naast de auto is er ook een bolobject als latere hindernis, een HyperNURBS-object met geïntegreerd landschapsobject, evenals grond, lucht en lichtobjecten voor de omgeving en verlichting in de scène.
Om de opbouw van het voertuig zo eenvoudig en begrijpelijk mogelijk te maken, bestaat de auto alleen uit de carrosserie en de vier wielen. De wielen worden in totaal gevormd door vier buiscilinderobjecten, die zijn uitgelijnd in de positieve X-richting en op de daarvoor bestemde plekken aan de auto zijn geplaatst.
Zodat we het later gemakkelijker hebben bij het integreren van connectoren en motoren, is aan elk wiel zijn positie als afkorting toegevoegd (vl = voor links).
De carrosserie wordt gegenereerd door een Extrude-NURBS-object uit een spline. Natuurlijk kun je ook een andere auto of carrosserie gebruiken; later is het alleen belangrijk om deze correct te integreren met behulp van een connector of Dynamics Body-Tag.
In het instellingendialoog van het Extrude-NURBS-object is de breedte van ons voertuig vastgelegd. Deze wordt bepaald door de verschuiving in de X-richting bij de extrusie. Afgeronde hoeken aan de randen van de carrosserie zorgen voor een natuurlijke, realistische uitstraling.
Verborgen in het HyperNURBS-object ligt een landschapsobject, dat ons een bruikbaar terrein biedt voor offroad-ritjes met de auto. Dankzij HyperNURBS-subdivisie kunnen we besparen op segmentatie van het landschap zonder een te hoekig terrein te krijgen.
Voor wat meer actie tijdens het rijden door het terrein, voegen we wat obstakels toe. In mijn geval eenvoudige bolvormige objecten met een straal van 50 cm, die later willekeurig over het terrein of het landschapsobject worden verspreid met behulp van MoGraph.
Opbouw van het voertuig met connectoren en motoren
Laten we eerst kijken naar het speelgoedautootje. Welke functies moet het voor ons vervullen?
Allereerst moeten de wielen draaibaar aan het voertuig worden bevestigd; bovendien heeft het aandrijving aan de wielen nodig, zodat het zichzelf überhaupt kan voortbewegen. En het moet natuurlijk botsingen detecteren - het begint al bij het feit dat de wielen op de grond staan.
Om deze functionaliteit te kunnen bieden via de nieuwe Dynamics van CINEMA 4D, hebben de betrokken elementen Dynamics Body-Tags nodig, zodat ze überhaupt worden geaccepteerd door het Dynamics-engine.
We beginnen met de vier wielen, die we allemaal selecteren in de Object Manager en definiëren ze als Rigid Body via het menu Simulatie>Dynamics.
Omdat alle vier wielen natuurlijk dezelfde dynamische eigenschappen krijgen, laten we de vier Dynamics Body-Tags geselecteerd en stellen we de gewenste parameters in.
Op de Dynamics-pagina kunnen we de standaardinstellingen overnemen. De onmiddellijke activering is belangrijk, zodat de wielen meteen contact met de grond maken.
Op de Botsingspagina helpen we de botsingsdetectie van Dynamics door als vorm de cilinder X-as in te stellen. Dit komt overeen met de vorm van het wiel en verhoogt de prestaties bij de Dynamics-berekening. Zodat het voertuig bij een botsing met de grond slechts lichtelijk omhoog springt, stellen we een lichte elasticiteit van 10% in. Daarentegen verhogen we de wrijving tot 120%, zodat de wielen op de grond voldoende grip kunnen krijgen.
Laten we overgaan naar het volgende element van het voertuig, de carrosserie. Helaas is het Extrude-NURBS-object vanwege de ongunstige aspositie niet geschikt als referentiepunt voor de carrosserie, daarom laten we gewoon het bovenliggende Null-Object Auto dit overnemen. Zijn as bevindt zich in het midden van de auto.
Dus we wijzen het Null-Object Auto via het menu Simulatie>Dynamics een Dynamics Body-Tag als Rigid Body toe.
In het instellingendialoog van de Dynamics Body-Tag laten we ook het starten van de trigger meteen voor de auto.
Op de botsingspagina moeten we rekening houden met de hiërarchie van ons voertuig, zodat de carrosserie überhaupt kan worden herkend. We stellen de hiërarchie daarom in op samengestelde botsingsvorm en kiezen als vorm het beste de convexe omhulling of het bewegende mesh.
De overige botsingseigenschappen kunnen blijven bestaan; uiteindelijk zal het voertuig voornamelijk op de vier wielen staan en zich niet per se omslaan.
Om ervoor te zorgen dat voor ons voertuig ook daadwerkelijk de door ons gewenste as als zwaartepunt wordt gebruikt, moeten we even naar de massa-pagina gaan.
Hier activeren we de optie Eigen massazwaartepunt - aangezien we echter niet willen afwijken van de gedefinieerde as, blijven de X-, Y- en Z-offsetwaarden op 0.
Als we de animatie nu zouden starten, zou ons voertuig simpelweg in elkaar zakken. Dat is niet verwonderlijk, want we hebben slechts vijf Dynamics Bodies gedefinieerd, Cinema 4D weet nog niets over de constructieve samenhang.
Dit veranderen we nu met connectoren. Hiermee bevestigen we enerzijds de wielen aan het voertuig, maken we ten tweede rotatie om de wielas mogelijk en realiseren we tegelijkertijd een redelijke vering voor het rijden op ruw terrein.
Laten we de eerste connector uit het menu Simulatie>Dynamics halen.
Elk wiel krijgt zijn eigen connector. We beginnen met het voorste linkerwiel en benoemen de nieuw gecreëerde connector eerst passend om. Om ervoor te zorgen dat de connector de positie van het wiel overneemt, activeren we de Overnemen-tool uit het menu functies en slepen we het wiel vl in het objectveld voor overname.
Nadat we op de Toewijzen-knop hebben geklikt, bevindt de connector zich op dezelfde positie als het opgegeven wiel.
Op dezelfde manier creëren we de volgende connector; ditmaal voor het voorste rechterwiel. Ook aan deze connector wijzen we via de overname-opdracht de positie van het bijbehorende wiel toe.
Voordat we doorgaan met de achterwielen, richten we de connectoren aan de voorwielen correct uit. Hiertoe selecteren we de connector en draaien we deze via de Koppeleingshoek in de Attribuutbeheerder met het gele scharnierdeel naar buiten. Voor het rechtervoorwiel resulteert dit in een hoek van 90°, voor het linker voorwiel een hoek van -90°.
Op dezelfde manier kun je nu ook de twee achterwielen voorzien van connectoren op de juiste positie en met de juiste rotatie instellen. De onderstaande afbeelding toont de vier geplaatste connectoren van bovenaf gezien.
Zodat de connectors ook zichtbaar zijn wanneer ze niet geselecteerd zijn, activeer je gewoon de optie Altijd zichtbaar op de Weergave-pagina van het Connector-instellingendialoog. Verklein de grootte van de connectoren iets, zodat ze beter passen bij het voertuig.
Nu moeten we eindelijk de juiste functie bepalen voor de connectoren; we willen immers geveerde assen en geen scharnieren aan de auto. Dit doe je op de Object-pagina, waar we het type vering voor alle vier connectoren instellen.
De vier connectoren laten we nog geselecteerd, want ook de volgende instellingen kunnen we voor alle vier wielveringen uitvoeren. Als eerste object voor de binding van de connectoren slepen we het Nulobject Auto als Object A naar het daarvoor bestemde veld.
We kiezen een veerhardheid van 20, voor de veerdemping, dus de snelheid waarmee de veer zich weer terugzet, nemen we een waarde van 20%.
We activeren de onderste en bovenste limiet in de Y-richting, met een offset van respectievelijk 20 cm. Hoewel het onwaarschijnlijk is dat onze auto deze grenzen bereikt, wordt de scène daardoor toch overzichtelijker.
Nu gaan we verder met de individuele connectoren of wielveringen. De enige aanpassing die we nog moeten doen voor elke connector, is het tweede object voor de binding. Hiervoor slepen we het bijbehorende wiel van de betreffende connector naar het veld Object B.
Als we alle vier connectoren of wielophangingen hebben opgezet, integreren we ze ook in de objecthiërarchie van het voertuig. We plaatsen ze in de buurt van de wielen als subobject in het nulobject "Auto".
Wat nog ontbreekt aan ons speelgoedautootje is de aandrijving, zodat het zichzelf kan voortbewegen. Hoewel een vierwielaandrijving handig zou zijn voor off-road, zullen in ons voorbeeld alleen de twee voorwielen worden aangedreven. Twee motoren worden gebruikt, omdat de krachtoverbrenging naar de afzonderlijke wielen dan fysiek correcter verloopt.
We voegen de eerste motor toe aan de scène via het menu Simulation>Dynamics.
Analoog aan de connectoren geven we ook de motor een passende naam die overeenkomt met het aangedreven wiel. Hier moet de motor het linker voorwiel aandrijven.
Met het Overnemen-hulpmiddel uit het menu Functies laten we de motor de positie van het wiel overnemen. Na het klikken op de Toewijzen-knop bevindt de motor zich op de gewenste locatie en hoeft alleen nog maar te worden uitgelijnd.
Dit doen we via de Attributenbeheerder op de coördinatenpagina. We draaien de motor met een Heading-hoek van 90°, zodat de gele looprichting overeenkomt met de draairichting van het wiel.
De motor wordt gekoppeld door de objectvelden in zijn instellingendialoog. In ons geval plaatsen we het linker voorwiel in het veld Object A. Voor de aandrijving geven we de motor meteen een hoekige doelsnelheid van 400° en een koppel van 50.
Op dezelfde manier voegen we nu een andere motor toe voor de aandrijving van het rechter voorwiel. We geven hem een passende naam en laten hem opnieuw de positie van het bijbehorende wiel overnemen met behulp van het Overnemen-werkzeug.
Ook draaien we de tweede motor via de Attributenbeheerder in de juiste draairichting en geven ditmaal het rechter voorwiel door als Object A.
De tweede motor krijgt natuurlijk dezelfde parameters voor de hoekige doelsnelheid en het koppel.
Daarmee is de aandrijving nu correct in het voertuig ingebouwd. Ik raad aan om de motoren als subobject in de objecthiërarchie van het voertuig op te nemen, zodat de Editor ook tijdens de Simulatie overzichtelijk blijft.
Voordat we ons autootje eindelijk kunnen laten rijden, hebben we nog een stevige ondergrond nodig, want tot nu toe zou het speelgoedautootje gewoon in het niets vallen.
Voor onze eerste test en als ondergrond voor later maken we de vloer tot een botsingsobject. Hiervoor selecteren we het vloerobject en wijzen het via het menu Simulation>Dynamics de bijbehorende Dynamics Body-Tag toe.
Zoals gebruikelijk bij een puur botsingsobject, is het instellingendialoogvenster nogal overzichtelijk. Wat hier vooral van belang is, is de wrijvingswaarde. We verhogen deze tot 100%, zodat de wielen snel grip vinden en ordelijk kunnen versnellen.
Als we nu op de afspelen-knop drukken, begint het speelgoedautootje al vanzelf te rijden. Later zullen we de auto nog van een kleine besturing voorzien; nu concentreren we ons echter eerst op het terrein.
Uitbreiding van de scène met Dynamica- en MoGraph-elementen
Tot nu toe niet zichtbaar, omdat het als parametrisch object via de Objectmanager gedeactiveerd is, zal het Landschapsobject nu dienen als heuvelachtig terrein. Net als bij het vloerobject moeten we eerst het terrein als botsingsobject definiëren. Hiervoor wijzen we het bovenliggende HyperNURBS-object via het menu Simulation>Dynamics een Dynamics Body-Tag toe als botsingsobject.
Ook bij dit botsingsobject is de botsingspagina van het instellingendialoogvenster bijzonder belangrijk. Hier hebben we het statisch mesh nodig als botsingsvorm, zodat de auto later elke bobbel op het oppervlak kan herkennen. Net als bij het vloerobject geven we ook hier de hoge wrijvingswaarde van 100%.
Laten we meteen testen hoe onze auto het off-road doet. Hiervoor verplaatsen we eerst de complete autogroep via de Z-coördinaat in het Attribuutbeheer naar 3000 cm. Zo staat de auto klaar om richting het terrein te sturen met een zwaai.
Na het klikken op de afspeelknop kunnen we zien hoe ons speelgoedauto moedig zijn weg baant door het heuvellandschap. Om de scène nog wat op te fleuren, voegen we extra obstakels toe.
De basis voor onze obstakels is al aanwezig in de vorm van het bol-object. Om ervoor te zorgen dat de gekloonde ballen niet alleen in de weg staan van de auto, maar ook weggeduwd worden, moeten we ze definiëren als rigide lichaam. In principe maakt het niet uit of de bal zelf of het kloonobject het dynamische lichaamstag krijgt toegewezen. Met de eerste optie ben je flexibeler omdat je zo elke kloonsoort eigen dynamische eigenschappen kunt geven.
Laten we dus het bol-object het benodigde dynamische lichaamstag als rigide lichaam toewijzen; we vinden het zoals gewoonlijk in het menu Simulatie>Dynamica.
In het instellingendialoog van het dynamische lichaamstag voor de bal stellen we op de dynamiekspagina de activering in op Bij botsing. Hierdoor bewegen de ballen zich niet ongewenst, maar reageren ze pas wanneer de auto of een andere bal een botsing veroorzaakt.
Vanwege de eenvoudige objectvorm vertrouwen we op de automatische botsingsherkenning; een verhoogde wrijving van 80% houdt de ballen grotendeels op de grond, zodat ze zonder ongewenst springen eenvoudig over het terrein rollen.
De bal is nu voorzien van dynamische eigenschappen zodat we ze over het terrein kunnen verspreiden. Hiervoor gebruiken we een kloonobject uit het menu MoGraph.
We wijzen het balobject als kloon toe aan het kloonobject via de objectbeheerder. Omdat we een parametrische bal gebruiken, die het midden van de bal als referentiepunt gebruikt, zou het plaatsen van de bal-klonen op dit moment betekenen dat alle klonen tot de helft in het terrein vastzitten.
Om dit te voorkomen en de ballen respectievelijk omhoog te verplaatsen met de straal, vinden we in het instellingendialoog op de transformatiepagina de mogelijkheid om een verplaatsing in te stellen. We verplaatsen de ballen in Z-richting met 50 cm, dus de straal van de bal.
De daadwerkelijke instellingen voor het dupliceren en verspreiden van de klonen voeren we uit op de objectpagina van het instellingendialoog.
We kiezen eerst de modus Object; we willen immers het landschapobject gebruiken voor het verspreiden van de klonen. Vervolgens slepen we het genoemde landschapobject naar het daarvoor bestemde veld Object.
De verdeling van de klonen moet op het oppervlak van het object plaatsvinden, het aantal kunnen jullie natuurlijk zelf bepalen. Om te voorkomen dat de auto onnodig veel ballen moet verwijderen, zou een aantal van maximaal 80 aanbevolen zijn.
Op de onderstaande afbeelding zien jullie de huidige status in de rendering. De ballen zijn goed verdeeld over het landschapobject, maar wijzen nog steeds allemaal in dezelfde richting. Met een willekeurseffectuator is dit kleine probleem echter snel opgelost.
Om de willekeurseffectuator toe te wijzen aan het kloonobject bij het toevoegen aan de scène als werkgebied, selecteren we het kloonobject in de objectbeheerder, voordat we de willekeurseffectuator uit het menu MoGraph>Effectoren halen.
In het instellingendialoog van de effectuator vinden we op de parameterspagina de transformatieparameters. Aangezien de ballen alleen over alle assen gedraaid moeten worden, hebben we alleen gewijzigde hoekparameters nodig. Een hoek van 90° is voldoende om voldoende ruimte te bieden voor verschillende rotaties.
Een testrendering toont aan dat de ballen dankzij de willekeurseffectuator nu volledig willekeurig gedraaid en verspreid zijn over het landschap.
Het is nu hoog tijd om onze speelgoedauto los te laten op de obstakels. Aangezien we in de toekomst rekening moeten houden met wat meer botsingen, is het de moeite waard om, afhankelijk van de grootte en schaling van de obstakels, ook een blik te werpen op de Dynamics-instellingen onder de Document-instellingen.
Aangezien de grootte van de ballen, wielen en ook van de speelgoedauto zeer dicht bij de voorgeschreven schaal ligt en goed overweg kan met de botsingtollerantie, zijn er in mijn voorbeeld geen aanpassingen nodig.
Om te voorkomen dat de speelgoedauto kort na de start eenvoudig uit het zicht verdwijnt, vind je in de scène-elementen in de Objectbeheerder ook een Doelcamera die automatisch op de auto is gericht. In haar Uitlijn-expressie staat vastgelegd dat ze het object Auto niet uit het oog mag verliezen.
We activeren deze door te klikken op het witte zoeker-symbool in de Objectbeheerder.
Je kunt nu op de afspeelknop drukken en de auto zien tijdens zijn rit door het met obstakels bezaaide terrein.
Implementatie van een eenvoudige besturing voor de auto met XPresso
Het zou natuurlijk mooier zijn als de auto niet zomaar rechttoe rechtaan over het terrein zou rijden, maar als we als gebruiker ook een mogelijkheid hadden om te sturen.
Voor ons voorbeeld is een eenvoudige stuurmogelijkheid naar links of rechts via een schuifregelaar voldoende. Aangezien we eigenlijk twee objecten (de wielen of connectoren) zouden moeten besturen, maar slechts een comfortabele regelaar willen, integreren we gewoon zelf een eigen besturingsparameter in de vorm van gebruikersgegevens.
Selecteer hiervoor de Auto-groep en voeg via het Gebruiker-menu in de Attributenbeheerder je eigen gebruikersgegevens toe.
Het venster Beheer gebruikersgegevens wordt geopend. Hier vind je alle individuele gebruikersgegevens die bij het dragerobject horen. We geven de nieuw aangemaakte invoer meteen de passende naam Sturing en geven via het veld Eigenschappen ook aan hoe de parameter moet zijn.
Als Interface kiezen we een Decimaalschuifregelaar in de eenheid Graden. Om overzichtelijke stappen te hebben, kiezen we een Stapgrootte van 1°.
Om ervoor te zorgen dat de wielen niet te ver worden gedraaid en zich niet met het voertuig overlappen, beperken we de minimale uitslag tot -30° en de maximale uitslag tot 30°. De vooraf ingestelde waarde van 0° zorgt ervoor dat de wielen aan het begin recht staan.
Nadat we de dialoog met OK hebben gesloten en de gebruikersgegevens zijn aangemaakt, vinden we op de gebruikersgegevenspagina van onze auto de door ons aangemaakte parameter Sturing, zoals gewenst als schuifregelaar.
We hebben dus een manier gecreëerd om een eigen parameter te besturen. Het enige wat we nu nog moeten doen, is deze op de juiste plaats in de opbouw van ons voertuig doorsturen.
Een taak voor XPresso. Hiervoor hebben we ten eerste een XPresso-tag nodig, die we het gemakkelijkst toewijzen via het contextmenu met de rechtermuisknop in het submenu CINEMA 4D-tags.
Als drager voor deze expressie is natuurlijk onze Auto-groep uitstekend geschikt.
Met een dubbelklik op de XPresso-tag openen we de XPresso-editor. Als eerste invoer of knooppunt (Node) slepen we het Nul-object Auto uit de Objectbeheerder naar het XPresso-editorvenster.
Om onze zelfgemaakte parameter als poort beschikbaar te stellen voor koppeling, klikken we op de rode knop van de uitvoerpoorten en selecteren we de Sturing-poort uit het submenu Gebruikersgegevens.
Met onze parameter Sturing willen we de stuurhoeken van de wielophang-verbindingen beïnvloeden. Om toegang te hebben tot deze parameters in de XPresso-editor, zoeken we de beide verbindings van de linker- en rechtervoorwielen in de Objectbeheerder en slepen we beide objecten ook naar de XPresso-editor.
Aangezien we een waarde willen doorgeven aan de beide verbindings, hebben we de stuurhoeken nodig bij de ingangspoort. Klik daarvoor op de blauwe knop van de ingangspoorten van de verbinding-nodes en selecteer in het submenu Objecteigenschappen de poort Stuurhoek.
Nu moeten we alleen nog de twee stuurhoek-poorten verbinden met de stuuringang van de auto. Hiervoor slepen we eenvoudigweg met de muisknop ingedrukt van de ene poort naar de andere.
Onze kleine omweg in XPresso is helaas al voorbij, dus we kunnen de XPresso-editor sluiten. Om te voorkomen dat we constant op zoek moeten naar het Nul-object en de gebruikersgegevensvermelding voor de besturing van de auto, integreren we de schuifregelaarbesturing eenvoudigweg in het Head-Up Display (HUD) van het editorvenster.
Druk met de rechtermuisknop op de parameterinvoer Sturen in de Attribuutbeheerder en selecteer uit het contextmenu de opdracht Toevoegen aan HUD.
Om de HUD-vermelding in de editor te verplaatsen, klikt u eenvoudigweg met ingedrukte Ctrl-toets op het HUD-element en verplaatst u het met de muis naar een geschikte positie.
Zodat het HUD-element niet alleen zichtbaar is wanneer ons voertuig is geselecteerd, roepen we het bijbehorende contextmenu op met de rechtermuisknop ingedrukt en selecteren in het menu Weergeven de optie Altijd.
Nu kunt u op de afspeelknop klikken en de auto met de schuifregelaar naar wens door het terrein sturen. Zorg ervoor dat u bij het begin van elke rit het sturen terugzet, zodat de auto niet overstuurt.
Wie de avontuurlijke rit later wil omzetten in een animatie, maakt eenvoudigweg op de belangrijke besturingspunten Keyframes voor de respectieve stuurwaarde. Veel plezier met het rijden door het terrein!