WERKEN MET SCULPT DEEL 21 """"""""""""""""""""""""" BEWEGINGSHIERARCHIE """"""""""""""""""" We zagen reeds hoe je een speciaal path objekt moest maken en hoe je zijn Tumbleassen kunt zetten, hoe een ander objekt aan het path kan bevestigd worden op een bepaalde plaats en plaatsgrijpt in elke frame van een animatie. Tot nu toe, hebben we het nog niet gehad over hoe een objekt aan een path bevestigd wordt. We zagen ook reeds dat objekten en delen van objekten, georganiseerd kunnen worden in een scenes hierarchie, zodat objekten aan elkaar kunnen bevestigd worden met lagere niveau's objekten. We hebben reeds een aanwijzing gegeven dat beweging ook in een hierarchie kan geplaatst worden. Je raad reeds hoe : je hoeft enkel een path in de hierarchie te plaatsen. Elk objekt dat een naam krijgt van een pathoffspring zal dat path volgen. Er bestaat een speciaal menubevel om paths een naam te geven nl. EDIT/NAME/INDICATED PATH. Vooraleer het op te roepen, duidt je een vertex op het path aan. Op de titel na, is dit requester hetzelfde als het NAME SELECTED VERTICES requester. Als je op OK klikt, krijgt het path een naam en wordt het in de hierarchie geplaatst. Indien de naam in de hierarchie een pathnaam is, dan zal het als het in het huidige slot is, het label 'PATH' getoond worden met een pijl verwijzend naar de naam. Een path verschilt lichtjes van de andere objekten in zoverre dat enkel dat ene path zijn naam krijgt. Anderzijds, als je enkele vertices een pathnaam geeft, dan zal het path uiteenvallen tot vertices in de hierarchie. Elk aantal benaamde objekten kan aan een path verbonden worden via EDIT/NAME/INDICATED VERTICES, en het zo een naam geven als nakomeling van een path. Alle nakomelingen worden als een eenheid verplaatst. Kijken we even naar dit voorbeeld : | - romp S_path --------|- vliegtuig ----------| - vleugels |- piloot | - enz... Het vliegtuig, opgebouwd uit een romp, vleugels, enz... is verbonden aan het objekt: S_path. Indien dit objekt een path is, dan zal het vliegtuig dit volgen. Het objekt 'piloot' zal eveneens dit path volgen, bewegend alsof het een deel van het vliegtuig was. Dit toont aan hoe je objekten kunt groeperen onder een enkel naam en dan deze naam verbinden met een path ofwel dat je alle delen onmiddelijk aan een path kunt verbinden. Het is enkel een gebruiksgemak. Het eerste schema is meestal gemakkelijker, maar toch moeten ze beiden toegevingen doen over de plaats waar de delen relatief tegenover elkaar en tegenover het path zullen verschijnen. We schreven reeds dat path's als een speciale soort van objekten kunnen beschouwd worden. Omdat objekten verbonden kunnen worden aan path's, kunnen path's ook met path's verbonden worden. Het "lager" path en zijn objekt zullen simpelweg het "hogere" path volgen, zoals een vlo op de rug van een hond. Dit heet 'HIERARCHISCH BEWEGEN'. Dit laat ons toe zeer moeilijke bewegingen, gemakkelijk te beschrijven. Als voorbeeld nemen we een vereenvoudigd omloopmodel van het aarde-maan-zon systeem : aardepath -----------|--aarde |--maanpath ---------maan De naam 'aardepath' werd gegeven aan een 364 vertex cirkel path rond de zon. Deze naam gaat naar het bovenste niveau van onze hierarchie. Er worden 2 objekten verbonden aan 'aardepath'. - het eerste is het aarde objekt zelf - het tweede is het 'maanpath' : dit is de naam van een 28 vertex cirkelpath rond de aarde. De maan is verbonden met het maanpath. Ik heb wel eventjes het aantal dagen per jaar en per maand vervalst. Dit laat je een soepele, herhalende 364 frame animatie maken. Je vraagt je warschijnlijk af waarom de zon niet in de hierarchie voorkomt. Dit komt omdat de zon niet beweegt. Een veel betere vraag is hoe je de twee paths kan juist centreren rond de zon en de aarde en hoe de planeten hun path juist moeten volgen. Antwoord hierop in het volgend hoofdstuk. LOCAL ORIGINS (plaatselijk begin) """"""""""""""""""""""""""""""""" Tot nog toe, vonden we het vanzelfsprekend dat als een objekt aan een path verbonden is, het langs dat path beweegt, waarbij het zich aanpast aan elke plaats van de vertex op het path. Maar wat betekent dat nu ? Wanneer onze man in de woestijn loopt, mogen we van hem verwachten dat hij op zijn path loopt, zodat de voetzolen met 1 vertex overeenkomen. Wanneer het vliegtuig langs het path beweegt, mogen we iets anders verwachten. Het punt is echter dat SA niet weet wat wij ervan verwachten, zodat we wel degelijk moeten een bepaald punt specifieren. Dit punt wordt het objekt's LOCAL ORIGIN genoemd. Dit Local Origin heeft een dubbele funktie. Het houdt het objekt op zijn path en het akteert als een pivot voor de tumble. Wanneer een objekt gemaakt wordt, dan maakt zijn Local Origin het centrum van de Sculpt Ruimte uit, het "absolute origin". Als je SA opstart, ligt dit punt in het centrum van het Tri-View. Daarom, als je eenvoudig het prgramma start en je begint een objekt te animeren, zal het objekt's Local Origin waarschijnlijk ergens naast het objekt's midden liggen. Dit volstaat meestal voor heel eenvoudige animaties. Begin je echter meerdere objekten te animeren, of objekten die moeten een tumble ondergaan of pivoteren in een bepaalde manier, dan mag je niet vergeten om het Local Origin voor elk geanimeerd objekt te plaatsen. Hoe doe je dit : eerst verplaats je de cursor naar de plaats (relatief tegenover het objekt- waar je je Local Origin wenst. Daarna selekteer je EDIT/MODIFY/LOCAL ORIGIN. Je krijgt een requester te zien, waarin je de naam van het objekt terugvindt. Deze naam verplaats je naar de 'Current Name' balk. Tenslotte, klik je op SET. => je Local Origin is nu op de plaats van de cursor. Indien, voor wat voor reden dan ook, je objekt-beweging niet is wat je ervan verwachtte, controleer dan nog maar eens zijn Local Origin. Dit kun je doen door zijn naam in de 'Current Name' balk te brengen van het Modify Local Origin requester en op SHOW te klikken. Eens je Local Origin geplaatst via SET, blijft het daar staan, ook al verander je nadien nog de geassocieerde objekt-vertices. Soms wil je echter wel eens een objekt verplaatsen en tevens zijn Local Origin mee verplaatsen. Indien je denkt dat een objekt zal geplaatst worden nadat je zijn Local Origin gezet hebt, dan kun je de Local Origin vastzetten (LOCK) op een bepaalde vertex, door deze vertex aan te duiden, en daarna het LOCK-gadget aan te klikken in plaats van het SET-gadget. Waarheen je deze vertex dan ook verplaatst in het Tri-View, het Local Origin zal dit volgen. Normaal, zal de vertex die je wenst vast te zetten, er een zijn van de Local Origin genaamde vertices, maar het hoeft niet. Dit is vooral waar bij paths die gebruikt worden in een hierarchische beweging. Indien je van plan bent om een path's Local Origin vast te zetten op een van zijn eigen vertices, kan het gebeuren dat het zijn 'ouder'-path niet volgt zoals je zou wensen, maar je kunt aan geen enkele andere vertex de pathnaam geven. In dit geval, zou het path's Local Origin waarschijnlijk vastzitten aan een vertex van een of ander objekt die op hetzelfde niveau als het path zou zijn. Ik herinner er je aan dat je enkel het Local Origin moet zetten voor objekten die bewegen en dat het Local Origin deel uitmaakt van het objekt, dus niet van het path dat het volgt. Een path heeft enkel een Local Origin nodig als het een ander path volgt. In ons planetair voorbeeld is het 'aarde-path' het hoogste in de hierarchie en beweegt niet in de ruimte. Het heeft geen Local Origin nodig. Het 'maan-path' en tevens de 'aarde'- en 'maan'-objekten bewegen allemaal en hebben dus allemaal een local origin nodig. In dit voorbeeld zou het simpelst zijn om elk van de objekten op hun beurt te selekteren. Daarna SNAP/CURSOR/TO CENTER te selekteren en SET het objekt's Local Origin. Elk van deze objekten is ofwel cirkelvormig ofwel ellipsvormig, zodat het zin heeft voor hun centrum om de path's hun spoor te laten volgen. Indien een objekt onregelmatig is, kan het bevel SNAP/CURSOR/TO CENTROID de cursor het dichst plaatsen bij het zwaartepunt. Dit hangt af van de veronderstelling dat de vertices van het objekt zo verdeeld zouden zijn als de echte objekten, wat meestal niet waar is. De meeste mensen kunnen echter leren waar het zwaartepunt van een objekt ligt. Je moet enkel het objekt opnemen en zijn evenwichtspunt zoeken. Voor een realistische beweging moet je altijd een natuurgetrouwe manier vinden van het objekt dat je aan het maken bent. Ivo Vandermarliere voor DE SAEN