In deze tutorial gaan we laten zien hoe je 3D-ballen achteraf in een filmsequentie kunt integreren. De ballen blijven echter niet statisch in de scène, maar rollen de gefilmde steeg af. Bekijk gewoon de ingesloten video (niet zichtbaar in de PDF-weergave).
Automatische Reconstructie
Net zoals bij Cinema 4D gaan zelfs zulke complexe taken als het reconstrueren van camerapositie, -oriëntatie en brandpuntsafstand grotendeels automatisch en comfortabel vanuit een filmsequentie. Hiervoor roepen we de opdracht Volledige reconstructie op in het menu Motion Tracker.
We worden nu stap voor stap door de motion-tracking-workflow geleid. Als eerste geven we de filmsequentie aan voor de reconstructie. Voor onze gezamenlijke tutorial is dit de film "Gasse.mov" uit het pakket met de werkbestanden.
Afhankelijk van de grootte en lengte van de filmsequentie - en natuurlijk van de prestaties van de computer - kan het even duren voordat ons Footage is geladen, geanalyseerd, getrackt en gereconstrueerd. De statusbalk links onderaan houdt ons ondertussen op de hoogte.
Zodra de melding 3D-reconstructie voltooid verschijnt, heeft de Motion Tracker zijn taak voltooid. De cameragegevens konden succesvol worden gereconstrueerd uit de filmsequentie.
Laten we een kijkje nemen in de 3D-editor. We zien een geanimeerde camera geplaatst op de nulpositie en een gekleurde puntenwolk, de zogenaamde Features. Deze Features zijn trackpunten die zijn opgeslagen als Null-Objects en die dienen voor de reconstructie van de cameragegevens. Groene Features geven aan dat de tracks van goede kwaliteit zijn, terwijl rode tracks minder nuttig waren voor het uitlezen van de cameragegevens. De meeste onbruikbare tracks of Features worden overigens vooraf al gefilterd vanwege een automatisch proces.
Ter beoordeling werpen we een blik in de Objectmanager. In het bovenliggende Motion Tracker-object bevinden zich de belangrijkste opdrachten en instellingen voor de tracking en de reconstructie. Als onderliggende objecten zijn de gereconstrueerde camera en de eerder genoemde Null-Objects gegroepeerd in een eigen groep Auto-Features.
De instellingendialoog van het Motion Tracker-object is onderverdeeld in de secties Footage, 2D-tracking en Reconstructie. In principe zijn dit de drie stappen van de motion tracking-workflow die automatisch zijn uitgevoerd. In het gedeelte Footage zijn alle belangrijke informatie van de door ons gekozen filmsequentie opgeslagen.
Het gedeelte 2D-tracking toont ons de instellingen die zijn gebruikt voor het reeds voltooide automatische tracking. We zullen zo meteen verdergaan met handmatig tracken, maar laten we eerst de filmsequentie samen met de trackpunten bekijken in de Editor-weergave. Hiervoor activeren we eenvoudig de gereconstrueerde camera door te klikken op het Camerapictogram in de Objectmanager.
Handmatig Tracken
Tijdens de automatische tracking-run heeft de Motion Tracker al veel opvallende punten gevonden. Aan de andere kant vallen ons zeker ook punten in de filmsequentie op die wij geschikt achten voor tracking of die we nuttig vinden. Vooral voor de daaropvolgende kalibratie of integratie van 3D-elementen is het aan te raden om door handmatig tracken extra tracks of Features te laten reconstrueren.
Wanneer we op de afspeelknop drukken om de filmsequentie af te spelen, kunnen we het pad van de trackpunten volgen. Er zijn geen uitschieters die we zouden moeten verwijderen omdat ze zich heel anders gedragen en dus storend zouden zijn.
In plaats daarvan zetten we de tijdregelaar terug naar het begin en integreren we enkele handmatige tracks via de Editor. Hiervoor klikken we met ingedrukte Ctrl-toets op de gewenste locatie in de filmsequentie.
Er verschijnt een oranje omlijnd veld met twee elkaar overlappende vierkanten. In het midden bevindt zich een kader voor de patroongrootte, de buitenste rand markeert de zoekgrootte. Met een klik op de handlers van het oranje kader rechtsonder kunnen we deze groottes aanpassen. Om het veld te verplaatsen, pakt u het gewoon in het midden vast en verplaatst u het naar de gewenste locatie.
Contrasterende overgangen zoals hier op de hoekpunten van de ingemetselde doos zijn altijd zeer dankbare trackingpunten.
Trackingpunten kunnen echter ook nuttig zijn bij latere integratie of voor de modellering van 3D-elementen. Zo heb ik bijvoorbeeld het hoekpunt van de achterdeur gezocht. Door gelijktijdig de Alt-toets ingedrukt te houden, wordt het uitsnedegebied vergroot, zodat we gemakkelijker de positionering kunnen aanpassen.
Handmatig geplaatste trackingpunten zien we in de editor gemarkeerd als turkooizen kruisen. Ik heb onder andere nog een paar extra trackingpunten specifiek langs de steeg naar boven gezet, zodat de reconstructie als 3D-object later gemakkelijker wordt.
Om deze handmatig geplaatste trackingpunten achteraf te berekenen en om te zetten in features, openen we het instellingendialoog van het Motion Tracker-object in het gebied 2D-Tracking en richten we ons eerst op de opties. Hier zien we de standaardinstellingen voor patroon- en zoekgrootte van de tracks en enkele aanvullende opties. Met de optie zoekpositie extrapolleren kunnen we nog een beetje helpen door het gebied van de zoekgrootte een beetje naar voren te verschuiven in de te verwachten bewegingsrichting.
We gaan nu naar de pagina Handmatig Tracking. In het veld tracks zien we alle door ons gemaakte trackingpunten vermeld. Als er geen van de gebruikerstracks is geselecteerd, resulteert een klik op de knop Handmatig Tracking in de berekening van alle vermelde trackingpunten, anders kunnen we trackingpunten ook afzonderlijk selecteren en apart tracken.
Wie de Object Manager aandachtig heeft gevolgd, zal hebben opgemerkt dat de onderliggende Auto-Tracks na het handmatige tracking niet meer bestaan.
We moeten na de uitgevoerde Handmatig Tracking nogmaals de 3D-reconstructie bijwerken. Dit wordt gedaan met de knop 3D-reconstructie in het gedeelte Reconstructie van het instellingendialoog van het Motion Tracker-object.
Na de succesvolle reconstructie vinden we onder het Motion Tracker-object niet alleen onze Auto-Features, maar ook de door ons handmatig geplaatste en getrackte punten als Gebruikers-Features terug.
De scène kalibreren
Zoals meteen na de automatische reconstructie al vermeld, bevindt onze gereconstrueerde camera zich momenteel nog op de positie van de oorsprong met een rechte uitlijning op de getrackte features. Dit is natuurlijk erg onhandig voor de oriëntatie en positionering bij de volgende stappen. Bovendien hebben we voor de latere animatie een correct uitgelijnde scène nodig. We moeten dus de scène kalibreren, wat gebeurt door zogenaamde Constraint-tags die we vinden in het menu Motion Tracker>Constraints.
Laten we beginnen met het vastleggen van de oorsprong van de scène; dit gebeurt met een Positie-Constraint.
Voor het bepalen van de oorsprong kunnen we nu elk willekeurig getrackt feature in onze 3D-weergave gebruiken. Nadat we de opdracht Positie-Constraint aanmaken hebben opgeroepen, hoeven we alleen nog maar op het gekozen trackingpunt te klikken. Ik heb gekozen voor het linkeronderhoekpunt van de steeg, deze ligt precies op de vloer van de gefilmde scène.
In het instellingendialoog van de Positie-Constraint-tag zien we welk feature als doel voor de Constraint dient, en daar kunnen we bepalen welke positionele waarden daar moeten liggen. Aangezien we hier de oorsprong willen instellen, laten we alle waarden op 0. staan.
Om nu nog de camerarichting en daarmee de bruikbare getrackte features in te stellen, maken we een Plane Constraint via de gelijknamige opdracht in het menu Motion Tracker.
Met dit gereedschap spannen we nu een driehoek tussen de features die in onze scène op hetzelfde vlak moeten liggen. Wie de smalle Italiaanse steegjes kent, weet dat dergelijke vlakke plaatsen eerder zeldzaam zijn, maar voor onze doeleinden zijn de getoonde drie features voldoende voor het Vlak Constraint.
In het instellingendialoog van het Vlakken Constraint moeten we nu nog aangeven op welke as het door ons getekende vlak loodrecht staat. In ons geval de Y-as.
Laten we na deze kalibratiestap eens kijken hoe de positie van de gereconstrueerde camera en de bijbehorende kenmerken eruitzien in de 3D-weergave. Door te klikken op het camerasymbool naast de camera in de Objectmanager, schakelen we snel over naar de Editor-camera. Zoals we zien, staat de camera momenteel ondersteboven, want behalve de oorsprong en de as van een wereldcoördinatenvlak hebben we geen verdere informatie ingevoerd.
Dit probleem kunnen we echter snel oplossen door in het instellingendialoogvenster van de Lagenrestricties de optie As omkeren in te schakelen. Nu staat de camera in de Editor correct gedraaid. Vanuit dit perspectief kunnen we aan de hand van de kenmerken ook het verloop van de straat volgen, die we in de volgende stap op een eenvoudige manier zullen nabouwen.
Nachbouw van de getrackte scène
Cinema 4D Release 16 biedt met de Polysteenpen een geweldige tool om een eenvoudige scène na te modelleren. We beperken ons uiteraard tot de strikt noodzakelijke delen, bij onze straat zou dat de stenen vloer, de rechter zijmuur en een klein stukje van de linkermuur zijn, zodat we de Emitter van de ballen erachter kunnen verbergen.
We schakelen hiervoor met het camerasymbool in de Objectmanager terug naar de weergave van de gereconstrueerde camera, activeren via de bewerkingsmoduspalet de Punten bewerken-modus en selecteren de Polysteenpen uit het menu Mesh>Maken.
Zodat we bij het werken met de Polysteenpen kunnen teruggrijpen op de getrackte kenmerken als hulppunten, activeren we ook via het Snapping-palet het Snapping voor Punten en Aslijnen.
Nu kunnen we beginnen met het nabouwen van de straat met de Polysteenpen. Dankzij ingeschakeld Punten- en Aslijnen-Snapping kunnen we het basismodel zelfs vanuit het cameraweergave modeleren. Ik begin bij de scène-oorsprong, die bekend staat op de vloer en aan de linkerkant van de muur van het huis.
Met een paar snelle geplaatste punten met de Polysteenpen hebben we al de basisvorm van de straat getekend.
Door op de tegengestelde buitenranden te klikken, maken we de eerste verticale sneden met de Polysteenpen. Let erop dat de punten zo nauwkeurig mogelijk de loop van de straat volgen, en pas indien nodig iets aan.
Met de opdracht Verdelen in het menu Mesh>Opdracht verdelen we de vloer van de straat om meer punten te verkrijgen voor de aanpassing van het Polysteenvormobject aan de getrackte kenmerken. Selecteer telkens het polygoonpunt dat het dichtst bij het trackpunt ligt en sleep het naar het Kenmerkobject, totdat het punt erop vastklikt.
Als je klaar bent met de vloer van de straat, teken je met de Polysteenpen de rand van de vloer naar boven toe verder. Hier zouden ook voldoende trackpunten beschikbaar moeten zijn om de huiswand rudimentair na te bootsen.
Onthoud: We hebben dit Polysteenvormobject minder nodig voor de render, maar voornamelijk voor de animatie met de ballen. Desalniettemin moeten we redelijk nauwkeurig werken, anders worden de schaduwgebieden niet correct geworpen.
We hebben nog een verstopplek nodig voor de Emitter. Het moet lijken alsof de ballen uit een zij-ingang links rollen. Schakel daarom voor een beter overzicht over naar het standaard beeld van de Editor-camera.
Vervolgens extruderen we met de Polysteenpen in de Kantbewerkingsmodus door te slepen terwijl de Ctrl-toets ingedrukt wordt gehouden de achterste rand aan de linkerkant iets omhoog.
Terug in de weergave van de gereconstrueerde camera extruderen we de voorste rand op dezelfde manier met de Polysteenpen naar de linkerkant. Achter deze uitsteeksel plaatsen we meteen de Emitter voor de ballen.
We moeten ook nog wat weg nabouwen om de vanuit de straat rollende ballen voort te zetten. Met behulp van de getrackte kenmerken kunnen we met de Polysteenpen in de Punten bewerken-modus eenvoudig delen aan de weg toevoegen door nieuwe Polygonen aan te sluiten.
Het is een goed idee om de filmsequentie tussendoor af te spelen om te controleren of er mogelijk delen zijn die niet worden gedekt door de camerabeweging of onvoldoende zijn. Hier volstaat waarschijnlijk een extra geëxtrudeerde rij polygonen.
Hier is nogmaals mijn voltooide Polygon-object voor de steeg in de volledige weergave. Linksboven is de uitstulping voor de Emitter te zien. Voor de animatie via Dynamics kunnen we dit Polygon eenvoudig verbergen, maar dan kunnen we geen schaduwen genereren voor de ballen. Daarom textureren we dit Polygon-object gewoon met een Materiaal, dat onze Footage bevat.
Textureren van de nagebouwde scène
Als je in de tussentijd al eens op de Render-knop hebt geklikt, weet je al dat ondanks het intensieve werk met de Motion Tracker er nog geen echt renderresultaat is.
De oplossing is te vinden in het instellingendialoog van de Motion Tracker. Via de knop Achtergrond-object maken creëert de Motion Tracker een nieuw achtergrondobject en projecteert dit object meteen met de Footage-textuur erop.
Precies dit voor het achtergrondobject gecreëerde Textuur-tag kunnen we nu ook direct gebruiken voor ons gemodelleerde Polygon-object. We slepen het eenvoudig in de Objectmanager omhoog met een Drag&Drop en houden daarbij de Ctrl- of Ctrl-toets ingedrukt.
Zodat ons getextureerde Polygon-object alleen schaduwen ontvangt, maar niet reageert op verlichting of schaduwen werpt, wijzen we het in de Objectmanager via het Contextmenu met de rechtermuisknop uit het menu van de CINEMA 4D Tags een Render-tag toe.
In het instellingendialoog van de Render-tag schakelen we de optie Schaduw werpen uit, terwijl we de optie Achtergrond-Compositing inschakelen. Zo voegt het Polygon-object zich onopvallend zoals gewenst in de scène en staat het klaar om geschikte schaduwen te werpen.
Een blik op het 3D-weergave vanuit het perspectief van de gereconstrueerde camera toont dat de Footage-texturen nauwkeurig op elkaar zijn afgestemd. Dit wordt verzekerd door het Textuur-tag met de projectiemethode Frontaal-Mapping.
Integratie van rollende ballen via een deeltjessysteem
Met een klein deeltjessysteem laten we nu ballen door de steeg rollen. Als je het deeltjessysteem met de bal niet zelf wilt bouwen, kun je het vinden in het document "PSD_C4D_R16_Motion_Tracker_start.c4d" onder de werkbstanden om te laden.
Het standaard deeltjessysteem van Cinema 4D is hier volledig voldoende. Laten we dus eerst een Emitter uit het menu Simuleren>
Deeltjessysteem in de scène plaatsen.
Als deeltje creëren we via het menu of de palet van de Basics een Bal-object met de getoonde eigenschappen en voegen het toe aan de Objectmanager bij de Emitter.
De gefilmde scène is in de Toscaanse stad Volterra ontstaan. In vrijwel elke tweede winkel in het stadscentrum zijn kunstwerken van albast te koop. Het hier getoonde materiaal moet met zijn patroon een beetje aan dit materiaal herinneren.
In het Kleur-kanaal heb ik daarom de Noise-Shader Elektrisch gekozen en als tweede kleur naast Wit een lichtgroenachtig grijs ingesteld. De wereldwijde grootte staat op 500%, zodat de natuurlijke nerf goed zichtbaar is.
Voor het Reflectiviteits-kanaal heb ik de oude Standaard hooglicht en de oude Reflectie als lagen met de getoonde instellingen toegevoegd. Hoewel dit materiaal echt heel eenvoudig is opgebouwd, komt het relatief dicht in de buurt van de gewenste indruk van albast.
Nadat nu ook de deeltjes of ballen getextureerd zijn, kunnen we ons richten op de configuratie van de Emitter. In het instellingendialoog geven we een lage Geboortesnelheid van 3 op, zodat de steeg niet overstroomd wordt met ballen. De Emissie moet beginnen bij beeld 0, bij beeld 450 moet de productie eindigen, zodat alle ballen tegen het einde van de filmsequentie de steeg af konden rollen.
Voor de Levensduur hebben we genoeg aan 200 beelden, de ballen hebben niet langer nodig om hun weg door de steeg af te leggen. Een Snelheid van 200 cm geeft de ballen de nodige schop, maar we laten door de Variatie van 50% wat ruimte voor afwijkingen.
Opzetten van de Dynamics-simulatie
Om de uitgezonden ballen aan onze fysieke simulatie te laten deelnemen, hebben ze een Dynamics Body-Tag nodig als Star Lichaam. We wijzen dit toe aan het Bal-object via het menu Tags>Simulatietags van de Object Manager of via het Contextmenu met de rechtermuisknop.
In het instellingendialoog van het Dynamics Body-Tag kunnen we de standaardwaarden op de gebieden Dynamics en Collision behouden. Alleen op de Massa-pagina stellen we een eigen massa van 20 in, zodat de ballen ook zwaar genoeg lijken.
Ook het Polygon-object van onze gemodelleerde straat heeft een Dynamics Body-Tag nodig, echter alleen om als vloer te dienen voor de botsing van de ballen. Daarom geven we dit Polygon-object een Dynamics Body-Tag van het type Collision object.
Hier is ook slechts een kleine aanpassing nodig in het instellingendialoog van het Dynamics Body-Tag. De parameters op de gebieden Dynamics en Massa blijven op de standaardwaarden, terwijl we op de pagina Collision als Vorm het Statisch Mesh selecteren. Bij de zeer specifieke vorm van de gemodelleerde straat zou anders geen correcte botsing mogelijk zijn.
Om te voorkomen dat alle ballen dezelfde grootte hebben, maken we gewoon twee of meer duplicaten van de al ingestelde bal aan en passen we hun Radius aan. Ik heb in mijn versie nog een bal met een diameter van 10 cm en een bal met een diameter van 22 cm aangemaakt.
Positioneren van het deeltjessysteem
Het deeltjessysteem is nu volledig operationeel, dus we hoeven het alleen nog maar op de juiste plaats in de scène te positioneren. We kunnen dit het beste doen door de gereconstrueerde camera uit te schakelen en in de standaard editorweergave te werken.
We hebben al ruimte gecreëerd voor de Emitter tijdens het modelleren van de gang. We positioneren het gewoon net boven de vloer van de gang achter de uitstulping en roteren het zodat het zijn deeltjes via de Z-as in de gang kan uitstoten.
Eenmaal terug in de weergave van de gereconstrueerde camera is het nu tijd om de fysieke animatie te controleren. Met een druk op de afspeelknop starten we de animatie en kijken we of alle elementen zoals verwacht functioneren.
Opzetten van schaduwen en verlichting
Zoals jullie al aan de titel van deze stap hebben gemerkt, gaan we eerst zorgen voor de schaduwen die onze ballen op de straat en tegen de muur werpen. Aangezien er in deze scène grotendeels indirect licht is, genereren we de schaduwgebieden bij de ballen via het render-effect Ambient Occlusion. We openen hiervoor de Rendervoorkeuren via het menu Rendern …
… en halen daar via de knop Effecten in de linker kolom het render-effect Ambient Occlusion naar onze scène.
De instellingen voor dit render-effect laten we op de standaardwaarden staan, alleen de zwarte punt van de gradiënt bij de parameter Kleur trekken we iets naar rechts om de schaduwing iets te versterken.
Met een testrendering kunnen we het effect van de Ambient Occlusion meteen controleren. Onder de ballen ontstaat een mooie schaduw op de straat, dit kunnen we in principe zo laten.
De ballen zijn echter nog niet goed geïntegreerd in de scène, want hoewel ze zich deels in een straat bevinden, worden alle ballen gelijkmatig verlicht. Met een paar lichtbronnen kunnen we dit veel authentieker maken.
Achteraan in de gang hebben we direct zonlichtinval. Het zou daarom passend zijn als ook de vers uitgestoten ballen van bovenaf worden verlicht. We halen daarvoor een Spot-lichtbron uit de palet van Lichtobjecten en stellen de buitenkantshoek van de spot in op 40°. De spot helpt ons om de verlichting alleen op dit punt boven in de gang te laten werken.
Schaduwen hebben we al behandeld met het render-effect Ambient Occlusion, dus daar hoeven we ons niet meer mee bezig te houden bij de lichtbronnen.
De uitlijning en positionering van deze eerste lichtbron gebeuren opnieuw via de standaard editorcamera. We plaatsen het Spot-licht direct boven de plek waar de Emitter de ballen de steeg in laat rollen.
Een tweede lichtbron moet de rollende ballen van onderen in de steeg ontvangen. In principe bootsen we dus de schuine lichtinval in de steeg na, zodat de ballen realistisch tussen de twee lichtbronnen niet direct verlicht worden.
Hier gebruiken we ook een Spot-lichtbron met een buitenhoek van 50°, om de lichteffecten nauwkeurig te kunnen afstemmen. Met een lichtblauwe kleur bootsen we ook het blauw van de lucht enigszins na.
Zoals eerder vermeld, willen we met dit tweede Spot-licht de schuine lichtinval in de steeg simuleren. We positioneren daarom de lichtbron een eindje boven de scène en richten deze analoog aan de filmsequentie iets naar rechts.
Met een paar extra Punt-lichtbronnen simuleren we nu het indirecte licht dat van de muren en de overkant van de straat op de ballen valt. De eerste van de lichtbronnen krijgt een gelige kleur met een Intensiteit van 60%. Highlights zijn niet nodig voor deze verlichting. We positioneren het rechts iets verschoven aan het onderste uiteinde van de steeg, waar het geel van de muur het meest opvalt.
De tweede van de Punt-lichtbronnen krijgt een iets zwakker geelachtig licht. Ook dit licht moet geen Highlights produceren, omdat het alleen het indirecte licht van de linkermuur moet simuleren. Dus plaatsen we deze lichtbron ongeveer in het midden aan de linkerkant van de steeg.
De laatste van de drie Punt-lichtbronnen dient als het ware als vullicht en moet de neerrollende ballen iets van de rechterkant verlichten. We gebruiken hier een lichtblauwe kleur met een Intensiteit van iets meer dan 50%. Ook hier laten we de Highlights achterwege, want ook dit licht moet alleen de indirecte verlichting weergeven.
Tenslotte starten we de simulatie opnieuw en controleren we onze verlichting op een moment waarop de ballen zich in alle drie de verlichtingsstations bevinden. Bovenaan zorgt onze Spot-lichtbron voor het licht van boven, terwijl de ballen onderaan bij de overgang naar de lichtinval van onderen door de onderste Spot-lichtbron worden opgevangen en verlicht. In het midden van de steeg ontvangen de ballen zoals gewenst maar weinig licht.
Met deze laatste stappen voor fijnafstemming is de integratie van de neerrollende ballen via match-moving voltooid en kunnen we het renderen van de complete animatie starten.