From BlenderWiki

Jump to: navigation, search

Blender 2.67: Nodos Python

Los nodos Python extienden el API para posibilitar a los desarrolladores de scripts el uso del Editor de nodos de Blender con sistemas personalizados de nodos, sin necesidad de modificar el código C y tener que obtener la aprobación de estos cambios en el tronco principal del programa. Hasta el momento el uso principal de esta extensión del API ha sido por parte de motores de procesamiento externos, para poder utilizar definiciones de materiales basadas en nodos dentro de Blender. Sin embargo, el API de los nodos es muy genérico y no está limitado a ningún uso en particular. El propósito de un determinado sistema de nodos dependerá enteramente de su propia implementación.

Esta página es solo una breve reseña de las características principales agregadas por los nodos Python. Para obtener un ejemplo más detallado de un conjunto básico de nodos, ver la plantilla custom_nodes.py.

Ejemplos

Advertencia - Trabajo en progreso
El API de los nodos Python aún estará sujeta a cambios y mejoras. Los proyectos listados abajo deben considerarse un trabajo en progreso. Son solo ejemplos para mostrar de lo que son capaces los nodos Python (o pynodes).


Algunos proyectos ya han comenzado a usar el API de nodos Python.

  • LuxRender es un motor de procesamiento basado en la física que puede ser integrado en Blender. La inminente versión 1.3 contendrá una interfaz de nodos para definir materiales utilizando el Editor de nodos de Blender.
    • Es posible encontrar un pantallazo de las fuentes de LuxRender aquí
    • Video de demostración:
LuxRender 1.3 Demos del editor de nodos y nuevas características de Jason Clarke
  • Matt Ebb ha creado una interfaz de nodos para el agregado de exportación de Blender a 3delight:
  • Blender2.67 pynodes geometry nodes addon.png
    "Geometry Nodes" es un agregado experimental cuyo objetivo es explorar un posible flujo de trabajo de modelado generativo y crear un caso de uso real del API.


Tipos

Los tipos de nodos pueden ser registrados por los scripts de Python desde agregados, igual que otros tipos de la interfaz de usuario, tales como operadores o menúes. El API de los nodos Python está comprendido por 3 nuevos tipos registrables:

  • Árbol de nodos
El árbol de nodos es el contenedor principal de los nodos. Cada tipo de árbol de nodos aparecerá dentro de los botones de selección de tipo de árbol de nodos en el encabezado del editor. Los árboles de nodos de cualquier tipo pueden ser creados en la colección de datos de Blender (bpy.data).
  • Nodo
Cada nodo de un árbol es de un tipo específico, lo cual define información básica, como el nombre y la cantidad de funciones de dibujado, definición de datos y reacción a actualizaciones.
  • Conector de nodo
Los conectores son tipos de conectores compartidos por todos los nodos de un árbol. Pueden transportar sus propios datos y dibujarla en la disposición del nodo, si fuera necesario.

Propiedades personalizadas

Los 3 tipos de arriba soportan propiedades personalizadas, lo cual les permite definir sus propias propiedades y almacenar datos en archivos .blend.

Limitacioines de las Propiedades personalizadas
En este momento las propiedades personalizadas tienen algunas limitaciones. En particular, algunos de los controles utilizados comunmente, como las rampas de color o las curvas, aún no pueden ser creadas usando nodos. Además, se requiere un camino alternativo para establecer un vínculo con otros bloques de datos utilizando cadenas conteniendo rutas de datos, lo cual no es lo ideal. Estas limitaciones serán ciertamente resueltas tan pronto como su necesidad sea prioritaria.


Dibujado

Los nodos y conectores pueden dibujar botones para sus propiedades usando el sistema de disposición. Esto funciona igual que al dibujar en paneles o menúes y es muy intuitivo para cualquier desarrollador de scripts que haya trabajado con la interfaz de Blender anteriormente.