Parenting Objects (Ouderschap Objecten)¶
Bij het modelleren van een complex object, zoals een horloge, kan men ervoor kiezen om de verschillende onderdelen als aparte objecten te modelleren. Om alle onderdelen als één object te laten bewegen (“het horloge”), kan één object aangewezen worden als de ouder van alle andere onderdelen. Deze andere delen worden kinderen, en elke verplaatsing, rotatie of schaal van de ouder zal ook zijn kinderen beïnvloeden.
In tegenstelling tot de meeste biologische levensvormen, heeft elk object of bot in Blender maximaal één ouder. Als een object al een ouderobject heeft en koppelt een andere ouder dan zal Blender de vorige ouderrelatie verwijderen. Wanneer het meervoud “ouders” wordt gebruikt in dit hoofdstuk, verwijst het naar de hiërarchie van ouders, dus de ouder, de grootouder, de overgrootouder, enzovoort, van een object.
Make Parent (Maak Ouderrelatie)¶
Reference (Referentie)
- Mode (Modus):
Object Mode (Objectmodus)
- Menu:
- Shortcut (Sneltoets):
Ctrl-P
Om ouderrelaties aan te maken voor objecten , selecteer ten minste twee objecten (selecteer eerst de kindobjecten en selecteer als laatste het ouderobject) en druk op Ctrl-P. Het menu Set Parent To zal verschijnen waarin één van de verschillende oudertypes geselecteerd kan worden. Als men één van de items in Set Parent To selecteert, wordt de relatie tussen kind en ouder gemaakt. De ‘ouder’ van de geselecteerde objecten wordt ingesteld op het active object, en als gevolg daarvan worden ze ‘broer en zus’.
Het pop-upmenu Set Parent To is contextgevoelig, wat betekent dat het aantal items dat wordt weergegeven kan veranderen afhankelijk van welke objecten zijn geselecteerd wanneer de sneltoets Ctrl-P wordt gebruikt.
Het verplaatsen, roteren of schalen van de ouder zal meestal ook het kind/kinderen transformeren. Het transformeren van de kinderen van de ouder heeft echter geen invloed op de ouder. Met andere woorden, de richting van de invloed is van ouder naar kind en niet van kind naar ouder.
Tip
Men kan een kindobject “terugplaatsen” naar zijn ouderobject door clearing its origin.
- Type (Type)
Blender ondersteunt veel verschillende soorten ouderrelaties, hieronder opgesomd. Naast het aanmaken van ouderrelaties van de geselecteerde objecten, voegen sommige types een Modifier of Constraint toe aan de kindobjecten, met de ouder als doelobject of activeren een ouder-eigenschap zoals Follow Path.
Object (Object)
Bone (Bot)
- Keep Transform
De huidige wereldtransformatie van het object (dus zijn absolute locatie, rotatie en schaal in de wereld) wordt berekend. De nieuwe ouder wordt ingesteld en dan wordt de Parent Inverse matrix berekend zodanig dat na het instellen van de nieuwe parent het object nog steeds op zijn vorige wereldtransformatie staat.
Hint
Gebruik de Outliner
Er is een andere manier om de ouder-kind relatie in groepen te zien en dat is door de Outliner weergave van de Outliner editor te gebruiken.
Parent Inverse (Ouderrelatie Omkeren)¶
Blender kan een ouder toewijzen zonder het kindobject te verplaatsen. Dit wordt bereikt via een verborgen matrix genaamd de Parent Inverse matrix, die tussen de transform van de ouder en het kind staat.
Wanneer objecten een ouderrelatie krijgen met Ctrl-P, wordt de Parent Inverse matrix bijgewerkt. Afhankelijk van de keuze in het Set Parent menu, worden de lokale locatie, rotatie en schaal van het object ook bijgewerkt. Zie Object Parent voor meer informatie.
De Parent Inverse matrix kan worden gewist met :ref: Clear Parent Inverse <bpy.ops.object.parent_clear>.
Notitie
Bij het instellen van de ouder via de Object Eigenschappenpaneel, wordt de Parent Inverse matrix altijd gereset. Dit kan een onverwachte sprong in de positie van het object veroorzaken. Om dit te voorkomen kan men Ctrl-P gebruiken om de nieuwe ouder in te stellen.
Object Parent (Ouderobject)¶
Object Parent is de meest algemene vorm van parenting die Blender ondersteunt. Het zal geselecteerde objecten nemen en het actieve object het ouderobject maken van alle geselecteerde objecten. Elk kindobject zal de transformaties van de ouder erven. Het ouderobject kan van elk type zijn.
Als het object een bestaande ouder heeft, wordt die eerst verwijderd. Dit verplaatst het object naar zijn eigen locatie, rotatie en schaal, zonder de invloed van de ouder.
Er zijn drie operatoren waarmee men een objectouder kan instellen. Ze verschillen in de manier waarop ze de Parent Inverse matrix en de lokale Transform van het object berekenen.
Example: Object Parent (Keep Transform)¶
Object Parent met Keep Transform zal alle vorige transformaties behouden die op hen werden toegepast van het vorige ouderobject.
Stel dat we een scène hebben die bestaat uit drie objecten, namelijk twee lege objecten genaamd “EmptyA” en “EmptyB”, en een Monkey-object (Suzanne). Fig. Scène zonder ouderrelatie. toont de drie objecten zonder parenting relaties actief op hen.
Scène zonder ouderrelatie.¶
Als men het Monkey object selecteert door LMB te klikken en vervolgens Shift-LMB klikt op “EmptyA” object en op Ctrl-P drukt en ten slotte Object selecteert in het Set Parent To pop-up menu. Dit zal ertoe leiden dat het object “EmptyA” het ouderobject wordt van het Monkey-object. Met alleen “EmptyA” geselecteerd zal het roteren/schalen/bewegen respectievelijk resulteren in het veranderen van het Monkey-object.
Schaal het object “EmptyA”, zodat de Monkey kleiner wordt en een beetje naar links beweegt.
De Monkey is het kindobject van “EmptyA”.¶
Als men alleen het Monkey object selecteert door LMB te klikken en dan Shift-LMB klikt op “EmptyB” object en druk op Ctrl-P en selecteer Object in het Set Parent To pop-up menu. Dit zal ertoe leiden dat het object “EmptyB” het ouderobject wordt van het object Monkey. Merk op dat wanneer men de ouder van de Monkey verandert, de schaal van de Monkey verandert.
De Monkey is het kindobject van “EmptyB”.¶
Dit gebeurt omdat de schaal van het Monkey-object nooit direct werd gewijzigd, de wijziging kwam tot stand omdat het het kind was van “EmptyA” waarvan de schaal werd gewijzigd. Door de ouder van de Monkey in “EmptyB” te veranderen, worden deze indirecte schaalveranderingen verwijderd, omdat de schaal van “EmptyB” niet is gewijzigd.
Dit is vaak het vereiste gedrag, maar het is soms ook nuttig dat als men het ouderobject verandert, dat het kindobject alle vorige transformaties behoudt die het kreeg van het oude ouderobject; Als we in plaats daarvan bij het veranderen van het ouderobject van de Monkey van “EmptyA” naar “EmptyB” hadden gekozen voor parenting type Object en Keep Transform hadden ingeschakeld, zou de Monkey zijn schaalinformatie behouden die het kreeg van de oude ouder “EmptyA” wanneer het wordt toegewezen aan de nieuwe ouder “EmptyB”.
De ouder van het object met Keep Transform.¶
Als men de bovenstaande beschrijving wilt volgen, is hier het blend-bestand:
Bone Parent¶
Met bot parenting kan men van een bepaald bot in een armatuur het ouderobject van een ander object maken. Dit betekent dat bij het transformeren van een armatuur het kindobject alleen zal bewegen als het specifieke bot het kindobject van beweegt.
Drie afbeeldingen van armaturen met vier botten.¶
In Fig. Drie afbeeldingen van armaturen met vier botten. waarbij het 2e bot de botouder is van het kind-object kubus. De kubus wordt alleen getransformeerd als de 1e of 2e botten dat zijn. Let op, dat het wijzigen van het 3de en 4de bot geen effect heeft op de kubus.
Om bot parenting te gebruiken, moet men eerst alle kindobjecten selecteren die u wilt parent naar een specifiek armatuurbot, dan Shift-LMB het armatuurobject selecteren en het in Poseermodus zetten en dan het specifieke bot selecteren dat u het ouderbot wilt zijn door het met LMB te selecteren. Druk op Ctrl-P en selecteer het bot uit het pop-upmenu Stel ouder in.
Nu zal het transformeren van dat bot in Poseermodus ertoe leiden dat de kindobjecten ook transformeren.
Relative Parenting¶
De relatieve parenting van botten is een optie die men kan inschakelen voor elk bot. Dit werkt op dezelfde manier als bot parenting met één verschil.
Met bot parenting als men een bot heeft gepaard aan een aantal kindobjecten en men selecteert dat bot en schakelt het over naar de Bewerkingsmodus en vervolgens het bot verplaatst; wanneer men terugschakelt naar Poseermodus op dat bot, zal het kindobject dat gepaard is aan dat bot terugklikken naar de locatie van het bot in Poseermodus.
Eén enkel armatuurbot met een child object kubus eraan geparenteerd met behulp van bot parenting.¶
In Fig. Eén enkel armatuurbot met een child object kubus eraan geparenteerd met behulp van bot parenting. toont het 1e plaatje de positie van de kubus en de armatuur voordat het bot is verplaatst in de Bewerkingsmodus. De 2e afbeelding toont de positie van de kubus en de armatuur nadat het bot is geselecteerd in Bewerkingsmodus, verplaatst en teruggeschakeld naar Poseermodus. Merk op dat het kindobject naar de nieuwe locatie van het poseerbot beweegt.
Relatief ouderschap van botten werkt anders; als men een ouderbot verplaatst in de Bewerkingsmodus, zullen de kindobjecten niet naar de nieuwe locatie van het bot bewegen wanneer men terugschakelt naar de Poseermodus.
Een enkel bot met bot als relatieve ouder van een kubus.¶
In Fig. Een enkel bot met bot als relatieve ouder van een kubus. toont het 1e plaatje de positie van de kubus en armatuur voordat het bot is verplaatst in Edit Mode. Het 2e plaatje toont de positie van de kubus en armatuur nadat het bot is geselecteerd in Edit Mode, verplaatst en teruggeschakeld naar Poseermodus. Merk op dat het kindobject niet naar de nieuwe locatie van het poseerbot beweegt.
Notitie
Bij gebruik van Ctrl-P om ouders in te stellen, zal het kiezen van “Bone” of “Bone Relative” respectievelijk de “Relative Parenting” optie van het bot wissen en instellen. Aangezien “Relative Parenting” een optie is die per bot wordt ingesteld, beïnvloedt dit in één keer alle kindobjecten van dat bot.
Vertex Parent¶
Voor objecten van het type curve, surface, mesh en lattice is er de mogelijkheid om een van de hoekpunten (vertices) of punten te gebruiken als ouder van andere objecten. Men kan een object ook ouderschaprelatie toekennen aan een enkel hoekpunt of een groep van drie hoekpunten; op die manier zullen de kind/kinderen bewegen wanneer de ouder mesh vervormd wordt.
Vertex Parent vanuit de Bewerkingsmodus¶
Selecteer in Object Mode het kind/kinderen en vervolgens het ouderobject. Tab in Bewerkingsmodus en selecteer op het ouderobject ofwel één hoekpunt dat een enkel punt definieert, of selecteer drie hoekpunten die een gebied definiëren (de drie hoekpunten hoeven geen compleet vlak te vormen; het kunnen alle drie hoekpunten van het ouderobject zijn), en druk dan op Ctrl-P en bevestig.
Op dit punt, als een enkel hoekpunt wordt geselecteerd, wordt een relatie-/ouderschapslijn getekend van het hoekpunt naar de kinderen/kinderen. Als er drie hoekpunten zijn geselecteerd, wordt er een relatie-/ouderlijn getekend van het gemiddelde middelpunt van de drie punten (van het ouderobject) naar de kinderen/kinderen. Als het ouder-mesh vervormt en de gekozen ouder -vertex/vertices bewegen, bewegen de kinderen/kinderen mee.
Vertex Parent from Object Mode¶
Vertex parenting kan worden uitgevoerd vanuit de Objectmodus, dit gebeurt net als gewone object parenting, druk op Ctrl-P in de Objectmodus en selecteer Vertex of Vertex (Driehoek).
De dichtstbijzijnde hoekpunten van elk object worden gebruikt, die voornamelijk de voorkeur hebben.
De kleine kubussen kunnen elk automatisch een ouderschapsrelatie aangaan aan meerdere van nabijgelegen vertices op de icosfeer door gebruik te maken van “Vertex (Triangle)” in het set parent context menu.¶ |
Het object opnieuw vormgeven in de Bewerkingsmodus betekent dan dat elk van de kubussen afzonderlijk zijn vertex parent volgt.¶ |
Het schalen van de bovenliggende icosfeer in Objectmodus betekent dat de kubussen van de kinderen ook worden geschaald zoals verwacht.¶ |
Met het parent contextmenu-item kunnen gebruikers snel een groot aantal vertex-ouderrelaties instellen en moeite besparen om elke vertex-ouder-kindrelatie afzonderlijk aan te maken.
Notitie
Het is in feite een soort “omgekeerde” hook </modeling/modifiers/deform/hooks>`.
Make Parent without Inverse¶
Reference (Referentie)
- Mode (Modus):
Object Mode (Objectmodus)
- Menu:
Dit stelt de ouder in en reset dan de Parent Inverse matrix en de lokale locatie van het object. Als resultaat zal het object bewegen naar de locatie van de ouder, maar zijn rotatie en schaal behouden.
- Keep Transform
De huidige wereldtransformatie van het object (dus zijn absolute locatie, rotatie en schaal in de wereld) wordt berekend. De nieuwe ouder wordt ingesteld en dan worden de lokale transformeerwaarden zo ingesteld dat na het instellen van de nieuwe ouder het object nog steeds op zijn vorige wereldtransformatie staat.
Clear Parent (Verwijder Ourderrelatie)¶
Reference (Referentie)
- Mode (Modus):
Object Mode (Objectmodus)
- Menu:
- Shortcut (Sneltoets):
Alt-P
Men kan een ouder-kind relatie verwijderen via Alt-P.
- Clear Parent (Verwijder Ourderrelatie)
Als de ouder in de groep is geselecteerd, wordt er niets gedaan. Als een kind of kinderen worden geselecteerd, worden ze losgekoppeld van de ouder, of vrijgemaakt, en keren ze terug naar hun originele locatie, rotatie en grootte.
- Clear and Keep Transformation
Bevrijdt de kinderen van de ouder en behoudt de locatie, rotatie en grootte die hen door de ouder zijn gegeven.
Zie Non-Uniforme Scale die hier van toepassing kan zijn.
- Clear Parent Inverse
In plaats van de hiërarchische ouder-kind relatie te verwijderen, wist dit de Parent Inverse matrix van de geselecteerde objecten. Met een lege matrix worden de locatie, rotatie en schaal -eigenschappen van de kinderen geïnterpreteerd in de coördinatenruimte van de ouder.
Bekende Beperkingen¶
Non-Uniform Scale¶
Een parent met niet-uniforme schaal en rotatie ten opzichte van zijn child kan een shear effect veroorzaken.
Hoewel dit wordt ondersteund door parenting, gaat de afschuining verloren wanneer de parent wordt verwijderd, omdat deze niet kan worden gerepresenteerd door locatie, schaal en rotatie.
Als Clear and Keep Transformation het object verplaatst, is niet-uniforme schaal de meest waarschijnlijke oorzaak.