Åsidosättande av bibliotek

Library Overrides är ett system som är utformat för att göra det möjligt att redigera länkad data, samtidigt som den hålls synkroniserad med den ursprungliga biblioteksdatan. De flesta typer av länkade datablock kan åsidosättas, och egenskaperna för dessa åsidosättningar kan sedan redigeras. När biblioteksdata ändras kommer de oförändrade egenskaperna för det åsidosatta blocket att uppdateras i enlighet med detta.

Observera

Det gamla proxysystemet har utgått i Blender 3.0 och tas helt bort i Blender 3.2. Automatisk konvertering från proxies till biblioteksöverstyrningar sker när en blend-fil laddas, men resultat på komplexa tecken är inte garanterade och kan behöva manuella korrigeringar.

Bibliotek åsidosätter stöd:

  • Flera oberoende åsidosättningar av samma länkade data (t.ex. att samma karaktär förekommer flera gånger i samma scen).

  • Lägga till nya modifierare och begränsningar, var som helst i stacken.

  • Rekursiv kedjning av åsidosättanden (dvs. länka och åsidosätta åsidosättanden från en annan biblioteksfil etc.).

Observera

Det finns kända problem som måste lösas. Se huvuduppgiften för projektet” för mer information.

Varning

I de flesta fall bevaras data för biblioteksöverskrivningar även om referenslänkade data förloras (t.ex. om biblioteksfilen inte längre är tillgänglig eller om den flyttas), men det finns vissa undantag.

Den viktigaste är förmodligen poserade (men inte animerade) armaturobjekt, när deras Armature obdata i sig inte åsidosätts. Posebenen i ett armaturobjekt är helt kopplade till benen i dess Armature obdata, om den senare försvinner, förloras posebenen definitivt.

Observera

Korrekt layout för samlingar är viktigt

För att biblioteksöverskrivningar ska fungera bra är det mycket bättre om alla de samlingar som karaktären behöver är barn till roten (länkad och instantierad), så att det finns en tydlig hierarki. Annars kan det hända att vissa data inte automatiskt åsidosätts på rätt sätt och att andra operationer blir mindre tillförlitliga.

Åsidosätt hierarkier

Hierarki är ett mycket viktigt begrepp att förstå när man arbetar med biblioteksöverskrivningar. I Blender är en verklig tillgång (en karaktär, en rekvisita, en uppsättning etc.) nästan aldrig gjord av ett enda datablock, utan är snarare en grupp datablock med beroendeförhållanden till varandra. En karaktär har t.ex. vanligtvis ett armaturobjekt, flera geometriobjekt, rig-kontrollobjekt, objektdata för alla dessa objekt, material, texturer osv.

Dessa relationer kan representeras som ett träd, med ett rotdatablock som ”länkar in” alla sina beroenden, rekursivt. När det gäller biblioteksöverskrivningar är roten i hierarkin vanligtvis också det datablock som är direkt länkat när tillgången importeras (vanligtvis en samling).

Detta hierarkikoncept kan också ses som ett slags supermetadata-block. Det är viktigt när det finns flera överskrivningar av samma länkade data, eftersom det gör det möjligt att tydligt identifiera ett visst datablock till en överskrivning och inte lämna några oklarheter till processer som påverkar hela hierarkin (t.ex. resynkronisering av överskrivningar med deras länkade data). Det gör det också möjligt att dela relationer mellan datablock i olika hierarkier, som en föräldraskapsrelation mellan två olika overrides av samma tecken.

Animering och åsidosättande

På grund av den nuvarande utformningen av animationsdata i Blender kan det som är redigerbart i overrides animationer ändras kraftigt beroende på om animationsdata redan definierats i det länkade referensdatablocket. Animeringsdata skapas för ett datablock om det animeras med keyframes eller genom drivrutiner.

I allmänhet kan en override göra mycket mer med sina animationsdata om det inte finns några animationsdata i dess länkade referensdatablock.

Nyckelramar (även kallade F-kurvor)

Keyframed animation hör till ett annat datablock (ett Action-block). Det är alltså möjligt att tilldela ett rent lokalt Action-datablock som ersätter det som länkats från biblioteket. Detta kommer dock att helt ersätta keyframed-animationen från de länkade data, och inte åsidosätta den på något sätt.

Åsidosatta Action-datablock stöder endast en mycket begränsad mängd redigering. En befintlig F-kurva kan t.ex. stängas av, men dess keyframes kan inte redigeras och ingen ny F-kurva kan läggas till.

Drivare

Om de länkade referensdata har animationsdata, har dess åsidosättningar endast begränsade möjligheter att redigera befintliga drivrutiner. Det går t.ex. att ändra det befintliga målet för en drivrutin, men det går inte att lägga till nya drivrutiner eller nya mål till en befintlig drivrutin.

Om den länkade referensdatan inte har några animationsdata kommer dess åsidosättningar att skapa en ny när de får några drivrutiner definierade. Drivrutinerna kan sedan redigeras, läggas till eller tas bort helt och hållet, precis som med rent lokala datablock.

NLA

Data från NLA editor hör också till animationsdata i ett datablock. Dessa data stöder dock en högre nivå av redigering i overrides, inklusive att flytta eller ändra storlek på befintliga remsor från länkade data och lägga till nya lokala remsor.

Resynkronisering av åsidosättningar

Relationerna mellan länkade datablock kan ändras, vilket resulterar i föråldrade åsidosättningar. När detta händer måste overrides synkroniseras på nytt för att matcha den nya strukturen i deras hierarki. Overrides synkroniseras automatiskt om det behövs när blend-filer öppnas. Ibland kan det dock vara nödvändigt att synkronisera dem manuellt, se Felsökning av en override-hierarki.

Tips

Blender kan också resynkronisera biblioteksöverskrivningar från externa bibliotek, som sedan länkas till en arbetsfil. Detta är dock en kostsam process som måste göras om helt och hållet varje gång arbetsfilen laddas, eftersom Blender inte kan redigera/ändra det externa biblioteket direkt.

Så användare som länkar överskrivningar (eller skapar rekursiva överskrivningar) bör se till att deras biblioteksfiler uppdateras regelbundet för att undvika detta extraarbete vid filinläsning (vanligtvis räcker det med att öppna och spara biblioteksfilerna för att uppdatera dem).

Tips

Automatisk resynkronisering kan inaktiveras i Experimentella inställningar.

Icke-redigerbara åsidosättningar

Av tekniska skäl (hur relationer mellan datablock lagras) måste Blender skapa åsidosättningar av många datablock, även när bara en eller två av dem faktiskt behöver redigeras av användaren. För att minska mängden information och risken för potentiell oönskad redigering är de flesta av dessa datablock nu markerade som icke-redigerbara som standard. Detta kan ändras när åsidosättandet har skapats.

Gör en åsidosättning

Referens

Redigerare:

3D-visningsportal, Outliner, Egenskaper

Läge:

Objektläge

Meny:

3D Viewport ‣ Header ‣ Objekt ‣ Library Override ‣ Make Outliner ‣ Context Menu ‣ Library Override ‣ Make ID Widget ‣ Context Menu ‣ Library Override ‣ Make

Genväg:

Shift-LMB på den ”länkade”/”åsidosatta” knappen i en ID Widget.

Skapa åsidosättningar från de valda datablocken.

Blender skapar automatiskt åsidosättningar för alla nödvändiga datablock för att säkerställa att giltiga åsidosättningshierarkier skapas.

Endast åsidosättningar som skapas från valda objekt kommer att kunna redigeras av användaren.

Varning

Stödet för att skapa biblioteksöverskrivningar från ID-widgeten (huvudsakligen från Properties-redigeraren) är begränsat. Även om de vanligaste användningsområdena bör stödjas, särskilt med objekt, meshes etc., återstår mycket att implementera.

Utvalda objekt

Beroende på varifrån åsidosättandet skapas finns det flera sätt att ”välja” objekt som ska åsidosättas och redigeras av användaren.

Observera

Detta gäller även för de andra vanliga operationerna (Reset och Clear).

De avancerade åtgärderna Troubleshoot som endast är tillgängliga från Outliner gäller alltid för en hel åsidosättningshierarki.

3D-vy

De utvalda objekten kommer att betraktas som utvalda.

När ett valt objekt är en lokal Empty som instansierar en länkad samling händer följande:

  • Objektet Empty kommer att tas bort.

  • Dess länkade samling kommer att åsidosättas, och detta åsidosättande kommer att instansieras i samma samling i det aktuella Vyskiktet.

  • Om samlingen innehåller Armature-objekt kommer de att kunna redigeras av användaren. Annars kommer ingen skapad åsidosättning att definieras som användbar.

Outliner

Åtgärden kan tillämpas antingen endast på de markerade objekten, endast på deras innehåll eller på båda.

Tips

Att använda Selected & Content är ett enkelt sätt att få alla nyskapade overrides att omedelbart kunna redigeras av användaren.

ID Widget

Endast det länkade datablocket i ID-widgeten betraktas som markerat och anges som redigerbart när det åsidosätts.

Gör redigerbar

Samma operation kan också användas för att göra befintliga åsidosättningar användarändringsbara, efter att de har skapats eller cleared

Återställ en åsidosättning

Referens

Redigerare:

3D-visningsportal, Outliner, Egenskaper

Läge:

Objektläge

Meny:

3D Viewport ‣ Header ‣ Objekt ‣ Library Override ‣ Reset Outliner ‣ Context Menu ‣ Library Override ‣ Reset ID Widget ‣ Context Menu ‣ Library Override ‣ Reset

Återställer de valda overrides till deras ursprungliga värden (från de länkade referensdata). Till skillnad från åtgärden Clear förblir overrides fullt redigerbara och raderas aldrig.

Rensa en åsidosättning

Referens

Redigerare:

3D-visningsportal, Outliner, Egenskaper

Läge:

Objektläge

Meny:

3D Viewport ‣ Header ‣ Objekt ‣ Library Override ‣ Clear Outliner ‣ Context Menu ‣ Library Override ‣ Clear ID Widget ‣ Context Menu ‣ Library Override ‣ Clear

Genväg:

Shift-LMB på den ”åsidosatta” knappen i en ID Widget.

Återställ de markerade overrides till deras ursprungliga värden, och om det är möjligt utan att bryta den befintliga hierarkin, radera dem och ersätt dem med deras länkade referensdata. I annat fall behåller du åsidosättningarna men markerar dem som icke-redigerbara.

Redigera en åsidosättning

I grund och botten redigeras en åsidosättning på samma sätt som ett vanligt lokalt datablock. Du kan använda operatorer på dem, redigera deras egenskaper från olika redigerare osv. Det finns dock vissa begränsningar, framför allt är redigeringsläget inte tillåtet för åsidosättningar. I de flesta fall, så snart du redigerar en egenskap, kan du se att den åsidosätts av dess blåblå kontur/bakgrund.

Du kan också animera åsidosättanden, animerade egenskaper ersätter/upphäver då bara åsidosättanden. Observera att du inte kan åsidosätta/redigera en befintlig animering, utan du måste skapa en ny åtgärd. Du kan manuellt definiera eller ta bort en åsidosättning från kontextmenyn för den relevanta egenskapen. Om en åsidosättning inte är redigerbar måste du först göra den redigerbar.

Definiera åsidosättningar

Referens

Redigerare:

Alla

Läge:

Objektläge

Egenskap:

Context Menu ‣ Define Overrides Context Menu ‣ Define Override

Markera en egenskap som ska åsidosättas i den lokala blend-filen. För array-egenskaper kommer alla element att åsidosättas.

Definiera enkel åsidosättning

Referens

Redigerare:

Alla

Läge:

Objektläge

Egenskap:

Kontextmeny ‣ Definiera enskild åsidosättning

Markera en egenskap som ska åsidosättas i den lokala blend-filen. För matrisegenskaper kommer endast det valda elementet att åsidosättas.

Ta bort åsidosättningar

Referens

Redigerare:

Alla

Läge:

Objektläge

Egenskap:

Context Menu ‣ Remove Overrides Context Menu ‣ Remove Override

Ta bort egenskapen från åsidosättningarna. Värdet i det länkade datablocket kommer att användas. För array-egenskaper kommer alla element att tas bort från åsidosättandet.

Ta bort enkel överstyrning

Referens

Redigerare:

Alla

Läge:

Objektläge

Egenskap:

Kontextmeny ‣ Ta bort enkel åsidosättning

Ta bort egenskapen från åsidosättningarna. Värdet i det länkade datablocket kommer att användas. För array-egenskaper kommer endast de valda elementen att tas bort från åsidosättandet.

Felsökning av en åsidosättningshierarki

Referens

Redigerare:

Outliner

Läge:

Objektläge

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot

Dessa åtgärder är endast tillgängliga från Outliners kontextuella meny. De kan hjälpa till att fixa en trasig åsidosättningshierarki.

Resynkronisering

Referens

Redigerare:

Outliner

Läge:

Objektläge

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync

Hierarkin för de länkade data (relationerna mellan länkade datablock) kan ändras. Åsidosättningar måste synkroniseras på nytt för att matcha den nya hierarkin. Denna operator resynkroniserar åsidosättningen så att den matchar den nya hierarkin i biblioteket.

Varning

Vid resynkronisering av en biblioteksöverstyrning är det möjligt att redigerade överstyrningar raderas om de ändras i det ursprungliga biblioteket. Om så är fallet visas ett varningsmeddelande som anger hur många overrides som har raderats. Om raderingen inte är önskvärd kan resynkroniseringen ångras innan blend-filen sparas.

Observera

Denna process är automatisk

Vanligtvis sker denna operation automatiskt när blender upptäcker att den behövs, vid filinläsning, såvida den inte är inaktiverad i Experimentella preferenser.

Resynkronisering Verkställ

Referens

Redigerare:

Outliner

Läge:

Objektläge

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Resync Enforce

I vissa fall, särskilt med äldre blend-filer som sparats med ”trasiga” (icke-hierarkimatchande) åsidosättningar, kan en vanlig resynkronisering i sig inte bygga upp åsidosättningen korrekt som förväntat (t.ex. kan vissa objekt försvinna). För att lösa detta problem återskapar den här operatören den lokala åsidosättningen från dess länkade referens, liksom dess hierarki av beroenden, och tvingar fram att hierarkin matchar de länkade data (dvs. ignorerar befintliga åsidosättningar av datablockens egenskaper). Detta liknar en vanlig resynkronisering, men är mer kraftfull och aggressiv, på bekostnad av en potentiell förlust av vissa åsidosättningar på ID-pekareegenskaper.

Ta bort

Referens

Redigerare:

Outliner

Läge:

Objektläge

Outliner:

Context Menu ‣ Library override ‣ Troubleshoot ‣ Delete

Ta bort hela bibliotekets åsidosättningshierarki och ersätt alla dessa åsidosättningsdatablock med deras ursprungliga länkade datablock. Detta återställer Make-operationen helt och hållet.