Jump to content
Sign in to follow this  
pioj

FBX desde Mixamo, salen "corruptos".

Recommended Posts

Hola, abro este hilo para informar que he encontrado un bug o "algo raro" en la versión actual de la herramienta online Mixamo.

Cuando importas un FBX a la web para ponerle animaciones, internamente lo que hace la herramienta es REGENERAR la malla3D. Hemos podido comprobar ésto con algunas pruebas de personajes animados que tenían bones, y que al grabarse desde Mixamo no sólo han perdido los nombres y referencias, sinó que hasta salen con una jerarquía totalmente diferente. Lo mismo ocurre con personajes que ya contaban con un esqueleto...

Es importante corroborar con más personas si ésto pasa de forma común, o se debe a algún error previo cuando se exporta un FBX desde 3DSMax.

Por favor, si encontráis más info al respecto, ponedla por aquí, pls. Está fastidiando a unas cuantas personas...

Share this post


Link to post
Share on other sites

¿Habeis probado a exportar ese fbx desde blender?, por descartar como dices que sea algo de 3d max. Con las diferentes versiones del plugin exportador de fbx existentes lo mismo es que mixamo ha puesto una nueva y al importar desde una version vieja se ralla, o viceversa.

 

Share this post


Link to post
Share on other sites

Hemos probado con varios programas que soportan .FBX , y desde el mismo 3dsmax hemos probado a grabar en distintas versiones del formato...

Share this post


Link to post
Share on other sites

Me suena (no me hagas mucho caso) que el plugin de mixamo estaba deprecated o eso lei hace algun tiempo, tal vez por eso ya no funciona como debe. Pero esto es algo viejo, lei esa noticia hace tiempo, pero no le segui la pista para ver como terminaba la historia con mixamo y su plugin.....

Share this post


Link to post
Share on other sites

No, si el plugin como tal ya no existe. Ahora directamente se hace todo desde la propia web de mixamo, y es la web la que te genera el FBX final para importarlo a Unity3D.

El tema es que ese FBX resultante es re-generado por completo, te rompe los huesos o cualquier otra cosa que quisieras respetar de 3dsmax, bones y blendshapes, etc..

Share this post


Link to post
Share on other sites

No lo sé, yo siempre lo uso para subirle un OBJ, que me haga un riggeado rápido aunque después tenga que arreglarlo en 3ds max, también lo uso para coger modelos del Adobe fuse, los archivos FBX que me descarga mixamo puedo importarlo y usarlo en Unity, aunque generalmente de poco me sirven, normalmente tiendo a llevar ese FBX de mixamo a 3ds max donde hago los ajustes que sean.

Para los nombres, de los huesos, me cree un pequeño maxscript cutre para renombrarlos según mis necesidades, renombrar huesos no es difícil, pero con el script pues se ahorra tiempo y se hace las cosas más sencillas. 

 

Arrastrar sobre el escritorio de 3ds max para ejecutar (El 1º array, de REDSC porque primero lo hice para el Resident Evil Darkside Chronicles y luego simplemente lo reutilicé. Pero el 1º array es el de los huesos de origen, y el 2º array el de los huesos de destino, luego simplemente va buscando entre los objetos de 3ds max de la escena por los nombres del 1º array, si los encuentra, pues lo sustituye por su homónimo del 2º array).

   REDSCnames =#("b_0_1","mixamorig:Hips","mixamorig:Spine2","mixamorig:Spine1","mixamorig:Neck","mixamorig:Head","mixamorig:RightShoulder","b_22_51","mixamorig:RightArm","mixamorig:RightForeArm", "mixamorig:Spine",
"mixamorig:LeftShoulder","b_52_53","mixamorig:LeftArm","mixamorig:LeftForeArm","ManoIzq","b_2_3","mixamorig:RightUpLeg","mixamorig:RightLeg","mixamorig:RightFoot","mixamorig:RightToeBase",
"mixamorig:LeftUpLeg","mixamorig:LeftLeg","mixamorig:LeftFoot","mixamorig:LeftToeBase","mixamorig:RightHandThumb1","mixamorig:RightHandThumb2","mixamorig:RightHandThumb3","mixamorig:RightHandIndex1","mixamorig:RightHandIndex2","mixamorig:RightHandIndex3",
"mixamorig:RightHandMiddle1","mixamorig:RightHandMiddle2", "mixamorig:RightHandMiddle3","mixamorig:RightHandRing1","mixamorig:RightHandRing2","mixamorig:RightHandRing3","mixamorig:RightHandPinky1","mixamorig:RightHandPinky2","mixamorig:RightHandPinky3","_39",
"mixamorig:LeftHandMiddle1","mixamorig:LeftHandMiddle2", "mixamorig:LeftHandMiddle3","mixamorig:LeftHandRing1","mixamorig:LeftHandRing2","mixamorig:LeftHandRing3","mixamorig:LeftHandPinky1","mixamorig:LeftHandPinky2","mixamorig:LeftHandPinky3","_49",
"mixamorig:LeftHandThumb1","mixamorig:LeftHandThumb2","mixamorig:LeftHandThumb3","mixamorig:LeftHandIndex1","mixamorig:LeftHandIndex2","mixamorig:LeftHandIndex3","mixamorig:RightHand","mixamorig:LeftHand")

XNALaranames = #("root ground", "root hips","spine upper","spine middle","head neck lower","head neck upper","arm right shoulder 1","arm right shoulder fix","arm right shoulder 2","arm right elbow","spine lower",
"arm left shoulder 1","arm left shoulder fix","arm left shoulder 2","arm left elbow","ManoIzqMod","pelvis","leg right thigh","leg right knee","leg right ankle","leg right toes",
"leg left thigh","leg left knee","leg left ankle","leg left toes","arm right finger 0 a","arm right finger 0 b","arm right finger 0 c","arm right finger 1 a","arm right finger 1 b","arm right finger 1 c",
"arm right finger 2 a","arm right finger 2 b", "arm right finger 2 c","arm right finger 3 a","arm right finger 3 b","arm right finger 3 c","arm right finger 4 a","arm right finger 4 b","arm right finger 4 c","_39",
"arm left finger 2 a","arm left finger 2 b", "arm left finger 2 c","arm left finger 3 a","arm left finger 3 b","arm left finger 3 c","arm left finger 4 a","arm left finger 4 b","arm left finger 4 c","_49",
"arm left finger 0 a","arm left finger 0 b","arm left finger 0 c","arm left finger 1 a","arm left finger 1 b","arm left finger 1 c", "arm right wrist","arm left wrist")

index = 1

rollout WindowType "REDSC Name Replacer"
(
	edittext FndWht "Find what :" text:"" width:210 align:#center
	edittext RplcWth "Replace with :" text:"" width:210 align:#center
	button replacAllBttn "Replace All" width:78 align:#right tooltip:""

	on replacAllBttn pressed do
	while index < 60 do
	(
		FndWht.text = REDSCnames[index]
		RplcWth.text = XNALaranames[index]
		if FndWht.text!="" and FndWht.text!=RplcWth.text then
		(
			mthCnt=#()
			for i = 1 to objects.count do
			(
				qualif = matchPattern objects[i].name pattern: ("*"+FndWht.text+"*") ignoreCase:true

				if qualif == true then
				(
					append mthCnt objects[i]
				)
			)
            
			print ("Find : "+FndWht.text+"   Match "+(mthCnt.count as string)+" Object(s)")
			print ("Replace with : "+RplcWth.text)
			
			multiMth=#()
			for i = 1 to mthCnt.count do
			(
				nmOld=mthCnt[i].name
				mthCnt[i].name=substituteString mthCnt[i].name FndWht.text RplcWth.text

				print (nmOld+" renamed to "+mthCnt[i].name)
			)
		)
		index += 1
	)
)

WindowTitle = newRolloutFloater "Name Replacer" 400 150
addRollout WindowType WindowTitle

Cuando uso animaciones de mixamo, otro problema que tengo es que los huesos de distintas animaciones son diferentes, aunque uso el Mecanim de Unity, muchas veces no puedo reutilizar el mismo avatar, las rotaciones son diferentes (causando joroba en los personajes o doblando los dedos de manera extraña).

Creo que Mixamo es muy útil, pero para usarlo tengo que ajustar cosas, no me vale pasarlas directamente. Lo que estoy intentando ahora, es crear 1 personaje genérico, y tratar de crear los otros personajes a partir de ese modificaciones (en Maya LT) a ese pj, en vez de tener que pasar por todo el proceso otra vez (especialmente por el asunto del rigging facial @_@) espero a la larga poder ahorrar trabajo de esta manera.

 

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...