Jeg leder efter en måde at få to separate objekter til at være forbundet, så når jeg flytter det første objekt, bevæger det andet sig også. Udtrykket forælder bruges, men hvordan forældrer jeg et objekt?
Svar
For et hurtigt og simpelt svar skal du vælge det objekt, der vil først blive tilsluttet (underordnet objekt), og vælg derefter det objekt, der vil overføre transformationsdata til underobjektet (overordnet objekt). Markeringsrækkefølgen er vigtig, det overordnede objekt skal vælges sidst, så det er aktivt objekt . Tryk nu på Ctrl P > Objekt .
Der er mange måder at forældre objekter i blender. Du kan overordne objekter fra fem forskellige vinduer: 3D-visning, Properties Editor, Outliner, Text Editor og Console, plus der er en skræmmende liste over forskellige overordnede typer.
Det sømmer, at forældre er en kompleks prøvelse, så lad mig prøve at forenkle det.
Ud af den store liste er der kun tre typer forældre. Disse er Objekt , Armatur og Vertex .
Forskellene i de mange forældretyper
-
Objekt er langt den mest almindelige type forælder. Det bruges i otte af de tretten forældretyper.
Hver gang der vælges to eller flere objekter, er objekttypen tilgængelig. Enhver oversættelse (skalerotation og placering) til det overordnede objekt påvirker barnet. -
Armatur Deform Dette er uden tvivl den mest komplicerede gruppe af forældre typer. Armature Deform er kun tilgængelig, når det aktive objekt er en Armature. Det indstiller en Objekt forælder med det valgte objekt som barn og det aktive objekt (armaturet) som forælder. Det tilføjer en Armature -modifikator til underordnet objekt, hvor ankeret allerede er indstillet som modifikatørens målobjekt. På dette tidspunkt vil det ikke gøre mere end en almindelig objektforælder. De tre underindstillinger Tomme grupper , Automatiske vægte og Envelop-vægte bruges i rigningsprocessen.
-
Knogle Er kun tilgængelig, når det aktive objekt er en armatur. Er nøjagtigt det samme som en objektforælder, men her transformeres barnet fra en enkelt knogle.
På billedet nedenfor placerede jeg ringen omkring fingeren, så valgte Skift armaturet. Med armaturet nu som det aktive objekt kan du gå ind i Pose -tilstand og vælge den rigtige knogle. Til sidst forældre objektet til knogle, med Ctrl P > Bone . -
Bone Relative Er det samme som ben med den forskel, at eventuelle ændringer lavet i redigeringstilstand til overordnet knogle påvirker ikke underobjektet.
-
Curve Deform Er kun tilgængeligt, når det aktive objekt er et kurveobjekt ( Bezier eller Nurbs kurve). Det indstiller en forælder Objekt med det valgte objekt som barn og det aktive objekt (kurven) som forælder. Det tilføjer en Curve -modifikator til underordnet objekt med kurven, der allerede er indstillet som modifikatorens målobjekt.
-
Følg sti igen er kun tilgængelig, når det aktive objekt er et kurveobjekt. Er angiver en Objekt forælder, det samme som Curve Deform gør. Det animerer også Evalueringstid for Sti-animation på kurveobjektet.
-
Sti-begrænsning Er den sidste mulighed, der kun er tilgængelig for kurveobjekter. Den indstiller ikke nogen forældre, i stedet tilføjer den en Følg sti -begrænsning til det valgte objekt med begrænsningens mål som det aktive objekt (kurven).
-
Gitterdeformering Er en speciel mulighed, der kun er tilgængelig, når det aktive objekt er et gitter. Det indstiller gitteret som forælder og det valgte objekt som barn, plus det tilføjer et gittermodifikator til det valgte objekt.
-
Vertex Dette er en af de tre hovedtyper af forældre. Det adskiller sig fra en objektforælder ved, at kun placeringsoplysninger gives til barnet. Det er placeringen af toppunktet, der er forælder. Det overordnede objekt behøver ikke at bevæge sig, men en modifikator kan ændre toppunktets position, det underordnede objekt bevæger sig.
-
Vertex (Triangle) Ved første øjekast ser det måske ud som en objektforælder, men snarere er det nøjagtigt det samme som en toppunktforælder, undtagen nu er der 3 hjørner. Fra throes tre hjørner får barnet nu placering, skala og rotation samme som i en objektforælder; med fordelen ved at spore hjørnerne.
3D-visningen
Den mest almindelige måde at forældreobjekter er i 3D-visningen med to eller flere objekter valgt, tryk på Crtl P > Objekt . Bemærk, at forældrene er det aktive objekt , og at barnet er det valgte objekt. Dette er det samme som at bruge menuen i 3D-visningshovedet Objekt > Forælder > Objekt . Underordnede forholdsskibe til børn er repræsenteret i 3D-visningen med en lille stiplet linje, der forbinder objektenes oprindelse.
Her er terningen og aben allerede blevet objektparent. Terningen er forælder (aktivt objekt) og abe er barn.
Outliner
Outliner er fantastisk, fordi der ikke er nogen forveksling med det aktive objekt, eller hvilken vej forælder går. Du trækker blot ikonet for det ønskede underobjekt og slipper det oven på det ønskede overordnede objekt. Hvis der er mere end en mulighed for forældre, vil blenderen spørge dig, hvilken du vil bruge.
Egenskabsvinduet
Du kan blot vælge det objekt, der skal være forælder. Ved hjælp af denne metode er det aktive objekt altid underordnet .
Men forældreobjekter, der bruger denne metode, resulterer i meget forskellige resultater fra 3D-visningen eller outliner.
På billedet nedenfor er både terningen og keglen nøjagtigt det samme sted og har ingen rotation eller skala. Venstre side er, hvordan begge så ud før enhver forældre. Jeg parenterede terningen til keglen i både midten og højre side. Centret forældres gennem 3D-visningen, og til højre brugte jeg feltet i egenskabsvinduet.
Forskellen kommer fra de forskellige python-kommandoer (mere om det i pythonsektionen). Det, der er vigtigt, er, at når man bruger feltet i egenskabsvinduet, bliver barnobjektets afstand fra verdensoprindelsen (0,0,0) forskydningen fra forældren. Det vises i billedet ovenfor ved at terningen er 4 enheder langs keglens X-akse.
Python
De sidste to steder, du kan overordne objekter, er Teksteditor og Konsol . Begge disse giver adgang til forældre direkte via python. De to forældrekommandoer er
bpy.ops.object.parent_set()
og bpy.data.objects["child"].parent = bpy.data.objects["parent"]
Dette script bliver overordnet ligesom 3D-visningen.
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()
Dog denne linie kode
bpy.data.objects["child"].parent = bpy.data.objects["parent"]
vil være det samme som at bruge egenskabsvinduet. Årsagen er, at egenskabsvinduet kører bpy.context.object.parent = bpy.data.objects["parent"]
, men overalt ellers bruger blender parent_set()
.
Du kan dog undgå at bruge bpy.ops.object.parent_set()
og lade barnets objekt forblive i sin position efter forælder g. For at gøre det bliver du eksplicit indstillet til barnet “s matrix_parent_inverse
til den modsatte verdensmatrix for forældrene. Se koden nedenfor:
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()
Andre muligheder
Der er to andre måder at få den samme type forhold som en objektforælder, disse to er Child of Constraint og Parent Actuator .
Child of Constraint
The Child Of Constraint fungerer det samme som en objektforælder med den ekstra fordel, der følger med at være en begrænsning: animerbare, flere forældre på det samme objekt, der kun påvirker visse transformationer og kun påvirker visse akser.
Som bemærket i manual efter angivelse af målobjektet, vil du sandsynligvis trykke på " Indstil invers " knappen i begrænsning (dette går tilbage til den samme ting som forskellen i forælderen fra vinduet med proprietærer vs 3D-visningen) . Nu har du et objekt, der vil opføre sig ligesom barnobjektet i en objektforælder.
Et særpræg med begrænsningen er, at hvis du vælger både barnet og forældrenes objekter og flytter dem, vil bevægelsen på barnet være sammensat, hvilket betyder at den bevæger sig dobbelt så hurtigt som forældrene. Efter bevægelsen skal du blot trykke på " Indstil omvendt " igen for at bringe barnet tilbage til korrekt placering.
Min favoritfunktion af child of constraint er, at du kun kan påvirke bestemte transformationer. Dette demonstreres i gifen ovenfor.
Parent Actuator
Parent Actuator, der er en logisk mursten, fungerer kun i spilmotoren.Det gør nøjagtigt det samme som en almindelig objektforælder. Mens almindelig forældre fungerer i spilmotoren (der er nogle quirks ). Forældreaktuatoren giver fordelen, at forældrene kan styres dynamisk i spillet via logiske klodser eller python.
Kommentarer
- God omfattende liste at genoprette -diriger folk til.
- Meget rart! Hvad er 3D-visningen, hvad er forskellen mellem " Objekt " og " Objekt ( Keep transform) "?
- Anson Savage, i Keep Transform beholder objektet nøjagtigt den samme placering som du arrangerede objektet i 3D-visningen.