Como guardar propiedades de objetos en key-frames con python

Preguntas y respuestas relacionadas con el uso y desarrollo de scripts Python y plugins para Blender 3D
Responder
Luis_Gutierrez
Mensajes: 9
Registrado: Vie Sep 01, 2017 5:21 pm
Nombre: Luis Gutierrez

Como guardar propiedades de objetos en key-frames con python

Mensaje por Luis_Gutierrez » Jue May 10, 2018 2:08 pm

Cuando cambio el material de un objeto como puedo guardar esa acción en un keyframe, ya que la idea es que durante la animación los objetos cambien de material repetidas veces. Los materiales tienen datos de color y transparencia. Esto desde un script en lenguaje Python. En caso de que no sea posible, como podría reproducir el efecto de cambio de color en la animación?

Muchas gracias.

dezr
Mensajes: 5
Registrado: Mar May 08, 2018 10:58 am
Nombre: David Esteban

Re: Como guardar propiedades de objetos en key-frames con py

Mensaje por dezr » Jue May 10, 2018 3:18 pm

Hola Luis no se si te he entendido bien, pero claro que puedes realizar una animación, creando keyframes en los materiales, solo debes presionar clic derecho sobre el la propiedad diffuse y presionas en la lista insert keyframe y en todas las propiedades que quieras animar haces lo mismo.
Con esta instrucción puedes hacer que cambie el color de un objeto bpy.context.object.active_material.diffuse_color = (0.8, 0.101614, 0.253456)

Para cambiar el color a varios objetos puedes usar algo como lo siguiente

Entonces haces un for en el cual vas a recorrer todos los objetos seleccionados en la escena
y luego le dices que a todos los objetos activos le cambies el color,
en este caso los valores respectivamente son r,g,b, lo mismo puedes hacer para cambiar cualquier propiedad solo es que cambies en el código por la propiedad que te interesa cambiar y así lo estarías haciendo a todos los objetos

for objeto in bpy.context.selected_objects:
objeto.active_material.diffuse_color = (1.0, 2.0, 1.3)
Estos valores los cambias por el color que quiere que tenga los objetos, por ejemplo si quieres que se vuelvan trasparentes seria
bpy.context.object.active_material.alpha = 0.886364

Espero haberle podido ayudo, que este bien.

dezr
Mensajes: 5
Registrado: Mar May 08, 2018 10:58 am
Nombre: David Esteban

Re: Como guardar propiedades de objetos en key-frames con py

Mensaje por dezr » Jue May 10, 2018 3:31 pm

Luis_Gutierrez escribió:Cuando cambio el material de un objeto como puedo guardar esa acción en un keyframe, ya que la idea es que durante la animación los objetos cambien de material repetidas veces. Los materiales tienen datos de color y transparencia. Esto desde un script en lenguaje Python. En caso de que no sea posible, como podría reproducir el efecto de cambio de color en la animación?

Muchas gracias.
Otra cosa Luis si quieres mirar la animación de un cambio de material debes ir a las propiedades de viewport shading Texture o material o sino hacer un render.

Luis_Gutierrez
Mensajes: 9
Registrado: Vie Sep 01, 2017 5:21 pm
Nombre: Luis Gutierrez

Re: Como guardar propiedades de objetos en key-frames con py

Mensaje por Luis_Gutierrez » Mar May 15, 2018 10:38 am

dezr escribió:Hola Luis no se si te he entendido bien, pero claro que puedes realizar una animación, creando keyframes en los materiales, solo debes presionar clic derecho sobre el la propiedad diffuse y presionas en la lista insert keyframe y en todas las propiedades que quieras animar haces lo mismo.
Con esta instrucción puedes hacer que cambie el color de un objeto bpy.context.object.active_material.diffuse_color = (0.8, 0.101614, 0.253456)

Para cambiar el color a varios objetos puedes usar algo como lo siguiente

Entonces haces un for en el cual vas a recorrer todos los objetos seleccionados en la escena
y luego le dices que a todos los objetos activos le cambies el color,
en este caso los valores respectivamente son r,g,b, lo mismo puedes hacer para cambiar cualquier propiedad solo es que cambies en el código por la propiedad que te interesa cambiar y así lo estarías haciendo a todos los objetos

for objeto in bpy.context.selected_objects:
objeto.active_material.diffuse_color = (1.0, 2.0, 1.3)
Estos valores los cambias por el color que quiere que tenga los objetos, por ejemplo si quieres que se vuelvan trasparentes seria
bpy.context.object.active_material.alpha = 0.886364

Espero haberle podido ayudo, que este bien.


Que tal dezr, muchas gracias por tu respuesta; lo que sucede es que toda la animación la deseo crear y ejecutar desde un script Python, así que cuando quiero cambiar un material quiero que esta acción quede guardada en una llave. Así que no tengo la posibilidad de guardar los keyframes con ayuda del mouse. Quisiera saber si esta acción, de insertar un keyframe en la propiedad deseada, se puede realizar a cabo desde código Python. En específico la propiedad de color y transparencia.

Muchas gracias.

Responder