Duplicar objetos y desvincular malla (BGE Python)

Preguntas y respuestas relacionadas con el uso y desarrollo de scripts Python y plugins para Blender 3D
Responder
vyos
Mensajes: 3
Registrado: Mié Dic 04, 2013 3:45 am
Nombre:

Duplicar objetos y desvincular malla (BGE Python)

Mensaje por vyos » Mié Jun 25, 2014 5:41 am

Hola,

me gustaría que me ayudarais a saber si es posible resolver el siguiente problema en el que estoy atascado en un proyecto:

- Utilizo la versión Blender 2.59, python 3.2 y BGE
- Para copiar un objeto (con objetos hijos) que está en una capa inactiva utilizo scene.addObject() (También he utilizado el actuador "Add Object" junto con instantAddObject y objectLastCreated pero el resultado es el mismo)
- Hasta aquí todo bien, pero parece que la copia de estos objetos la hace vinculante (tipo ALT+D), de modo que cuando cambio cualquier cosa de uno de los objetos, me lo cambia también en el resto.

Mi pregunta es la siguiente, ¿es posible realizar copias desde python (BGE) que no sean vinculantes como si se utilizara SHIFT+D?

Muchas gracias!

YHOYO0
Mensajes: 142
Registrado: Sab May 06, 2006 11:05 am
Nombre:
Contactar:

Re: Duplicar objetos y desvincular malla (BGE Python)

Mensaje por YHOYO0 » Mié Jun 25, 2014 7:40 am

hola hola

El truco esta en el parametro "linked=" ... si dicho parametro es TRUE pues si se modificara si el primero se modifica... si es FALSE no lo sera

supongo que adaptando el siguiente código a tus necesidades podras sortear el problema sin dificultades

Código: Seleccionar todo

bpy.ops.object.duplicate(linked=False, mode='TRANSLATION')
Duplicate selected objects

Parameters:	
linked (boolean, (optional)) – Linked, Duplicate object but not object data, linking to the original data
mode (enum in [‘INIT’, ‘DUMMY’, ‘TRANSLATION’, ‘ROTATION’, ‘RESIZE’, ‘SKIN_RESIZE’, ‘TOSPHERE’, ‘SHEAR’, ‘BEND’, ‘SHRINKFATTEN’, ‘TILT’, ‘TRACKBALL’, ‘PUSHPULL’, ‘CREASE’, ‘MIRROR’, ‘BONE_SIZE’, ‘BONE_ENVELOPE’, ‘CURVE_SHRINKFATTEN’, ‘MASK_SHRINKFATTEN’, ‘BONE_ROLL’, ‘TIME_TRANSLATE’, ‘TIME_SLIDE’, ‘TIME_SCALE’, ‘TIME_EXTEND’, ‘BAKE_TIME’, ‘BWEIGHT’, ‘ALIGN’, ‘EDGESLIDE’, ‘SEQSLIDE’], (optional)) – Mode
sin ver el código que tienes es lo mas que puedo ayudar :D
saludos

Diego

vyos
Mensajes: 3
Registrado: Mié Dic 04, 2013 3:45 am
Nombre:

Re: Duplicar objetos y desvincular malla (BGE Python)

Mensaje por vyos » Mié Jun 25, 2014 9:18 am

Primero, gracias por la respuesta.

Cierto que falta información por mi parte :o) Lo explico un poco por encima:

- Al proceso Blender, en tiempo de ejecución, le llegan mensajes vía socket y el script principal carga una u otra escena. Dependiendo en la que esté, se le pasa al objeto que lleva la lógica de la escena el mensaje con la acción a realizar y otro script realiza dicha acción.

- En el caso que planteo, dicha lógica debe ir cargando en escena el mismo objeto pero con cambios en las texturas en sus objetos hijos:

*************************************
import GameLogic

me = cont.owner
scene = GameLogic.getCurrentScene()

def mostrar_fun(num_objetos,premio):
if (num_objetos > 0):
for i in range(num_objetos):

botin.lista.append(scene.addObject("obj_original",me))

ob = botin.lista[len(botin.lista)-1]
ob["move"] = True

if (premio > 0 and premio < 100):
ob["score"] = premio

Nota: obj_original es un objeto empty
**************************************

Cuando la propiedad del objeto copiado (score) cambia, se ejecuta otro script que toma los objetos hijos de este y cambia sus coordenadas UV. Aquí es cuando todos los objetos hijos de todos los objetos copiados cambian al mismo tiempo.

Con la función scene.addObject() me carga en la escena un nuevo objeto con todos sus objetos hijos también, pero parece que realmente es un objeto que referencia al original (como si fueran punteros apuntando al mismo objeto)

Con la función que me indicas he probado que solo te carga en escena el objeto que indicas pero no sus hijos ( o por lo menos no lo consigo ;o) )

Gracias!

YHOYO0
Mensajes: 142
Registrado: Sab May 06, 2006 11:05 am
Nombre:
Contactar:

Re: Duplicar objetos y desvincular malla (BGE Python)

Mensaje por YHOYO0 » Mié Jun 25, 2014 9:31 am

hola hola....

umm hay opcion que me pases el blend para ver como lo estas haciendo???

asi le pongo mano directamente al blend que tienes a ver si puedo solucionarlo.. si no pues tambien te aviso....

raro que no te vincule los hijos tambien..

sigo pensando tambien.........

saludos

Diego

Responder