Changer de vêtements sur les personnages de MakeHuman dans Unity3d

Le but de l'article est de transférer le personnage de Makehuman vers Unity3d afin que ses vêtements puissent être enlevés et mis en cours de partie.





Pour cela, nous avons besoin de Makehuman , Blender3d , Unity3d et son plugin UMA (ils sont tous gratuits). L'article a été écrit sur la base de cette chaîne YouTube, répétant après l'auteur, j'ai rempli beaucoup de bosses, et maintenant je suis prêt à énoncer ma vision.





Étape 1: Création de personnage dans Makehuman

C'est l'étape la plus simple et la plus agréable, ici vous devez modéliser le personnage. Makehuman est un programme assez simple, donc je ne décrirai pas comment travailler avec.





Mais il y a trois points importants. Premièrement: vous devez ajouter un squelette au modèle (ajouté dans l'onglet Pose / Animer). Dans ce tutoriel, j'utilise la plate-forme Game Engine. En second lieu , si le personnage a des vêtements, alors vous devez désactiver l'option pour supprimer les polygones sous les vêtements (cela peut se faire dans le Geometris -> onglet Vêtements et décochez les faces se cacher sous des vêtements case ). Troisièmement, vous devez exporter vers fbx et spécifier les unités de mètres. De plus, au cas où, vous pouvez enregistrer le modèle.





Quelques points supplémentaires

Il n'est pas nécessaire de changer la pose du personnage.

Les vêtements peuvent être exportés en plusieurs parties. Autrement dit, vous n'avez pas besoin de mettre tous les vêtements à la fois, vous pouvez, par exemple, d'abord enregistrer un personnage qui n'a qu'un pantalon et une chemise. Dans un mixeur, exportez-les, puis retournez chez makehuman, retirez les vieux vêtements et répétez les opérations d'exportation, par exemple, pour le chapeau et les bottes.





Les unités de mesure sont les mètres, ce qui signifie que dix cellules dans makehuman signifieront un compteur conventionnel





Étape 2: traitement dans Blender3d

Il y a trois choses que nous devons faire ici:





  • Normaliser le modèle





  • Ajouter un os global





  • Couper les parties du corps





Lancez Blender3d. Nous devons d'abord supprimer la lumière, la caméra et le cube et importer notre modèle. Ensuite, nous importons notre modèle: Fichier -> Importer -> fbx (et sélectionnez notre fichier fbx)





Le râteau sur lequel j'ai marché

, makehuman, ( fbx , ). .





. , , , , . , . .









Passer en mode pose

, ( a)





pose ->clear transform -> all





Transformation claire

, , . .





90 ,





.





Passage en mode objet

. 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();
	}
}
      
      



Merci d'avoir lu jusqu'au bout, j'espère que cet article sera une autre étape pour vous pour créer le jeu de vos rêves.








All Articles