Resultados 1 al 2 de 2

Extraer u exportar datos de una Maya maxscript

  1. #1
    Fecha de ingreso
    Aug 2011
    Mensajes
    11

    3dsmax Extraer u exportar datos de una maya maxscript

    Hola sabios del 3d, sí, soy esa clase de personas que visita foros solo para preguntar cosas, pero cuidado, aporto todo lo que buenamente puedo y pregunto solo que no he encontrado con el buscador y en los respectivos subforos.

    Mis apariciones anteriores fueron con el tema del cual os pediré ayuda y consejo aquí, era aquí: huesos-finalizadores y Bones-longitud-exacta.
    Clic en la imagen para ver su versión completa. 

Nombre: reescalado completo-4.jpg 
Visitas: 173 
Tamaño: 91.4 KB 
ID: 157123 Clic en la imagen para ver su versión completa. 

Nombre: 4.jpg 
Visitas: 177 
Tamaño: 86.2 KB 
ID: 157124

    Y en este momento tengo el modelo de la mano con el antebrazo, con sus Bones y con el rigged completo usando skin (si, un poco básico, por no decir cutre) y lo que necesito hacer y por tanto también necesito ayuda es para hacer un script para obtener:
    -Posiciones de los ejes de coordenadas de los Bones y de los puntos de la malla (fácil, se cómo hacerlo). De alguna manera recorro el esqueleto de Bones (con un for) y dentro de el pido el parámetro position, ¿no? Edito: ya tengo el script para los puntos y las caras de la malla.
    -ángulos entre huesos, aquí si que no conozco el comando que hay que utilizar, ni cómo hacer un bucle para obtenerlos todos fácilmente. Edito: creo que lo mejor será hacerlo manualmente.

    Pesos relativos de cada vértice de la Maya respecto a los huesos, sí, sale en una tabla fácilmente sin usar script, pero soy incapaz de copiarla a Excel, googledocs u openoffice, alguien sabe cómo se puede hacer?
    Este es el script que he creado, muestra las coordenadas y las caras de cada vértice de la malla que esté seleccionada, los comentarios espero que ayuden y sean correctos.
    Tmesh = snapshotasmesh selection[1] -con la malla seleccionada realiza una copia de la malla para el recuento.

    Out_name = ((Getdir #export)+/lista de datos, dat)--variable con la selección de carpeta y nombre de archivo.

    Out_file = createfile out_name--orden de crear el archivo.

    Num_verts = tmesh, numverts--recuento del número de vértices.

    Num_faces = tmesh, numfaces--recuento del número de caras.

    Out_text1 = número de vértices--preparación del texto de salida en variables.

    Out_text2 = vértice número.

    Out_text3 = número de caras.

    Out_text4 = cara número.

    Format %:%\nOut_text1 num_verts to:out_file--escritura de la primera línea con el número de vértices.

    Format %:%\nOut_text3 num_faces to:out_file--escritura del número de caras.

    Format \nTo:out_file--salto de línea.

    For v = 1 todo num_verts do--for con tantas iteraciones como vértices.

    Vert = getvert tmesh v--extracción de las coordenadas del vértice v a una variable.

    Text_v = out_text2 + v as string--preparación del texto de salida en una variable.

    Format %:%\nText_v vert to:out_file--escritura de la línea de cada vértice).

    Format \nTo:out_file--último salto de línea.

    Format \nTo:out_file--salto de línea.

    For f = 1 todo num_faces do.

    Face = getface tmesh f--extracción de los vértices de la cara f a una variable.

    Text_f = out_text4 + f as string--preparación del texto de salida en una variable.

    Format %:%\nText_f face to:out_file--escritura de la línea de cada cara).

    Close out_file.

    Deleete tmesh--borrado de la malla de recuento.

    Edit out_name--abre el archivo recién creado.
    Ahora tengo otra duda de script, y es como indicarle a un bucle for que me de algún parámetro de sucesivos objetos p ej: bola1, bola2, bola3 he probado varias maneras de meter la variable dentro del nombre del objeto. Muchas gracias de antemano.

    -- IMÁGENES ADJUNTAS --

    Última edición por Parda; 20-01-2012 a las 18:53

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    Para extraer datos de huesos y pesos de skin en 3ds Max actualmente, el enfoque más robusto es usar MAXScript. Para los huesos, puedes obtener las posiciones en espacio mundial con el método .transform.pos. Para los ángulos entre huesos, necesitas calcular el ángulo entre los vectores de dirección de los huesos. Puedes obtener la dirección de un hueso restando la posición de su hijo de la suya propia si existe una jerarquía, o usando su eje local.

    Para los pesos del skin, debes acceder al modificador Skin y recorrer cada vértice y cada hueso influyente. El siguiente script ejemplo muestra cómo hacerlo. Para ejecutarlo, abre el Listener de MAXScript (MAXScript > MAXScript Listener) y pega el código. Asegúrate de tener seleccionado el objeto con el modificador Skin.

    Primero, para obtener posiciones de huesos y ángulos, puedes usar un código como este. Asume que los huesos están seleccionados o son hijos de un objeto raíz.

    obj = $tu_objeto_con_skin
    modSkin = obj.modifiers[#Skin]
    skinOps.GetNumberBones modSkin
    for b in 1 to skinOps.GetNumberBones modSkin do ( boneName = skinOps.GetBoneName modSkin b 0; print boneName )
    for v in 1 to obj.numVerts do ( for w in 1 to skinOps.GetVertexWeightCount modSkin v do ( boneIndex = skinOps.GetVertexWeightBoneID modSkin v w; weight = skinOps.GetVertexWeight modSkin v w; print #(v, boneIndex, weight) ) )

    Para exportar a un archivo, usa createFile y format. Para los ángulos, si tienes una cadena de huesos, calcula el vector de cada hueso (por ejemplo, de la posición del hueso a la de su hijo). Luego usa la fórmula del ángulo: angulo = acos (dot (normalize v1) (normalize v2)). Esto te dará el ángulo en radianes.

    Para tu duda del bucle con nombres como bola1, bola2, usa la notación de string y concatenación. Por ejemplo, for i in 1 to 10 do ( objName = "bola" + i as string; obj = getNodeByName objName; if obj != undefined then ( print obj.pos ) ). Esto busca cada objeto por nombre.

    La herramienta actual recomendada para manejar datos de skin y animación es el propio 3ds Max con MAXScript, o también puedes usar Python dentro de 3ds Max si lo prefieres. Para una extracción más avanzada, considera usar el SDK de C++ de Max, pero eso requiere programación nativa.

    Para copiar la tabla de pesos a Excel, no se puede directamente desde la ventana de Skin. Debes usar un script como el descrito para escribir los datos en un archivo de texto separado por comas (CSV) que luego abres con Excel. El script anterior recorre vértices y pesos; solo debes modificar para que escriba en un archivo con formato CSV usando format.

Temas similares

  1. Autodesk Maya Extraer UVS Maya
    Por smartpower en el foro Materiales y Texturizado
    Respuestas: 1
    : 27-12-2025, 19:40
  2. Videojuegos Al exportar modelo de ZBrush a Maya debo exportar todos los mapas?
    Por iljonios en el foro Videojuegos
    Respuestas: 2
    : 12-05-2017, 14:21
  3. Extraer datos clave de todo un texto
    Por desiresportal en el foro Plugins y Scripts
    Respuestas: 2
    : 06-04-2013, 19:30
  4. Autodesk Maya Problema con al extraer Vector displacement de Mudbox a Maya
    Por JAMAL_WALLACE en el foro Programas de Diseño 3D y CAD
    Respuestas: 7
    : 30-08-2012, 14:40
  5. Respuestas: 1
    : 22-07-2008, 12:49