Cambiar la ropa de los personajes de MakeHuman en Unity3d

El objetivo del artículo es transferir al personaje de Makehuman a Unity3d para que su ropa se pueda quitar y poner durante el juego.





Para ello necesitamos Makehuman , Blender3d , Unity3d y su plugin UMA ( todos son gratuitos). El artículo fue escrito en base a este canal de YouTube, repitiendo después del autor, llené muchos baches y ahora estoy listo para expresar mi visión.





Etapa 1: Creación de personajes en Makehuman

Esta es la etapa más fácil y agradable, aquí debes modelar el personaje. Makehuman es un programa bastante simple, por lo que no describiré cómo trabajar con él.





Pero hay tres puntos importantes. Primero: necesitas agregar un esqueleto al modelo (agregado en la pestaña Pose / Animar). En este tutorial, estoy usando la plataforma Game Engine. En segundo lugar, si el personaje tiene la ropa, entonces deberá desactivar la opción de polígonos quitan debajo de la ropa (esto se puede hacer en el Geometris - pestaña> Ropa y desactive las caras ocultas bajo la ropa casilla de verificación ). En tercer lugar, debe exportar a fbx y especificar las unidades de metros. Además, por si acaso, puede guardar el modelo.





Algunos puntos adicionales

No es necesario cambiar la pose del personaje.

La ropa se puede exportar por partes. Es decir, no es necesario que se ponga toda la ropa a la vez, puede, por ejemplo, guardar primero un personaje que solo tiene pantalones y una camisa. En una licuadora, exportarlos, luego volver a hacer humanos, quitar la ropa vieja y repetir las operaciones de exportación, por ejemplo, para sombrero y botas.





Las unidades de medida son metros, lo que significa que diez celdas en makehuman significarán un metro convencional.





Etapa 2: Procesarlo en Blender3d

Hay tres cosas que debemos hacer aquí:





  • Normalizar modelo





  • Agregar un hueso global





  • Cortar partes del cuerpo





Inicie Blender3d. Primero necesitamos quitar la luz, la cámara y el cubo e importar nuestro modelo. Luego importamos nuestro modelo: Archivo -> Importar -> fbx (y seleccionamos nuestro archivo fbx)





El rastrillo que pisé

, makehuman, ( fbx , ). .





. , , , , . , . .









Cambiar al modo pose

, ( a)





pose ->clear transform -> all





Transformación clara

, , . .





90 ,





.





Cambiar al modo de objeto

. R , X . -90 Enter





, .





, , , , . scale 0.500, 1.000. , scale, , . .





0° 1.000 ( ).

, ( ) ctrl + a, rotation & scale.





, UMA. .





Global (Head= 0,0,0 Tail=0,0,0.1) //  
  Position (Head= 0,0,0 Tail=0,0,0.1) //   Root 
       ( pelvis)
      
      



Root Position. Transform .





( Game_engine) . add -> single bone





bone, Global , Position.





Global Position. Position.





Global, shift, Position. 3d ctrl + p, keep offset.





UMA - / - . , , .

















  • ( )

















(seams mesh). , ( , ). .





seams mesh

( ). (, ) .





costuras de malla
seams mesh

shift + d, RMB





.





seams mesh ( ).





, .





( seams mesh).

.





alt ( , ).





UPD: ( c) , ValeryIvanov :





( h), L ( ), , Alt + L. P Selection. , .





Ocultar la raya en el cuello (H)
( H)
Presione L para seleccionar la cabeza (el cursor debe estar en la cabeza)
L ( )
Muestre la tira (Alt + L) y seleccione la selección (P -> Selección)
(Alt + L) (P -> Selection)

.





. . .





.





, seams mesh . .





fbx ( makehuman )





3: UMA

unity, , unity. UMA - Unity Multipurpose Avatar, . UMA/Getting Started/UMA_GLIB .





, characters. (fbx ). , . fix now.





UMA ( characters), . . , .





fbx , Convert Units, Apply. rig animation type, Humanoid Apply.





UMA -> Extract T-Pose ( fbx ). TPoses -.





UMA -> Slot Builder, . fbx seams mesh seams mesh Slot Builder. UMAMaterial UMA_defuse ( ). slot destination folder .





automatic Drag and Drop porcessig. , , ( ). , seams mesh None , .





. , UMA, , , , , ( ). , , Create -> UMA -> Core -> Overlay Asset. Overlay name ( head), material ( UMA_defuse) 1, _MainTex . .





TextRecipe RaceData

Create -> UMA -> Core -> Race Data, Create -> UMA -> Core -> Text Recipe. - . - / . . , Race Name , TPose - . Base Race Recipe .





Wardrobe Slots, - , . Wardrobe Recipe. Wardrobe Recipe . Wardrobe Recipe ? , () . , , ( , ). Wardrobe Recipe , , ( ), , . Wardrobe Slots :





  • None





  • Hair





  • Shirt





  • Pants





  • Shoes





BaseRecipe, Slots. Race Data (, ). ( ). . . , shared overlays.





UMA -> Global Library, .





. UMA/Getting Started/UMADynamicCharacterAvatar ( ). Dynamic Character Avatar Active Race .





( , ). , . Race Animation Controllers Race Animators , Race , Animator IdleTest-w-head.





Play. .





Create -> UMA -> DCS -> Waredrop Recipe, , Wardrobe Slot . , . , . . , Customization -> Default Recipes .





, . Create -> UMA -> Misc -> Mesh Hide Asset, , , Begin Editing , . Waredrop Recipe Add Mesh Hide Asset, .





. Dynamic Character Avatar, Customisation -> Default Waredrop Recipes .





DynamicCharacterAvatar. SetSlot ClearSlot , BuildCharacter. SetSlot . . Waredrop Recipe. ClearSlot .





SetSlot ()

, . , SetSlot Waredrop Slot Waredrop Recipe.





, - AddWardrobe RemoveWardrobe.





using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UMA;
using UMA.CharacterSystem;

public class Program : MonoBehaviour
{
	//     Dynamic Character Avatar
	public GameObject DCA;
	private DynamicCharacterAvatar avatar;
	
	void Start(){
		avatar = DCA.GetComponent<DynamicCharacterAvatar>();
	}

	public void AddWardrobe(string wardrobeSlot, string wardrobeRecipe){
		avatar.SetSlot(wardrobeSlot,wardrobeRecipe);
		avatar.BuildCharacter();
	}
	
	public void RemoveWardrobe(string wardrobeSlot){
		avatar.ClearSlot(wardrobeSlot);
		avatar.BuildCharacter();
	}
}
      
      



Gracias por leer hasta el final, espero que este artículo sea ​​un paso más para que puedas crear el juego de tus sueños.








All Articles