Panel de controladores¶
Referencia
- Editor:
Editor de curvas
- Modo:
Controladores
- Panel:
- Atajo:
N
Referencia
- Menú:
- Atajo:
Ctrl-D
Este panel se encuentra visible en la Barra lateral del editor de Controladores o como un panel emergente, al agregar un controlador a una propiedad.
Mostrará la propiedad que está siendo controlada, seguida de una serie de opciones que permitirán determinar cómo funcionará el controlador.
Opciones de controladores¶
Tipo¶
Los controladores pueden usar dos categorías de funciones:
Funciones integradas (Valor promedio, Sumar valores, Valor mínimo y Valor máximo)
La propiedad controlada obtendrá el promedio, la suma, el mínimo o el máximo, respectivamente, de los valores de las variables del controlador a las cuales se haga referencia. En caso de que sólo se hiciera referencia a una única variable, estas funciones producirán el mismo resultado.
Funciones personalizadas (Script con expresión).
Son expresiones arbitrarias de Python que podrán hacer referencia a las variables del controlador por su nombre. Ver Expresiones.
Resultado¶
El resultado actual de los cálculos del controlador. Útil para propósitos de depuración.
Variables¶
Actualizar dependencias¶
Fuerza la actualización de las dependencias en las que se basan los cálculos del controlador.
Mostrar en editor de Controladores¶
Abrirá una nueva ventana con un editor de Controladores para mostrar el controlador que se está editando. Este botón sólo aparecerá en el panel emergente de edición de controladores.
Variables del controlador¶
Las variables permitirán hacer referencia a propiedades, canales de transformación o al resultado de una comparación entre las transformaciones de dos objetos.
Los controladores deberían acceder a datos de objetos mediante el uso de las variables del controlador, en vez de mediante referencias directas en la propia expresión de Python, como forma de que las dependencias puedan ser correctamente rastreadas cuando existan cambios en las mismas.
- Agregar variable
Agrega una nueva variable al controlador.
- Copiar / Pegar variables
Copiará la lista actual de variables, para que puedan ser pegadas luego en otro controlador.
- Nombre
Nombre de la variable, para su referencia en la expresión. El nombre deberá comenzar con una letra y contener solamente letras, dígitos o guiones bajos.
- Tipo
El tipo de variable a usar.
- Propiedad individual
-
Permitirá obtener el valor de una propiedad RNA de Blender, definida mediante la selección de un bloque de datos y el ingreso de una cadena de texto con la ruta concreta, dentro del bloque de datos, a la propiedad que se desee referenciar.
En el caso de las propiedades de transformación, esto devolverá el valor exacto de la propiedad en la interfaz, mientras que al usarse una variable de tipo Canal de transformación se obtendrá un valor que podrá tomar en cuenta las jerarquías y restricciones, según se juzgue necesario.
Ver también Propiedades personalizadas.
- Tipo de ID
El tipo de bloque de datos de ID. Por ejemplo: Forma, Imagen, Objeto, Material.
- ID
El ID de ese tipo escogido. Por ejemplo: Material.001».
- Ruta RNA
El nombre RNA de la propiedad, basado en un subconjunto de la sintaxis de acceso a atributos de Python. Por ejemplo:
location.x
olocation[0]
para el canal de animación de posición X (antes de considerar jerarquías o restricciones) o["nombre_propiedad"]
para el valor de una propiedad personalizada.- Alternativo
Cuando se encuentre activo, permitirá especificar un valor alternativo para ser usado como valor de la variable, en caso de que la ruta RNA no pudiera ser resuelta (en vez de causar un error por la imposibilidad de evaluar el controlador). Para más información, ver Propiedad de contexto más abajo.
Truco
La manera más fácil de crear una variable de este tipo será usar la opción Copiar como nuevo controlador del menú contextual sobre la propiedad original y, luego, pegar el resultado en el controlador mediante la opción Pegar variables en el controlador.
- Canal de transformación
-
Permitirá obtener el valor de un canal de transformación de un objeto de la escena.
- ID
ID del objeto. Por ejemplo: Cubo, Esqueleto, Cámara.
- Hueso
En el caso de esqueletos, el nombre del hueso del mismo. Por ejemplo: «Hueso», «hueso.002», «Brazo.r».
- Tipo
Por ejemplo, Posición X, Rotación X, Escala X.
La opción Escala promedio permite obtener un valor combinado de escala, calculado como la raíz cúbica del cambio total del volumen. A diferencia de la Escala X/Y/Z, este valor podrá ser negativo cuando el objeto se encuentre invertido debido a una escala negativa.
- Modo
Para los canales de rotación, especificará el tipo de datos de rotación a ser usados, incluyendo los distintos órdenes explícitos Euler. De forma predefinida usará el mismo orden Euler del objetivo. Ver Modos de rotación.
- Espacio
Espacio global, Espacio de la transformación, Espacio local.
- Diferencia rotacional
Permitirá obtener el valor de la diferencia rotacional entre dos objetos o huesos, expresado en radianes.
- Hueso
En el caso de esqueletos, el nombre del hueso del mismo. Por ejemplo: «Hueso», «hueso.002», «Brazo.r».
- Distancia
-
Permitirá obtener el valor de la distancia entre dos objetos o huesos.
- Hueso
En el caso de esqueletos, el nombre del hueso del mismo. Por ejemplo: «Hueso», «hueso.002», «Brazo.r».
- Espacio
Espacio global, Espacio de la transformación, Espacio local.
- Propiedad de contexto
-
Permitirá obtener el valor de una propiedad referente a una escena o una capa de visualización que esté siendo actualmente evaluada por el sistema de animación. Esto constituirá una referencia débil que no permitirá al controlador apuntar a la escena o capa de visualización, al vincular los datos de animación.
Un ejemplo de cuándo entrarán en juego las propiedades de este tipo, sería cuando se deseara obtener la transformación de la cámara activa de la escena. Sería posible, entonces, configurar un controlador en la escena de un personaje y hacer que este controlador haga referencia a la cámara activa de la escena actual en la que se encuentre vinculado el personaje, lo cual permitirá en cada caso hacer referencia a cámaras distintas.
- Contexto
Escena activa, Capa de visualización activa.
- Ruta RNA
El nombre de la propiedad RNA, basado en un subconjunto de la sintaxis de acceso a atributos de Python. Por ejemplo:
camera.location.x
ocamera.location[0]
para obtener el valor del canal de Posición X de la cámara activa (sin considerar la jerarquía o restricciones), o["nombre_propiedad"]
para obtener una propiedad personalizada.- Alternativo
Cuando esta opción se encuentre activa, permitirá especificar un valor alternativo a ser usado como resultado de la variable cuando la ruta RNA no pueda ser resuelta, en vez de causar que la evaluación del controlador falle.
Esta característica podrá resultar muy útil para hacer que los controladores sean más robustos, cuando se estén utilizando opciones de la escena mediante propiedades personalizadas. En caso de que el objeto se encuentre vinculado a una escena diferente, estas propiedades personalizadas podrían no existir allí, por lo que los valores alternativos podrán proporcionar valores predefinidos razonables en ese caso.
Los valores alternativos también podrán ser usados para emular el comportamiento de búsqueda del modo Capa de visualización del nodo Atributo de un material.
Truco
Si bien los valores de los canales X/Y/Z de animación de la Posición de la cámara activa podrán ser accedidos mediante
camera.location[0/1/2]
, la obtención de su posición y orientación globales, considerando la jerarquía y restricciones, actualmente implicará el uso de la propiedadcamera.matrix_world
. Esta propiedad podrá ser comprendida fácilmente si se piensa en la matriz como una serie de cuatro vectores en espacio Global:matrix_world[0][0/1/2]
será el vector de dirección hacia la derecha de la pantalla (posición local X de la cámara).matrix_world[1][0/1/2]
será el vector de dirección hacia arriba de la pantalla (posición local Y de la cámara).matrix_world[2][0/1/2]
será la dirección opuesta a la que se encuentra apuntando la cámara.matrix_world[3][0/1/2]
será la posición de la cámara.
- Valor
Mostrará el valor de la variable.
Modos de canales de rotación¶
Los canales de rotación de las transformaciones soportan una serie de modos de operación, incluyendo:
- Euler automático
Usará el mismo orden Euler del objetivo para descomponer la rotación en canales.
- Euler XYZ, etc.
Permitirá especificar el orden de rotación Euler a ser usado.
- Cuaternio
Proporcionará una representación de la rotación expresada en cuaternios.
- Balanceo y torsión en X/Y/Z
Descompondrá la rotación en dos partes: una rotación de Balanceo que apuntará el eje especificado en su dirección final, seguida por una rotación de Torsión alrededor de ese eje. Esto será, a menudo, necesario para controlar Formas claves correctivas, así como huesos para la rotación orgánica de articulaciones.
Esta descomposición es habitualmente producida en los sistemas de control, mediante el uso de huesos accesorios, usando una restricción Rastreo amortiguado para extraer la parte de balanceo, y un hueso subordinado a éste, usando una restricción Copiar transformaciones para extraer el componente de torsión.
Los valores de los canales para Balanceo y torsión en Y serían:
- Rotación Y
Ángulo de la rotación de torsión.
- Rotación W
Ángulo de la rotación de balanceo, independiente de su dirección.
- Rotación X, Rotación Z
Ángulo ponderado que representará la cantidad de balanceo alrededor del eje X/Z.
La magnitud del ángulo equivaldrá a la Rotación W cuando la rotación sea exclusivamente alrededor de ese eje, y decaerá a cero a medida que la dirección cambie hacia el otro eje, describiendo las curvas de decaimiento que se muestran en la gráfica de la derecha.
Desde el punto de vista matemático, los ángulos de balanceo serán calculados a partir de componentes de cuaternios, usando las fórmulas: \(2 \arccos(w)\) para W y \(2 \arcsin(x)\), etc. para los otros. El componente de la rotación de balanceo que corresponde al eje de torsión será siempre 0, y será reemplazado por el ángulo de torsión.
Expresiones¶
- Expresión
Un campo de ingreso de texto, en donde será posible introducir una expresión arbitraria de Python que podrá hacer referencia a las Variables del controlador mediante sus nombres.
La expresión tendrá acceso a un conjunto de constantes y funciones matemáticas estándar, obtenidas a partir de los módulos
math
,bl_math
y otros, a los cuales el espacio de nombres del controlador tiene acceso. Para ver un ejemplo de cómo agregar una función personalizada al espacio de nombres del controlador, ver el ejemplo de espacio de nombres del controlador.Por razones de rendimiento, será mejor priorizar la utilización del subconjunto de Expresiones simples tanto como sea posible.
- Usar self
Cuando esta opción se encuentre activa, será posible utilizar la variable
self
dentro de las expresiones, para que los controladores puedan hacer referencia a sus propios datos. Esto resultará útil para evitar tener que crear una variable de controlador para apuntar a los propios objetos y huesos que estén siendo controlados.Ejemplo:
self.location.x
aplicado a la propiedad Rotación Y del mismo objeto, hará que el objeto rote a medida que se vaya moviendo.Nótese que podría no ser posible rastrear completamente las dependencias de propiedades accedidas mediante la variable
self
.
Expresiones simples¶
Blender podrá evaluar un subconjunto de expresiones de controlador de Python de forma directa, que mejorarán significativamente el rendimiento, especialmente en sistemas con varios núcleos. Para sacar partido de esto, la expresión deberá utilizar únicamente las siguientes características:
- Nombres de variables
Usar sólo caracteres ASCII.
- Literales
Números enteros y decimales con punto flotante.
- Globales
frame
- Constantes
pi
,True
,False
- Operadores
+
,-
,*
,/
,==
,!=
,<
,<=
,>
,>=
,and
,or
,not
, operador condicional ternarioif
- Funciones estándar
min
,max
,radians
,degrees
,abs
,fabs
,floor
,ceil
,trunc
,round
,int
,sin
,cos
,tan
,asin
,acos
,atan
,atan2
,exp
,log
,sqrt
,pow
,fmod
- Funciones proporcionadas por Blender
lerp
,clamp
,smoothstep
Las expresiones simples seerán evaluadas aún cuando la ejecución de scripts Python se encuentre inactiva.
Cuando se utilice una expresión por fuera de este subconjunto, Blender mostrará la advertencia «Expresión de Python lenta». Sin embargo, en tanto la mayoría de los controladores utilicen expresiones simples, utilizar algunas expresiones complejas en algunos lugares selectos será aceptable.
Ver también
Python y su documentación.
functions.wolfram.com <https://functions.wolfram.com/> (en inglés)__.