Hoe kan ik “ bovenliggende ” objecten?

Ik “ben op zoek naar een manier om twee afzonderlijke objecten met elkaar te verbinden, zodat wanneer ik het eerste object verplaats, het tweede ook zal bewegen. De term parent wordt gebruikt, maar hoe kan ik een object ouder maken?

Answer

Selecteer voor een snel en eenvoudig antwoord het object dat wordt eerst verbonden (onderliggend object) en selecteer vervolgens het object dat transformatiegegevens naar het onderliggende object (bovenliggend object) zal overdragen. De volgorde van selectie is belangrijk, het bovenliggende object moet als laatste worden geselecteerd, zodat het de actief object . Druk nu op Ctrl P > Object .


Er zijn vele manieren om bovenliggende -objecten in blender te gebruiken. U kunt bovenliggende objecten uit vijf verschillende vensters: De 3D-weergave, Eigenschappeneditor, Outliner, Teksteditor en Console; plus er is een ontmoedigende lijst met verschillende oudertypen.
lijst met alle p geen opties
Het lijkt erop dat ouderschap een complexe beproeving is, dus laat me proberen het te vereenvoudigen.
Van die grote lijst zijn er eigenlijk maar drie soorten ouderschap. Dat zijn Object , Armature en Vertex .

De verschillen in de vele soorten ouderschap

  • Object Is verreweg het meest voorkomende type ouder. Het wordt gebruikt in acht van de dertien ouderschapstypen.
    Elke keer dat twee of meer objecten worden geselecteerd, is het object-ouderschapstype beschikbaar. Elke vertaling (rotatie van de schaal en locatie) naar het bovenliggende object heeft effect op het kind.

  • Armature Deform Dit is misschien wel de meest gecompliceerde groep van ouderschap soorten. Ankervervorming is alleen beschikbaar als het actieve object een anker is. Het stelt een ouder Object in, met het geselecteerde object als het kind en het actieve object (de armatuur) als de ouder. Het voegt een Armature -modificator toe aan het onderliggende object, waarbij het anker al is ingesteld als het doelobject van de modifier. Op dit punt zal het niets meer doen dan een reguliere objectouder. De drie subopties Lege groepen , automatische gewichten en envelopgewichten worden gebruikt in het riggingproces.

  • Bot Is alleen beschikbaar als het actieve object een armatuur is. Is precies hetzelfde als een objectouder, maar hier wordt het kind getransformeerd van een enkel bot.
    In de onderstaande afbeelding heb ik de ring rond de vinger, en Shift selecteerde de armature. Met de armature nu als het actieve object kun je naar de Pose -modus gaan en de juiste bone selecteren. bone, met Ctrl P > Bone . voorbeeldgebruik van het type botouder

  • Botrelatief Is hetzelfde als bot met het verschil dat eventuele veranderingen gemaakt in bewerkingsmodus naar het bovenliggende bot heeft geen effect op het onderliggende object.

  • Curve Deform Is alleen beschikbaar als het actieve object een curve-object is ( Bezier- of Nurbs-curve). Het stelt een Object ouder in, met het geselecteerde object als het kind en het actieve object (de curve) als de ouder. Het voegt een Curve modificator toe aan het onderliggende object met de curve al ingesteld als het doelobject van de modifier.

  • Volg pad is weer alleen beschikbaar als het actieve object een curve-object is. Het stelt een Object bovenliggend object in, hetzelfde als de Curve Deform. Het animeert ook de Evaluation Time voor de Padanimatie op het curve-object.
    eigenschappenvenster met het curvetabblad met de evaluatietijd gemarkeerd

  • Padbeperking Is de laatste optie die alleen beschikbaar is voor kromme-objecten. Het stelt geen ouders in, maar voegt een Volg pad -beperking toe aan het geselecteerde object met de beperking doel als het actieve object (de curve).

  • Lattice Deform Is een speciale optie die alleen beschikbaar is als het actieve object een rooster. Het stelt het rooster in als de ouder en het geselecteerde object als het kind, plus het voegt een Lattice-modifier toe aan het geselecteerde object.

  • Vertex Dit is een van de drie belangrijkste ouderschapstypen. Het verschilt van een objectouder doordat alleen locatie-informatie aan het kind wordt gegeven. Het is de locatie van het hoekpunt dat de ouder is. Het bovenliggende object hoeft niet te worden verplaatst, maar een modifier kan de positie van het hoekpunt wijzigen, het onderliggende object zal verplaatsen.

  • Vertex (Triangle) Op het eerste gezicht lijkt het misschien hetzelfde als een ouder van een object, maar het is precies hetzelfde als een ouder van een hoekpunt, behalve dat er nu 3 hoekpunten zijn. Van de drie hoekpunten krijgt het kind nu dezelfde locatie, schaal en rotatie als in een bovenliggende object; met het voordeel van het volgen van de hoekpunten.

De 3D-weergave

De meest gebruikelijke manier om bovenliggende objecten te maken is in de 3D-weergave met twee of meer geselecteerde objecten, druk op Crtl P > Object . Merk op dat de ouder het actieve object is en het kind het geselecteerde object. Dit is hetzelfde als het menu gebruiken in de 3D-weergavekoptekst Object > Bovenliggend > Object . Onderliggende ouderrelaties worden in de 3D-weergave weergegeven door een kleine stippellijn die de oorsprong van het object met elkaar verbindt. Ouder instellen via snelkoppeling in 3D-weergave
Hier zijn de kubus en de aap al Object-ouder. De kubus is de ouder (actieve object) en de aap is het kind.

De outliner

De outliner is geweldig omdat er geen verwarring is met het actieve object, of op welke manier de ouder gaat. U sleept eenvoudig het pictogram van het gewenste onderliggende object en zet het neer op het gewenste bovenliggende object. Als er meer dan één optie is voor ouderschap, zal blender u vragen welke u wilt gebruiken. geanimeerde gif die het ouderschapsproces laat zien in de outliner

Het eigenschappenvenster

Je kunt eenvoudig het object kiezen dat de ouder zal zijn. Bij gebruik van deze methode is het actieve object altijd het kind .
properties editor-object tabblad ouderinstelling gemarkeerd
Ouderobjecten die deze methode gebruiken, resulteren echter in zeer verschillende resultaten dan de 3D-weergave of outliner.
In de afbeelding hieronder bevinden zowel de kubus als de kegel zich op exact dezelfde plaats , en hebben geen rotatie of schaal. De linkerkant is hoe beide eruit zagen vóór het ouderschap. Ik heb de kubus aan de kegel in het midden en aan de rechterkant gekoppeld. Het centrum wordt beheerd via de 3D-weergave en aan de rechterkant heb ik het veld in het eigenschappenvenster gebruikt. verschil tussen de verschillende opvoedingsopties
Het verschil komt van de verschillende Python-opdrachten (meer daarover in de python-sectie). Wat belangrijk is, is dat wanneer het veld in het eigenschappenvenster wordt gebruikt, de afstand van het onderliggende object tot de wereldoorsprong (0,0,0) de offset van de ouder wordt. Dat wordt in de afbeelding hierboven weergegeven doordat de kubus 4 eenheden is langs de X-as van de kegel.

Python

De laatste twee plaatsen waar u bovenliggende objecten kunt zijn, zijn de Text Editor en de Console . Beide geven rechtstreeks toegang tot ouderschap via python. De twee ouderschapscommandos zijn

bpy.ops.object.parent_set() en bpy.data.objects["child"].parent = bpy.data.objects["parent"]

Dit script zal ouder worden, net als de 3D-weergave.

import bpy bpy.data.objects["child"].select = True bpy.data.objects["parent"].select = True bpy.context.scene.objects.active = bpy.data.objects["parent"] bpy.ops.object.parent_set() 

Deze regel code

bpy.data.objects["child"].parent = bpy.data.objects["parent"] 

zal hetzelfde ouderlijk zijn als bij het gebruik van het eigenschappenvenster. De reden hiervoor is dat het eigenschappenvenster bpy.context.object.parent = bpy.data.objects["parent"] draait, maar overal gebruikt blender parent_set().

U kunt echter het gebruik van bpy.ops.object.parent_set() vermijden en ervoor zorgen dat het onderliggende object in zijn positie blijft na parentin g. Om dat te doen, moet je het kind “s matrix_parent_inverse expliciet instellen op de inverse wereldmatrix van de ouder. Zie de onderstaande code:

parent = bpy.data.objects.get("parent") child = bpy.data.objects.get("child") if child: child.parent = parent if parent: child.matrix_parent_inverse = parent.matrix_world.inverted() 

Andere opties

Er zijn twee andere manieren om hetzelfde type relatie te krijgen als een ouder object, deze twee zijn de Child Of Constraint en de Parent Actuator .

Child Of Constraint

De Child Of Constraint werkt hetzelfde als een objectouder, met als bijkomend voordeel dat het een beperking is: animatible, meerdere ouders op hetzelfde object, die alleen bepaalde transformaties beïnvloeden en alleen bepaalde assen.
Zoals opgemerkt in de handleiding na het specificeren van het doelobject, wilt u waarschijnlijk op de knop " Set Inverse " drukken in de beperking (dit gaat terug op hetzelfde als het verschil in de ouder van het eigendomsvenster versus de 3D-weergave)Nu heb je een object dat zich net als het onderliggende object in een ouderobject zal gedragen.
Een eigenaardigheid met de beperking, is dat als je zowel het kind als het ouderobject selecteert en ze verplaatst, de beweging van het kind zal samengesteld zijn, wat betekent dat het twee keer zo snel zal bewegen als de ouder. Na de beweging druk je gewoon nogmaals op de knop " Set Inverse " om het kind terug te brengen naar de juiste locatie.
geanimeerde gif met het Child Of Constraint

Mijn favoriete kenmerk van het child of constraint is dat je alleen bepaalde transformaties kunt beïnvloeden. Dat wordt gedemonstreerd in de bovenstaande gif.

Parent Actuator

De Parent Actuator, die een logicablok is, werkt alleen in de game-engine.Het doet precies hetzelfde als een gewone ouder van een object. Terwijl regulier ouderschap werkt in de game-engine (er zijn enkele eigenaardigheden ). De ouderactuator geeft het voordeel dat de ouder dynamisch kan worden bestuurd in het spel, via logicabakstenen of python.

Opmerkingen

  • Goede uitgebreide lijst om te re -direct mensen naar.
  • Heel leuk! Wat is voor de 3D-weergave het verschil tussen " Object " en " Object ( Keep transform) "?
  • Anson Savage, in Keep Transform behoudt het object exact dezelfde locatie als waar je het object in de 3D-weergave hebt gerangschikt.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *