Muestro un script (ChatGTP) para hacer "parent" a todos los objectos, a un solo objecto. (evitando los objectos que ya tenga parent)
Hola, para mi trabajo necesitabamos emparentar toda una animacion (varios objectos) a un empty en común.
Lo que pasaba era que algunos assets tenian muchos objectos, y algunos emparentados a otros de la misma animación. Bueno, para facilitar el trabajo, y porque no se nada de script, se lo pregunte a ChatGTP y me dio un script funcional, exactamente lo que ocupaba.
Manualmente, lo que se tendria que hacer, era revisar objecto por objecto, a ver cual ya tenian parent, para asi evitar que la animacion no funcione correctamente.
Script:
import bpy
# Nombre del objeto al que se parentarán los demás
parent_object_name = "Rot_"
# Obtener el objeto padre
parent_object = bpy.data.objects.get(parent_object_name)
# Deseleccionar todos los objetos
bpy.ops.object.select_all(action='DESELECT')
# Iterar sobre los objetos y seleccionar aquellos que no son cámaras, no son el objeto padre y no tienen un padre asignado
for obj in bpy.context.scene.objects:
if obj.type != 'CAMERA' and obj.name != parent_object_name and obj.parent is None:
obj.select_set(True)
# Seleccionar el objeto padre
bpy.context.view_layer.objects.active = parent_object
# Parentar los objetos seleccionados al objeto padre
bpy.ops.object.parent_set(type='OBJECT')
Bsaicamente lo que hace es:
- Selecciona todo lo de la escena (visible)
- Deselecciona los que ya tiene parent por defecto, y la camara (que no ocupaba que tuviera parent)
- Le hace un parent al objecto que se llame "Rot_" (en mi caso, pero este nombre se puede cambiar por cualquier objecto)
Listo, me ayudo mucho, solo como un pequeña muestra que a veces, el ChatGTP puede servir para agilizar alguna tarea en concreto.
Pura vida!