sábado, 15 de diciembre de 2012

[Blender Script] - Generador ID Color Mask

Hola a todos.
Bueno, estoy con muchísimo trabajo, y escribiendo muchísimo Python para el mismo.
Me encontré con que un retocador me pidió una mascara de ID en color, como en max. Como nativamente no encontré algo que lo saque automaticament hice un pequeño generador de un nodo que soluciona el problema.

Esto es re simple, pero creo que puede servir mucho.





"""
Seleccionar un objeto que tenga un nodo cycles y correr.
"""
import bpy
import random

ACTOBJ=bpy.context.active_object
ACTMAT=ACTOBJ.material_slots[bpy.context.object.active_material_index].material
NODE=ACTMAT.node_tree.nodes.new(type="VALTORGB", group=None)    

COLORS=30


CHUNK=1/COLORS
I=0
for ELEMENT in range(COLORS):
    NODE.color_ramp.interpolation="CONSTANT"
    ELEMENTO=NODE.color_ramp.elements.new(I)    
    ELEMENTO.color=(random.uniform(0,1),random.uniform(0,1),random.uniform(0,1),1)
    I+=CHUNK

---------------------------------------



Si seleccionan un objeto que tenga en el slot de materiales activos un material de cycles, corriendo el script se generará automáticamente un nodo de ramp con muchos colores aleatoriamente.
Solo conecten este material a un emission a la salida y a un random object a la entrada.





Para hacer este proceso no destructivo yo uso el Oscurart Tools, y saco un pass.
Si dos colores quedan overlapeados pueden generan otro nodo para reemplazar.

6 comentarios:

  1. really useful, it is difficult to code a polygroups generator for modeling like in zbrush, this can be automatic, base on selection,whit random color

    ResponderEliminar
  2. Traceback (most recent call last):
    File "../trebushet.blend/Text", line 9, in
    IndexError: bpy_prop_collection[index]: index 0 out of range, size 0
    Error: Python script fail, look in the console for now...

    ResponderEliminar
  3. Nikita, seguro no tenés un material de cycles en el objeto activo.
    Create uno antes.

    ResponderEliminar
  4. Buenas dias! I have a problem with this script!
    It tells me an error. Nodes.new() takes only one argument.
    Probably they changed the way the color ramp node is defined. Do you have a new version of this script that works with 2.69?
    Many thanks!

    ResponderEliminar
  5. Lell, I'm thinking in a bug.... Please come back in some hours!

    ResponderEliminar
  6. Bueno, I'll wait for your solution! Thanks!

    ResponderEliminar