Jag letar efter ett sätt att ha två separata objekt anslutna, så att när jag flyttar det första objektet rör sig det andra också. förälder används, men hur överordnar jag ett objekt?
Svar
För ett snabbt och enkelt svar, välj objektet som kommer att anslutas (underobjekt) först, välj sedan objektet som överför transformationsdata till underobjektet (överordnat objekt). Markeringsordningen är viktig, det överordnade objektet måste väljas senast så att det är aktivt objekt . Tryck nu på Ctrl P > Objekt .
Det finns många sätt att föräldrar -objekt i mixern. Du kan överordna objekt från fem olika fönster: 3D-vy, Properties Editor, Outliner, Text Editor och Console, plus det finns en skrämmande lista över olika överordnade typer.
Det visar sig att föräldraskap är en komplex prövning, så låt mig försöka förenkla det.
Av den stora listan finns det bara tre typer av föräldraskap. Dessa är Objekt , Armatur och Vertex .
Skillnaderna i de många föräldratyperna
-
Objekt är den absolut vanligaste typen av förälder. Den används i åtta av de tretton föräldrartyperna.
Varje gång två eller flera objekt väljs är föräldrartypen tillgänglig. Alla översättningar (skalningsrotation och plats) till det överordnade objektet kommer att påverka barnet. -
Armatur Deform Detta är förmodligen den mest komplicerade gruppen av föräldraskap typer. Armaturdeform är endast tillgängligt när det aktiva objektet är ett ankar. Den anger ett Objekt förälder, med det valda objektet som barn och det aktiva objektet (ankaret) som förälder. Det lägger till en Armature modifierare till det underordnade objektet, med ankaret redan inställt som modifieringsmålobjekt. Vid denna punkt kommer det inte att göra mer än en vanlig objektförälder. De tre underalternativen Tomma grupper , automatiska vikter och kuvertvikter används i riggprocessen.
-
Ben Finns bara när det aktiva objektet är en Armature. Är exakt samma som ett objektförälder, men här förvandlas barnet från ett enda ben.
På bilden nedan placerade jag ringen runt fingret, sedan valde Skift armaturen. Med armaturen nu som det aktiva objektet kan du gå in i Pose -läget och välja rätt ben. Slutligen förälder objektet till ben, med Ctrl P > Bone . -
Benrelativ Är samma som ben med skillnaden att eventuella förändringar gjord i redigeringsläge till det överordnade benet påverkar inte underobjektet.
-
Curve Deform Är endast tillgängligt när det aktiva objektet är ett kurvobjekt ( Bezier eller Nurbs kurva). Den anger ett Objekt förälder, med det valda objektet som underordnat och det aktiva objektet (kurvan) som förälder. Det lägger till en Curve -modifierare till underobjektet med kurvan som redan är inställd som modifieringsmålobjekt.
-
Följ sökväg igen är endast tillgängligt när det aktiva objektet är ett kurvobjekt. Är sätter ett Objekt förälder, samma som Curve Deform gör. Det animerar också Utvärderingstid för Bananimering på kurvobjektet.
-
Path Constraint Är det sista alternativet endast tillgängligt för kurvobjekt. Det anger inga föräldrar, utan lägger till en Follow Path begränsning till det valda objektet med begränsningens mål som det aktiva objektet (kurvan).
-
Lattice Deform Är ett specialalternativ som endast är tillgängligt när det aktiva objektet är ett gitter. Det anger gitteret som förälder och det valda objektet som barn, plus det lägger till ett gittermodifierare till det valda objektet.
-
Vertex Detta är en av de tre huvudsakliga föräldratyperna. Det skiljer sig från en objektförälder genom att endast platsinformation ges till barnet. Det är platsen för toppunktet som är föräldern. Det överordnade objektet behöver inte röra sig, men en modifierare kan ändra toppunktens position, det underordnade objektet rör sig.
-
Vertex (Triangle) Vid första anblicken kan det se ut som ett objektförälder men snarare är det exakt samma sak som en vertexförälder, förutom nu finns det 3 hörn. Från tre hörn får barnet nu plats, skala och rotation på samma sätt som i en objektförälder; med fördelen att spåra hörnpunkterna.
3D-vyn
Det vanligaste sättet att överordna objekt är i 3D-vyn med två eller flera objekt valda, tryck på Crtl P > Objekt . Observera att föräldern är aktivt objekt och att barnet är det valda objektet. Detta är detsamma som att använda menyn i 3D-vyhuvudet Objekt > Förälder > Objekt . Barnföräldrarelationsfartyg representeras i 3D-vyn med en liten streckad linje som förbinder objektets ursprung.
Här har kuben och apan redan blivit objektföräldrad. Kuben är förälder (aktivt objekt) och apan är barnet.
Outliner
Outliner är utmärkt eftersom det inte finns någon förvirring med det aktiva objektet eller på vilket sätt förälder går. Du drar helt enkelt ikonen för det önskade underordnade objektet och släpper den ovanpå det önskade överordnade objektet. Om det finns mer än ett alternativ för föräldraskap frågar mixern dig vilken du vill använda.
Egenskapsfönstret
Du kan helt enkelt välja objektet som ska vara förälder. Med den här metoden är det aktiva objektet alltid underordnat .
Men föräldraobjekt med den här metoden resulterar i mycket olika resultat från 3D-vyn eller konturen.
I bilden nedan är både kuben och konen exakt samma plats och har ingen rotation eller skala. Vänster sida är hur båda såg ut före varje föräldraskap. Jag föräldrade kuben till konen i både mitten och höger sida. Centret parenteras genom 3D-vyn, och till höger använde jag fältet i egenskapsfönstret.
Skillnaden kommer från de olika pythonkommandona (mer om det i pythonsektionen). Det som är viktigt är att när fältet används i egenskapsfönstret blir barnobjektets avstånd från världsursprunget (0,0,0) förskjutningen från föräldern. Detta visas i bilden ovan genom att kuben är 4 enheter längs konens X-axel.
Python
De sista två platserna du kan överordna objekt är Textredigeraren och konsolen . Båda dessa ger åtkomst till föräldraskap direkt via python. De två föräldrakommandona är
bpy.ops.object.parent_set()
och bpy.data.objects["child"].parent = bpy.data.objects["parent"]
Detta skript kommer att föräldra precis som 3D-vyn.
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()
Men denna rad kod
bpy.data.objects["child"].parent = bpy.data.objects["parent"]
kommer att vara föräldrar samma som att använda egenskapsfönstret. Anledningen är att egenskapsfönstret kör bpy.context.object.parent = bpy.data.objects["parent"]
, men överallt annars använder mixern parent_set()
.
Du kan dock undvika att använda bpy.ops.object.parent_set()
och låta barnobjektet förbli i sitt läge efter föräldern g. För att göra det måste du uttryckligen ställa in barnet ”s matrix_parent_inverse
till den inversa världsmatrisen för föräldern. Se koden nedan:
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()
Andra alternativ
Det finns två andra sätt att få samma typ av relation som ett objektförälder, dessa två är Begränsningens barn och Föräldrarnas ställdon .
Barns begränsning
Child of Constraint fungerar på samma sätt som en objektförälder, med den extra fördelen som följer med att vara en begränsning: animerbara, flera föräldrar på samma objekt, som bara påverkar vissa transformationer och påverkar endast vissa axlar.
Som noterats i efter att du har angett målobjektet, kommer du förmodligen att trycka på " Ställ invers " -knappen i begränsning (detta går tillbaka till samma sak som skillnaden i föräldern från fönstret proprieties vs 3D-vyn) . Nu har du ett objekt som kommer att bete sig precis som barnobjektet i en objektförälder.
En karaktär med begränsningen är att om du väljer både barnet och föräldrarna och flyttar dem kommer rörelsen på barnet vara sammansatt, vilket betyder att det kommer att röra sig dubbelt så snabbt som föräldern. Efter rörelsen trycker du helt enkelt på " Ställ invers " -knappen igen för att få barnet tillbaka till rätt plats.
Min favoritfunktion hos barnet som är begränsad är att du bara kan påverka vissa omvandlingar. Det visas i gifen ovan.
Parent Actuator
Parent Actuator, som är en logisk tegelsten, fungerar bara i spelmotorn.Det gör exakt samma sak som en vanlig förälder. Medan vanlig föräldraskap fungerar i spelmotorn (det finns några quirks ). Föräldrarnas ställdon ger fördelen att föräldern kan styras dynamiskt i spelet via logiska tegelstenar eller python.
Kommentarer
- Bra omfattande lista att återge -dirigera människor till.
- Mycket trevligt! För 3D-vyn, vad är skillnaden mellan " Objekt " och " Objekt ( Keep transform) "?
- Anson Savage, i Keep Transform behåller objektet exakt samma plats som du ordnade objektet i 3D-vyn.