Troque de roupa nos personagens de MakeHuman em Unity3d

O objetivo do artigo é transferir o personagem de Makehuman para Unity3d para que suas roupas possam ser tiradas e colocadas durante o jogo.





Para isso, precisamos de Makehuman , Blender3d , Unity3d e seu plugin UMA (são todos gratuitos). O artigo foi escrito com base neste canal do YouTube, repetindo após o autor, preenchi muitos obstáculos e agora estou pronto para expor minha visão.





Estágio 1: Criação de Personagem em Makehuman

Esta é a fase mais fácil e divertida, aqui você precisa modelar o personagem. Makehuman é um programa bastante simples, então não descreverei como trabalhar com ele.





Mas existem três pontos importantes. Primeiro: você precisa adicionar um esqueleto ao modelo (adicionado na guia Pose / Animate). Neste tutorial, estou usando o rig Game Engine. Em segundo lugar, se o personagem tem roupas, você precisa desabilitar a opção de remover polígonos por baixo das roupas (isso pode ser feito na guia Geometris -> Roupas e desmarque a caixa de seleção Ocultar rostos sob as roupas). Em terceiro lugar, você precisa exportar para fbx e especificar as unidades de metros. Além disso, por precaução, você pode salvar o modelo.





Alguns pontos adicionais

Não há necessidade de mudar a pose do personagem.

As roupas podem ser exportadas em partes. Ou seja, você não precisa colocar todas as roupas de uma vez, você pode, por exemplo, primeiro salvar um personagem que tem apenas calça e camisa. Em um liquidificador, exporte-os, depois volte a makehuman, retire as roupas velhas e repita as operações de exportação, por exemplo, para chapéu e botas.





As unidades de medida são metros, o que significa que dez células em makehuman significarão um metro convencional





Etapa 2: Processando no Blender3d

Existem três coisas que precisamos fazer aqui:





  • Normalizar modelo





  • Adicione um osso global





  • Cortar partes do corpo





Abra o Blender3d. Primeiro precisamos remover a luz, câmera e cubo e importar nosso modelo. Em seguida, importamos nosso modelo: Arquivo -> Importar -> fbx (e selecionamos nosso arquivo fbx)





O ancinho em que pisei

, makehuman, ( fbx , ). .





. , , , , . , . .









Mudar para o modo pose

, ( a)





pose ->clear transform -> all





Transformação clara

, , . .





90 ,





.





Mudando para o 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

( ). (, ) .





seams mesh
seams mesh

shift + d, RMB





.





seams mesh ( ).





, .





( seams mesh).

.





alt ( , ).





UPD: ( c) , ValeryIvanov :





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





    ( H)
( H)
  L    (    )
L ( )
  (Alt + L)    (P -> Selection)
(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();
	}
}
      
      



Obrigado por ler até o fim, espero que este artigo seja mais um passo para você criar o jogo dos seus sonhos.








All Articles