Procedimentació i exemples

Els Controladors simples es poden configurar des de la finestra emergent que apareix en afegir un Controlador nou. En afegir múltiples controladors o per a configuracions més avançades, és útil tenir obert l'Editor de controladors.

Controlador de transformació

Controla una propietat amb la transformació d’un objecte. En aquest exemple, la rotació Y de l’Objecte 2 serà controlada per la posició X de l’Objecte 1. Partint d’una configuració senzilla amb dos objectes:

  1. Afegir un controlador a la propietat Rotació Y del segon objecte a través del menú contextual o amb Ctrl-D.

    ../../_images/animation_drivers_workflow-examples_transform-driver-1.png
  2. Obrir l'Editor de controladors i seleccionar la propietat Rotació Euler Y a la regió dels canals.

  3. Obrir la regió de la barra lateral i seleccionar la pestanya Controladors.

  4. Configurar el controlador perquè sigui el Valor mitjà d’un Canal de transformació del primer objecte.

    ../../_images/animation_drivers_workflow-examples_transform-driver-2.png
  5. Experimentar amb el moviment del primer objecte i apreciar com afecta la rotació Y del segon objecte.

Expressió de protocol - Orbitar un punt

Orbitar la posició d’un objecte al voltant d’un punt amb una Expressió de protocol feta exprés. La posició de l’objecte canviarà quan es refregui el cronograma. Utilitzant trigonometria, el moviment circular es pot definir en 2D utilitzant les funcions sinus i cosinus. (Vegeu Circumferència goniomètrica.) En aquest exemple, el fotograma («frame») actual s’utilitza com la variable que indueix el moviment. frame és una Expressió simple que correspon a bpy.context.scene.frame_current.

../../_images/animation_drivers_workflow-examples_object-rotation.png
  1. Afegir un controlador a la propietat Ubicació X.

    1. Determinar el Tipus de controlador com a Expressió protocolitzada.

    2. Afegir l’expressió 0 + (sin(frame / 8) * 4), on:

      • frame/8 : és el fotograma en curs de l’animació, dividit per 8 per alentir l’òrbita.

      • (sin( )*4) : multiplica el resultat de sin(frame/8) per 4 per fer un cercle més gran.

      • 0 + : s’utilitza per controlar el desplaçament del punt central de l’òrbita.

  2. Afegir un controlador a la propietat Ubicació Y amb l’expressió 0 + (cos(frame / 8) * 4).

  3. Refregar el cronograma per a veure’n l’efecte. Experimenteu amb les variables per controlar la mida i el centre de l’òrbita.

Funció personalitzada - Valor quadràdic

Creeu una funció expressa per a obtenir el quadrat d’un valor (p. ex. valor2). Afegir la funció a l'Espai denominatiu del controlador permet utilitzar-la des d’expressions del controlador. El Espai denominatiu del controlador té una llista de funcions integrades per al seu ús en expressions del controlador, així com constants com π i e. Les podeu inspeccionar a través de la Consola de Python:

>>> bpy.app.driver_namespace[' <tab>
                              acos']
                              acosh']
                              asin']
                              asinh']
                              atan']
                              ...

Per a afegir una funció nova a l'Espai denominatiu del controlador, cal implementar la funció en si i després afegir-la a bpy.app.driver_namespace.

  1. Afegiu el que segueix a l’Editor de text dins del Blender i pitgeu Executar protocol.

    import bpy
    
    def square(val):
       """Returns the square of the given value"""
       return val * val
    
    # Add function to driver_namespace.
    bpy.app.driver_namespace['square'] = square
    
  2. Afegiu un controlador amb una Expressió de protocol com ara square(frame).

  3. Observeu l’efecte en refregar pel cronograma.

Hi ha més exemples de funcions a expresses disponibles a l’Editor de text del Blender Plantilles ‣ Python ‣ Funcions de controlador. Com que les Expressions simples no poden accedir a funcions expresses, utilitzar aquestes només té sentit per a càlculs complexos.

Avís

Intentar substituir les entrades integrades de l’espai de denominacions del controlador pot ocasionar comportaments indeterminats.

Cerca d’atribut de capa de visionat

El Node d’atribut de material en el mode Capa de visionat cerca automàticament la propietat de l’atribut en múltiples ubicacions. Això, per exemple, pot permetre de definir algun valor de l’atribut personalitzat al nivell d'Escena o bé Món i després sobreseure’l de manera diferent un una de les Capes de visionat.

../../_images/animation_drivers_workflow-examples_attribute-lookup.png

Les Propietats contextuals dels controladors no implementen aquest comportament, per la qual cosa, si és necessari, s’ha d’emular manualment mitjançant valors de reserva i una expressió condicional (les condicions són Expressions simples).

Per a un atribut de nom attr, el node assaja les sis cerques de camins de RNA següents en ordre:

  • ["attr"] a la capa de visionat activa (propietat expressa).

  • attr a la capa de visionat activa (propietat integrada).

  • ["attr"] a l’Escena activa.

  • attr a l’Escena activa.

  • world["attr"] i a l’Escena activa.

  • world.attr a l’Escena activa.

Depenent de la propietat específica, pot haver-n’hi prou comprovant només un subconjunt d’aquestes ubicacions. Per exemple, la imatge de la dreta mostra com accedir a un atribut que se sap que és indiscutiblement una propietat expressa amb un valor de color.

Les variables del controlador que accedeixen a ubicacions que no són definitives a la cadena de cerca haurien d’utilitzar valors de reserva que no són vàlids per a l’atribut (p. ex. valors de color negatius), que després es poden revisar amb l’expressió condicional. La variable final ha de recórrer a un valor per defecte vàlid que s’utilitzarà quan la propietat no estigui definida en absolut.

Controladors de morfofites

Deformació de malla millorada

Corregeix els problemes d’intersecció que es produeixen quan s’utilitzen esquelets i pintura de pesos, especialment en articulacions. Les Morfofites també es poden utilitzar per retocar i refinar un aparell, per exemple, per insinuar formacions musculars. En aquest exemple, s’utilitza una morfofita per millorar la deformació del colze d’un braç rudimentari.

../../_images/animation_drivers_workflow-examples_shape-key-improved-deformation.png

Esquerra: deformació de malla esquelètica sense correcció. Dreta: s’ha aplicat la morfofita correctiva

Configuració
  1. Afegir una malla (en aquest exemple, un cilindre amb talls de bucle).

  2. Afegir-hi un esquelet amb una cadena d’ossos.

  3. Empellar la malla a l’esquelet utilitzant pintura de pesos.

(Nota: per a fer l’esquelet pare de la malla: seleccionar primer la malla, després l’esquelet i pitjar Ctrl-P per a afillar amb pesos automàtics.)

Experimenteu amb les poses de l’esquelet i observeu la deformació de l’articulació. Per a solucionar problemes o angles d’intersecció d’aparença insatisfactòria, podeu associar una Morfofita a una posa.

Morfofita
  1. Posar l’esquelet de manera que els problemes siguin visibles. Assegureu-vos d’incloure-hi les poses extremes que voleu que l’aparellat admeti.

  2. Amb la malla seleccionada, afegir una Morfofita afegida a la fita Base. Propietats ‣ Pestanya de malla ‣ Morfofites

  3. Per tal d’afaiçonar una morfofita per damunt de la deformació d’esquelet, habiliteu tant Vista de mode edició com Edició de gàbia en el modificador d’esquelet. Propietats ‣ Pestanya modificadors ‣ Modificador esquelet ‣ Capçalera

  4. Entrar al Mode edició i seleccionar la nova morfofita al plafó de propietats. Ajusteu els vèrtexs com convingui. Seleccioneu la fita Base per a permutar entre la malla original i les vostres edicions. (Nota: aneu amb compte d’aplicar edicions només a la vostra morfofita i no a la malla original o a altres fites que hi hagi.)

Una vegada estigueu satisfetes amb com queda la deformació de la posa problemàtica, haureu de configurar un controlador per activar la forma amb delicadesa quan entri en aquesta posa.

Controlador
  1. Afegiu un controlador al Valor de la morfofita que heu creat.

  2. Obriu l’editor de controladors i seleccioneu el controlador.

Mètode 1 – Mapejat directe a un valor de rotació òssia

Una manera senzilla de configurar el controlador és amb una correspondència directa entre el valor del canal de rotació d’un os i el valor d’activació de la morfofita. Aquest mètode té el desavantatge d’afectar un únic canal de rotació d’un os, que pot ser insuficient per expressar amb precisió la condició sota la qual s’ha d’activar la morfofita.

  1. A la pestanya Controladors, seleccioneu el Valor mitjà de la rotació de l’os que esteu posant.

    Enteneu l’eix de rotació que us interessa per la via d’habilitar la visualització dels eixos en l’esquelet o observant els valors de transformació d’os en les Propietats.

    Seleccioneu el canal de rotació i consigneu-lo a local, és a dir, al valor de rotació de l’os en relació amb el seu os pare.

    ../../_images/animation_drivers_workflow-examples_shape-key-method1.png
  2. Definiu manualment els punts de la corba del controlador seleccionant una nansa i arrossegant-la o inserint valors a la pestanya Corba-F. L’eix Y representa el Valor de la morfofita, que hauria d’anar de 0,0 a 1,0. L’eix X és normalment el fotograma, però en aquest controlador representa el valor de rotació en radians. Podeu tenir més de dos punts en la corba i ajustar les transicions amb les nanses en la vista de corba (G per a moure).

  3. Per a verificar que el controlador es comporta correctament, desseleccioneu l’opció perquè mostri només els controladors per als objectes seleccionats. D’aquesta manera, podreu posar l’esquelet i mantenir la vista sobre el controlador.

Mètode 2 – Diferència rotacional sobre un os referent

Aquest mètode requereix un os referent o correctiu addicional, però expressa millor la condició espacial en l’espai 3D de l’os que està causant el problema.

  1. En el Mode edició d’esquelet, afegiu un nou os extrudit des de l’Os 1, en la posició en què l’Os 2 hauria de tenir activada la morfofita. Aquest tipus d’ossos normalment segueixen una convenció de noms com «TAR-» («target», per «referent») o «COR-» (correctiu).

  2. A la pestanya de Controladors, seleccioneu el Valor mitjà de la diferència de rotació entre l’os que esteu rotant i l’os referent. Una diferència de rotació és l’angle mínim entre dos objectes a l’Espai del món. Per tant, és important que els ossos tinguin la mateixa arrel, de manera que l’única cosa que afecti l’angle entre els ossos sigui la rotació d’un d’ells. Quan l’os de deformació (Os 2) abasti la rotació referent (REF-Os 2) la diferència rotacional serà de 0º.

    ../../_images/animation_drivers_workflow-examples_shape-key-method2.png
  3. Ajusteu manualment les nanses de corba del controlador de manera que el Valor de la morfofita (eix Y) sigui 1,0 quan la diferència de rotació (eix X) sigui 0º. El Valor ha de ser de 0,0 quan el braç està estès, moment en què la diferència rotacional ha de ser al voltant de 90º o més (en radians).

  4. Vegeu els passos del Mètode 1 sobre com ajustar les nanses de corba i confirmeu que la funcionalitat està rutllant. Poseu l’esquelet per verificar que els intervals són correctes.

Morfofites relatives en cadena

Activa diferents morfofites en successió. En aquest exemple, moure un sol os activarà primer Fita 1 i després Fita 2. Vegeu també mescla sumativa de morfofites relatives.

Morfofites

Afegiu dues morfofites a una malla, a més de la Base.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-basis.png

Base.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key1.png

Fita 1: les cares superiors es mouen 1 m. més amunt.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-key2.png

Fita 2: la part superior interior es mou 1 m. més amunt.

Controladors

Afegiu un esquelet amb un sol os per controlar les morfofites. L’objectiu és activar les fites en successió a mesura que aquest os s’eleva.

../../_images/animation_drivers_workflow-examples_chained-shape-keys-result.png

Com es mostra a la imatge anterior, quan l’os està a mig camí cap amunt, tant Fita 1 com Fita 2 tenen una influència. És una qüestió de preferència si la Fita 1 ha d’estar en el seu Valor màxim abans que la Fita 2 esdevingui activa, o fins a quin punt s’haurien de superposar. Aquest exemple mostra una fusió sense batzegades.

Per a una fusió sense batzegades on hi hagi superposició, la Fita 1 hauria de tenir un Valor de 0,0 quan l’os estigui a la part inferior i augmentar linealment a 1,0 fins que l’os passi el punt d’alçada mitjà. La Fita 2 hauria de tenir un valor de 0,0 abans del punt de mitja alçada i després augmentar a la mateixa taxa que la Fita 1 fins a arribar a Valor 1,0 quan l’os estigui a l’altura màxima.

  1. Afegir un controlador al Valor de la Fita 1 i la Fita 2. A la pestanya Controladors, configurar tots dos controladors perquè tinguin el Valor mitjà d’una variable amb la ubicació Z de l’os.

  2. Determinar l’interval de moviment de l’os en l’eix Z del món movent-lo cap amunt de manera que d’alineï amb la part superior de la malla quan ambdues fites estiguin actives. Aquí utilitzarem [0,0; 2,5].

  3. Configurar les funcions de controlador de manera que el Valor de les morfofites (eix Y) sigui el desitjat per a l’altura de l’os (eix X).

    Les funcions del controlador haurien de ser lineals; per tant, es poden definir analíticament amb una funció de tipus \(y = a + bx\), on \(a\) es un desplaçament en \(y\) i \(b\) és el pendent.

    1. A la pestanya Modificadors, afegiu un Generador de tipus Polinòmic ampliat als dos controladors.

    2. Jugueu amb els valors de \(a\) i \(b\) de manera que les corbes vagin des de [0,0; 1,0] a l’eix Y i des de [0,0; 2,5] a l’eix X. Les corbes s’haurien de superposar a l’àrea mitjana de l’eix X i haurien de tenir el mateix pendent (\(b\)).

      Els valors possibles són Fita 1: \(y = 0,0 + 0,6x\) i Fita 2: \(y = -0,5 + 0,6x\).

      ../../_images/animation_drivers_workflow-examples_chained-shape-keys-driver-setup.png

      Observeu que les funcions van fora de l’interval [0,0, 1,0] per al Valor de les morfofites, però que això no té cap efecte perquè el Valor està retingut en un Interval al plafó Fotofites.