Pentru a avea o idee despre rezultatul acestui tutorial, cel mai bine este să vă uitați la videoclipul asociat.
În fișierul de lucru PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d, elementele principale ale scenei sunt deja pregătite, astfel că putem trece imediat la lucrul cu Dynamics. Deoarece vom începe prin extinderea micului vehicul de jucărie, toate elementele deranjante ale scenei sunt temporar ascunse prin comutatoarele de semafor ale Object Manager.
Construcția scenei
Să analizăm pe scurt cum este construită scena. Pe lângă mașină, există și un obiect sferic ca obstacol ulterior, un obiect HyperNURBS cu un obiect peisaj integrat, precum și obiecte sol, cer și obiecte luminoase pentru mediul și iluminarea scenei.
Pentru ca construcția mașinii să fie cât mai simplă și ușor de urmărit, mașina este compusă doar din carcasă și cele patru roți. În total, cele patru obiecte tubulare acționează ca roți, fiind aliniate în direcția pozitivă a axei X și plasate la locul lor de pe mașină.
Pentru a ne ajuta ulterior în integrarea conectorilor și a motorului, fiecare roată are atașată poziția sa ca abreviere (vl = față-stânga).
Carcasa generează un obiect Extrude-NURBS dintr-un Spline. Desigur, puteți folosi și altă mașină sau carcasă; important este ulterior integrarea corectă prin intermediul conectorului sau a etichetei Dynamics Body.
În fereastra de setări a obiectului Extrude-NURBS, este înregistrată lățimea mașinii noastre. Aceasta este determinată de deplasarea în direcția X la extrudare. Pentru un aspect natural, realist, marginile carcasei sunt rotunjite.
Ascuns în obiectul HyperNURBS se află un obiect peisaj, care ne oferă un teren util pentru escapada în offroad a mașinii. Datorită subdiviziunii HyperNURBS, putem economisi la segmentarea terenului, fără a obține un teren prea unghiular.
Pentru a adăuga un pic de acțiune în timpul călătoriei pe teren, integrăm câteva obstacole. În cazul meu, sunt simple obiecte de tip sferă cu raza de 50 cm, care vor fi distribuite ulterior pe terenul sau obiectul peisaj folosind MoGraph pentru aleatorizare.
Construcția vehiculului cu conectori și motoare
Să ne concentrăm mai întâi asupra mașinii de jucărie. Ce funcții trebuie să îndeplinească pentru scopurile noastre?
În primul rând, roțile trebuie să fie fixate pe vehicul pentru a se roti; de asemenea, are nevoie de o propulsie la roți pentru a se putea mișca singur. Și, desigur, trebuie să detecteze coliziunile - începând chiar de la faptul că roțile stau pe pământ.
Pentru a putea oferi această funcționalitate prin intermediul noilor Dynamics de la CINEMA 4D, elementele implicate au nevoie de etichete Dynamics Body, astfel încât să fie acceptate de motorul Dynamics în general.
Începem cu cele patru roți, pe care le selectăm toate în Object Manager și le definim ca Rigid Body prin meniul Simulation>Dynamics.
Deoarece toate cele patru roți evident primesc aceleași proprietăți dinamice, selecționăm cele patru etichete Dynamics Body și setăm parametrii dorți.
Pe partea de Dynamics, putem utiliza setările implicite. Este importantă activarea imediată pentru ca roțile să aibă imediat contact cu solul.
Pe partea de coliziune, ajutăm la recunoașterea coliziunilor de către Dynamics, stabilind Forma ca fiind Cilindru pe axa X. Aceasta corespunde formei roții și îmbunătățește performanțele în calculul Dynamics. Pentru ca vehiculul să săreau foarte ușor în cazul unei coliziuni cu solul, stabilim o ușoară elasticitate de 10%. În schimb, creștem fricțiunea la 120%, pentru ca roțile să aibă o aderență suficient de bună pe sol.
Să trecem la următorul element al mașinii, carcasă. Din păcate, obiectul Extrude-NURBS nu este potrivit ca punct de referință pentru carcasă datorită orientării axei sale necorespunzătoare, așa că folosim pur și simplu obiectul parinte Auto Null pentru a interveni. Axa sa se află în centrul mașinii.
Deci, atribuim obiectului parinte Auto Null o etichetă Dynamics Body ca Rigid Body prin meniul Simulation>Dynamics.
În dialogul de configurare a Etichetei Corpului dinamic, permitem începerea declanșării imediat pentru mașină.
Pe pagina de Coliziune trebuie să luăm în considerare ierarhia vehiculului nostru, astfel încât caroseria să poată fi recunoscută. Pentru aceasta, setăm ierarhia la Formă de coliziune compusă și alegem ca Formă cel mai bine envelopa convexă sau mesh-ul animat.
Celelalte proprietăți ale coliziunii pot să rămână; în cele din urmă, vehiculul va sta în principal pe cele patru roți și nu va fi neapărat răsturnat.
Pentru a ne asigura că centrul de greutate al vehiculului nostru folosește cu siguranță axa dorită, trebuie să trecem rapid la pagina de Masă.
Aici activăm opțiunea de Centru de masă personal - cu toate acestea, deoarece nu dorim să ne abatem de la axa definită, valorile de deplasare X, Y și Z rămân pe 0.
Dacă am începe animația acum, vehiculul nostru s-ar prăbuși pur și simplu. Aceasta nu este prea surprinzător, deoarece am definit doar cinci Corpuri dinamice, iar Cinema 4D nu știe (încă) nimic despre conexiunile constructive.
Schimbăm asta acum cu Conecționare. Cu ajutorul lor fixăm roțile pe vehicul, permitem rotația în jurul axei roții și simultan realizăm o suspensie pasabilă pentru parcurgerea terenului.
Luăm primul Conecționor din meniul Simulare>Dinamică.
Fiecare roată primește propiul său conector. Începem cu roata din față stângă și redenumim noul conector creat în primul rând corespunzător. Pentru a conectorul să preia poziția roții, activăm Instrumentul de preluare din meniul Funcții și tragem Roața stângă față în Câmpul obiectului pentru preluare.
După apăsarea butonului Atribuire, conectorul se află pe aceeași poziție cu roata definită.
În același mod, creăm următorul conector; de această dată pentru roata din față dreapta. De asemenea, îi atribuim poziția roții corespunzătoare folosind comanda Preluare.
Înainte de a continua cu roțile din spate, aliniem corect conectorii de la roțile din față. Pentru aceasta, selectăm conectorul și îl întoarcem folosind Unghiul de direcție din Managerul de atribute cu partea de balamale galbenă înspre exterior. Pentru roata din față dreapta rezultă un unghi de 90°, iar pentru roata din față stângă un unghi de -90°.
Prin aceeași metodă, puteți acum echipa roțile din spate cu conectoare la poziția corectă și cu rotația corectă. Imaginea de mai jos arată cele patru conectori plasați din perspectiva de sus.
Pentru ca conectorii să fie vizibili chiar și atunci când nu sunt selectați, activați pe partea de afisare a Dialogului de configurare a conectorului opțiunea Întotdeauna vizibil. Reduceti Dimensiunea conectorilor, astfel se vor potrivi mai bine cu vehiculul.
Acum ar trebui să determinăm în cele din urmă funcția corectă pentru conectori; dorim să avem axe cu suspensie și nu balamale la mașină. Aceasta se face pe partea de Obiect, unde setăm tipul de Federă de roți pentru toţi cei patru conectori.
Înca mai lăsăm cei patru conectori selectați, deoarece putem face setările ulterioare pentru toate cele patru suspensii ale roților. Pentru primul obiect pentru legat a conectorilor trageti Obiectul autonul ca Obiect A în câmpul corespunzător.
Pentru Duritatea arcului alegem valoarea 20, pentru Amortizarea arcului, adică viteza cu care arcul se reașeaza, luăm o valoare de 20%.
Activam Limita inferioară și superioară în direcția Y, cu o compensare de 20 cm fiecare. Este puțin probabil ca vehiculul nostru să ajungă la aceste limite, dar astfel scena devine mai clară.
Acum ne ocupăm de fiecare conector sau federă de roți în parte. Unica ajustare pe care trebuie să o facem pentru fiecare conector este al doilea obiect pentru legătura. Pentru aceasta, tragem roata corespunzătoare la conector în câmpul Obiect B.
Când am configurat toți cei patru conectori sau suspensii ale roților, îi integrăm și în ierarhia obiectului în vehicul. Îi plasăm în apropierea roților ca subobiect în obiectul zero "Mașină".
Ceea ce mai lipsește mașinuței noastre de jucărie este propulsia, astfel încât să se poată deplasa automat. Deși pentru teren ar fi de dorit o tracțiune integrală, în exemplul nostru, numai cele două roți din față vor fi antrenate. Două motoare deoarece transferul de putere către fiecare roată se desfășoară mai corect din punct de vedere fizic.
Construim primul motor prin meniul Simulare>Dinamică în scenă.
Analog cu conectorii, denumim și motorul corespunzător roții antrenate. Aici motorul ar trebui să antreneze roata din față stângă.
Cu ajutorul Instrumentului de preluare din meniul Funcții facem ca motorul să preia poziția roții. După ce apăsăm pe butonul Atribuire, motorul este plasat în locația dorită și trebuie doar să fie aliniat.
Aceasta se realizează prin Managerul de atribute pe pagina de coordonate. Rotim motorul printr-un unghi de direcție de 90°, astfel încât direcția galbenă să coincidă cu direcția de rotație a roții.
Motorul este conectat prin câmpurile obiectului în dialogul său de setări. În cazul nostru, tragem roata din față stângă în câmpul Obiect A. Pentru propulsie, motorul primește o viteză unghiulară țintă de 400° și un moment de torsiune de 50.
Pe același principiu, instalăm acum un alt motor pentru propulsia roții din fața dreapta. Îl redenumim corespunzător și din nou transferăm poziția roții corespunzătoare motorului cu Instrumentul de preluare.
De asemenea, rotim al doilea motor prin Managerul de atribute în direcția de rotație corectă și transferăm de data aceasta roata din fața dreaptă ca Obiect A.
Al doilea motor va primi, desigur, parametri identici pentru viteza unghiulară țintă și momentul de torsiune.
Acum propulsia este corect integrată în vehicul. Recomand să includem motoarele ca subobiecte în ierarhia obiectului vehiculului pentru ca Editorul să rămână clar în timpul simulării.
Înainte de a lăsa mașina noastră să pornească în sfârșit, avem nevoie de o suprafață substanțială, deoarece până acum mașinuța de jucărie ar cădea pur și simplu în gol.
Pentru testul nostru inițial și ca plan de fund pentru mai târziu, facem podeaua un obiect de coliziune. Pentru aceasta, selectăm obiectul de podea și îi atribuim prin meniul Simulare>Dinamică corespunzătorul Tag corp dinamic.
Așa cum este obișnuit pentru un obiect de coliziune pur, dialogul său de configurare este relativ simplu. Ceea ce ne interesează în primul rând este coeficientul de frecare. Îl setăm la 100%, pentru ca roțile să găsească rapid aderența și să accelereze corespunzător.
Odată ce apăsăm butonul de redare, mașinuța de jucărie pleacă deja singură. Mai târziu, vom dota mașina cu un mic sistem de control; acum ne ocupăm de teren.
Extinderea scenei cu elemente de Dynamics și MoGraph
Până acum nevizibil, deoarece este dezactivat ca obiect parametric prin Managerul de obiecte, obiectul peisajului va fi folosit acum ca un teren colinos. Similar cu obiectul de podea, trebuie să definim în primul rând terenul ca un obiect de coliziune. Atribuim obiectului HyperNURBS părinte prin meniul Simulare>Dinamică un Tag corp dinamic ca obiect de coliziune.
Și pentru acest obiect de coliziune, pagina coliziunii din dialogul de configurare este de importanță specială. Aici avem nevoie de forma de coliziune mesh static, pentru ca mașina să poată recunoaște mai târziu fiecare deal de pe suprafață. Similar cu obiectul de podea, aici atribuim un coeficient mare de frecare de 100%.
Hai să testăm imediat cum se descurcă mașina noastră în teren accidentat. Pentru asta, trebuie să mutăm mai întâi întreaga grup Auto pe coordonata Z în Managerul de atribute la 3000 cm. Astfel, mașina se va afla pregătită în direcția de mers și poate să se îndrepte cu viteză către teren.
După ce apăsăm butonul de redare, putem urmări cum mașina noastră de jucărie își croiește drumul prin peisajul colinos. Pentru a da scenariului un plus de dinamică, adăugăm și obstacole suplimentare.
Baza noastră pentru obstacole este deja sub forma de obiect sferic. Pentru a face ca bilele clonate să nu fie doar în calea mașinii, ci și să fie respinse, trebuie să le definim ca corpuri rigide (Rigid Body). În principiu, nu contează dacă bila în sine sau obiectul clonat primește tag-ul de corpuri dinamice (Dynamics Body-Tag). Varianta mai flexibilă este prima, deoarece astfel puteți atribui fiecărei tipuri de clonă propriile proprietăți dinamice.
Astfel, atribuim obiectului-sferic tag-ul necesar corpurilor dinamice (Dynamics Body-Tag) ca corp rigid (Rigid Body); îl găsim ca de obicei în meniul Simulare> Dinamici.
În fereastra de setări a tag-ului Dynamics Body pentru bila, pe pagina Dynamics, setăm Declanșatorul la La coliziune. Astfel, bilele nu se vor mișca de la sine neașteptat, ci vor reacționa doar atunci când mașina sau altă bilă declanșează o coliziune.
Datorită formei simple a obiectului, ne bazăm pe detectarea automată a coliziunilor; un coeficient de frecare de 80% menține bilele în mare măsură pe sol, astfel încât să se rostogolească fără să sară necontrolat pe teren.
Acum, bila are proprietăți dinamice, astfel încât o putem distribui în teren. Pentru asta, folosim un obiect clonat (Klon-Objekt) din meniul MoGraph.
Prin Managerul de obiecte asociem obiectului-sferic obiectul clonat ca clonă. Deoarece folosim o sferă parametrică care folosește centrul bilei ca punct de referință, plasarea clonelor bilei în momentul de față ar însemna că toate clonele sunt înfipte în teren la jumătate.
Pentru a preveni asta și pentru a ridica bilele în sus corespunzător cu raza, găsim în pagina Transformare a ferestrei de setări posibilitatea de a seta o compensare. Mutăm bilele în direcția Z cu 50 cm, adică raza bilei.
Setările efective pentru duplicare și distribuție a clonelor le facem pe pagina Obiect a ferestrei de setări.
Mai întâi selectăm modul Obiect; dorim să folosim obiectul peisaj (Landscape-Objekt) pentru distribuirea clonelor. Apoi tragem acest obiect peisaj menționat în câmpul corespunzător Obiect.
Distribuirea clonelor va fi pe suprafața obiectului, iar numărul poate fi stabilit de voi. Pentru a evita ca mașina să trebuiască să împingă multe bile din cale, un număr de maxim 80 ar fi recomandat.
În imaginea de mai jos puteți vedea stadiul actual în imaginea randată. Bilele au fost distribuite pe obiectul peisaj, dar sunt orientate încă în aceeași direcție. Cu un efector de tip aleator, această mică problemă poate fi rezolvată rapid.
Pentru a asigna efectorului de tip aleator obiectul clonat imediat la integrarea sa în scenă, selectăm obiectul clonat în Managerul de obiecte, înainte de a extrage efectorul de tip aleator din meniul MoGraph>Effectors.
În fereastra de setări a efectorului, pe pagina Parametri, găsim parametrii de transformare. Deoarece bilele ar trebui să fie rotite doar pe toate axele, avem nevoie doar de parametrii de unghi modificați. Un unghi de câte 90° este suficient pentru a oferi un spațiu de manevră suficient pentru diverse rotații.
O randare de test arată că bilele sunt acum distribuite pe peisaj în mod complet aleatoriu datorită efectorului de tip aleator.
Acum este momentul să eliberăm mașina noastră de jucărie și pe obstacole. Deoarece trebuie să ne așteptăm la mai multe coliziuni în viitor, merită să aruncăm o privire în setările dinamice din setările documentului, în funcție de dimensiunea sau scalarea obstacolelor.
Deoarece dimensiunea bilelor, a roților și a mașinii de jucărie sunt foarte apropiate de scalarea prestabilită și se descurcă bine cu tolleranța la coliziune, nu sunt necesare ajustări în acest exemplu al meu.
Pentru ca mașina de jucărie să nu dispară pur și simplu din câmpul vizual scurt timp după pornire, veți găsi în elementele scenei din Managerul de obiecte și o cameră țintă, care se va alinia automat cu mașina. În Expresia de aliniere, este stabilizat că trebuie să rămână concentrată pe obiectul Mașină.
O activăm făcând clic pe simbolul alb de căutare din Managerul de obiecte.
Acum puteți apăsa butonul de redare și să urmăriți mașina în timp ce traversează terenul plin de obstacole.
Integrarea unei comenzi simple pentru mașină cu XPresso
Ar fi frumos dacă mașina nu ar merge doar pe direcție dreaptă prin teren, ci dacă noi, ca utilizatori, am avea și o modalitate de control.
Pentru exemplul nostru, un mod simplu de direcționare la stânga și la dreapta ar fi suficient printr-un cursor glisant. Deși ar trebui să controlăm de fapt două obiecte (roțile sau conectorii), dar dorim doar un cursor confortabil, integrăm propriul parametru de control sub formă de date de utilizator.
Selectăm Grupul Mașină și adăugăm propriile date de utilizator prin meniul Utilizator în Managerul de atribute.
Se va deschide fereastra de Administrare a datelor de utilizator. Aici se găsesc toate datele de utilizator individuale care aparțin obiectului purtător. Noul element creat va fi denumit corespunzător Direcție și vom specifica, de asemenea, în câmpul Proprietăți cum ar trebui să fie parametrul.
Ca Interfață vom alege un cursor de tip float în unitatea de grade. Pentru a avea pași clari, alegem un paso de 1°.
Pentru a preveni imediat ca roțile să fie întoarse prea mult și să se suprapună cu mașina, limităm unghiul minim la -30° și unghiul maxim la 30°. Valoarea presetată de 0° asigură că la început roțile sunt drepte.
După ce am închis dialogul cu OK și datele de utilizator au fost create, vom găsi pe pagina lor a datele de utilizator ale mașinii noastre parametrul creat de noi Direcție, sub formă de cursor glisant așa cum ne-am dorit.
Astfel, am creat o modalitate de a controla un parametru propriu. Acum trebuie doar să îl direcționăm la locul corect în structura mașinii noastre.
O sarcină perfectă pentru XPresso. Pentru asta avem nevoie, în primul rând, de o Etichetă XPresso, pe care o atribuim cel mai simplu printr-un clic dreapta în meniul contextual din submeniul Etichete CINEMA 4D.
Ca suport pentru această Expresie, grupul nostru Mașină este evident alegerea potrivită.
Prin dublu clic pe Eticheta XPresso, deschidem Editorul XPresso. Ca primă intrare sau Nod, tragem Obiectul Nul Auto din Managerul de obiecte în fereastra Editorului XPresso.
Pentru a pune la dispoziție parametrul nostru creat Direcție ca Port pentru a fi conectat, facem clic pe butonul roșu al Porturilor de ieșire și selectăm Portul Direcție din submeniul Date de utilizator.
Prin parametrul nostru Direcție dorim să influențăm unghiurile de direcție ale Konnektori de suspensie ale roții. Pentru a putea accesa acești parametri în Editorul XPresso, ne uităm la cei doi Konnektori ai roții din față stânga și dreapta în Managerul de obiecte și tragem ambele obiecte, de asemenea, în Editorul XPresso.
Deoarece dorim să transmitem o valoare la cei doi Konnektori, avem nevoie de parametrii unghi de direcție la Portul de intrare. Pentru aceasta, facem clic pe butonul albastru al Porturilor de intrare ale nodurilor Konnektor și selectăm din submeniul Proprietăți obiect fiecare Port de unghi de direcție.
Acum trebuie doar să conectăm cele două porturi de unghi de control cu portul de direcție al mașinii. Pur și simplu trageți de la un port la celălalt apăsând butonul de mouse.
Scurtul nostru excurs în XPresso deja s-a încheiat, așa că putem închide Editorul XPresso. Pentru a nu mai căuta constant Obiectul Zero și intrarea sa de Date ale Utilizatorului pentru controlul mașinii, pur și simplu integrăm controlul cu glisorul în Afișajul Head-Up (HUD) al ferestrei editorului.
Pentru acest lucru, dați clic dreapta pe intrarea parametrului Direcție din Managerul de Atribute și selectați din meniul contextual comanda Adaugă la HUD.
Pentru a muta intrarea HUD în editor, pur și simplu dați clic pe elementul HUD ținând apăsată tasta (Ctrl)- respectiv tasta (Ctrl) și poziționați-l cu mouse-ul într-un loc potrivit.
În plus, pentru ca elementul HUD să nu fie vizibil doar atunci când mașina noastră este selectată, apelați meniul contextual corespunzător ținând apăsat butonul drept al mouse-ului și selectați din meniu opțiunea Întotdeauna.
Acum puteți da clic pe butonul de redare și să trimiteți mașina în teren în funcție de preferințele dvs. cu ajutorul glisorului. Asigurați-vă că la începutul fiecărei călătorii setați Direcția înapoi, pentru a evita supra-rotirea mașinii.
Cine dorește să transforme aventura într-o animație ulterior, pur și simplu înregistrează keyframes importante pentru fiecare valoare de direcție corespunzătoare. Distrație plăcută în călătoriile pe teren!