¿Dónde está el nodo Alpha Convert en Python?

Aug 19 2020

No quiero que mi alfa se multiplique previamente al guardar imágenes. En Blender puedes usar el compositor Alpha Convert Node para convertir de Premultiplicado a Directo. Parece que no puedo encontrar este nodo en la API de Python .

Respuestas

3 brockmann Aug 19 2020 at 20:13

CompositorNodePremulKey

Puede encontrar una lista completa de los tipos de nodos compositores disponibles aquí:https://docs.blender.org/api/current/bpy.types.CompositorNode.html.

alpha_convert = tree.nodes.new(type='CompositorNodePremulKey')
alpha_convert.mapping = 'PREMUL_TO_STRAIGHT'

Sin embargo, a veces es bastante difícil de entender ya que los nombres realmente no coinciden. Sugeriría crear el nodo en el compositor a mano e imprimirlo typeen la consola para tener una idea:

import bpy

class NodeOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "node.simple_operator"
    bl_label = "Simple Node Operator"

    @classmethod
    def poll(cls, context):
        space = context.space_data
        return space.type == 'NODE_EDITOR'

    def execute(self, context):
        space = context.space_data
        node_tree = space.node_tree
        node_active = context.active_node
        
        print (node_active.type)
        return {'FINISHED'}

def register():
    bpy.utils.register_class(NodeOperator)

def unregister():
    bpy.utils.unregister_class(NodeOperator)

if __name__ == "__main__":
    register()

O use el Node.bl_rnaatributo que devuelve la estructura real (para copiar el nombre):

>>> node_active.bl_rna
<bpy_struct, Struct("CompositorNodePremulKey")>

Relacionado: Control de compositor por python