Resultados 1 al 2 de 2

Alguien que sepa de python

  1. #1
    Fecha de ingreso
    May 2010
    Mensajes
    31

    Blender Alguien que sepa de python

    Estoy haciendo un exportador de un formato que invente, guarda las mallas, pero no he podido guardar la animación, tengo ya bastante tiempo tratando de resolverlo.

    Estuve leyendo la documentación del Api de Blender, pongan atención: busco las acciones para cada hueso, en cada frame obtengo la matriz de transformación en estado postura o posematrix, obtengo la matriz de transformación de cada hueso en espacio de armature o hueso, Matrix[armaturespace].

    La idea es invertir la matriz de armaturespace para conseguir una matriz de desplazamiento, después multiplicar esa matriz por la posematrix.

    Osea suponiendo que matw es la matriz de armaturespace.

    Matd = Matrix(matw).

    Matd, invert().

    Matrizresultante = matd * posematrix.

    Se suponía que al multiplicar la matriz resultante por un vértice el vértice seguiría el movimiento del hueso, pero no fue así.

    Lo que necesito es una Matrix que multiplicada por un vértice este siga el movimiento del hueso.

    Agradezco su ayuda.

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    El problema que describes es común al exportar animaciones desde Blender. Necesitas calcular la matriz de transformación final que afecta a los vértices. El enfoque correcto es obtener la matriz de pose de cada hueso en espacio de mundo y luego transformarla al espacio de la malla.

    Primero, para cada hueso en cada frame, obtén su matriz de pose. Esto se hace con bone.matrix en el contexto de la pose. Esta matriz ya tiene en cuenta la animación y la posición del hueso en el armature.

    Sin embargo, los vértices están en el espacio de la malla. La matriz que necesitas para transformar un vértice debe llevar el vértice desde el espacio de la malla al espacio del hueso en su pose animada, y luego al espacio de mundo. La forma estándar es usar la matriz de enlace inversa del hueso (bone.inverse_local) y la matriz de pose del hueso en espacio de mundo.

    El cálculo correcto es así. Para cada hueso, obtén su matriz de enlace inversa (rest pose) desde el armature en modo objeto, no desde la pose. Esto es armature.data.bones[bone_name].matrix_local.inverted() si el armature no tiene transformaciones. Si las tiene, debes considerar la matriz del objeto armature.

    Luego, en el bucle de animación, para cada frame y cada hueso, obtén la matriz de pose del hueso en espacio de mundo. Esto es armature_object.matrix_world @ bone.matrix.

    La matriz final que transforma vértices es el producto de la matriz de pose en mundo por la matriz de enlace inversa. Es decir, final_matrix = pose_matrix_world @ inverse_bind_matrix.

    Esta final_matrix es la que multiplicas por la posición del vértice en espacio de la malla. El vértice debe estar en coordenadas homogéneas (4 componentes, con w=1).

    Un detalle crucial. Si tu malla tiene su propia transformación (objeto matriz), debes pre-multiplicar la posición del vértice por la matriz del objeto malla o incluir esta transformación en la cadena. A menudo, se exportan los vértices en espacio mundial aplicando la matriz del objeto malla primero.

    En resumen, la fórmula clave es final_matrix = (armature_matrix_world @ pose_bone_matrix) @ inverse_bind_matrix. Asegúrate de que el orden de multiplicación de matrices sea correcto, de derecha a izquierda en Python.

    Para implementarlo, en el bucle de frames, actualiza la escena con bpy.context.scene.frame_set(frame). Luego para cada hueso de pose, accede a pose_bone = armature_obj.pose.bones[bone_name] y obtén su pose_bone.matrix. Calcula la matriz final como se describió.

    Prueba con un solo hueso y un vértice conocido para verificar que la transformación es correcta. Exporta las matrices para cada frame y cada hueso, y luego en tu motor de importación aplica la misma transformación.

Temas similares

  1. Busco a alguien que sepa de partículas para cortometraje 3d
    Por Vicvama en el foro Partículas y Dinámicas
    Respuestas: 1
    : 03-01-2026, 19:40
  2. Busco a alguien que sepa crear un modelo de una botella,para imprimirla en 3D
    Por asturnano en el foro Programas de Diseño 3D y CAD
    Respuestas: 1
    : 01-12-2017, 17:25
  3. Busco alguien que sepa modelar en 3d para un videojuego
    Por Aythami en el foro Oferta y demanda profesional
    Respuestas: 1
    : 23-07-2015, 14:56
  4. Animation-Master Urge alguien que sepa de MotionBuilder
    Por stamper en el foro Animación y Rigging
    Respuestas: 7
    : 05-02-2013, 17:41
  5. Noticias Alguien que haya estudiado en FX animation que sepa como es el curso
    Por seko_bcn en el foro Noticias 3D
    Respuestas: 6
    : 01-09-2009, 16:06