WENOPAL

Roupas e modelos 3D em mods de Project Zomboid

Como se monta uma peça de roupa na B42, qual roupa é um modelo 3D e qual é pintada sobre o corpo, e os erros que deram trabalho para achar fazendo tênis, bonés e moletons.

Nível avançado · Atualizado em

Roupa é uma das coisas mais satisfatórias de modar, porque aparece vestida no seu personagem e nos zumbis. Também é a que tem mais armadilhas. Este guia saiu da criação de Catimbas (89 tênis), Jockies (46 bonés; no Chile, jockey é boné), Buzitos (buzos, os moletons/agasalhos chilenos) e Telezombies.

As três peças de uma roupa

  1. O item (script .txt), com ItemType = base:clothing, onde ele é vestido (BodyLocation) e qual peça visual usa (ClothingItem):
text
item Nike_AirForce1_White
{
    DisplayCategory = Clothing,
    ItemType = base:clothing,
    BodyLocation = base:shoes,
    BloodLocation = Shoes,
    ClothingItem = Nike_AirForce1_White,
    Icon = Nike_AirForce1_White,
    WorldStaticModel = Nike_AirForce1_White_Ground,
}

Os valores possíveis de BodyLocation estão na referência de BodyLocations.

  1. A peça visual, um XML em media/clothing/clothingItems/ que diz qual modelo e qual textura usar.
  2. O registro do GUID em media/fileGuidTable.xml, que liga o XML a um identificador único.

Modelo 3D ou pintada sobre o corpo?

Nem toda roupa do jogo é um modelo 3D. Isso define quanto trabalho o seu mod vai dar:

TipoComo funciona no jogoO que fizemos
Camisetas (poleras, no Chile)São pintadas sobre a textura do corpo (256×256)Fútbol Chileno Z: escudos pintados no peito
Sapatos vanillaTambém são pintados sobre o péCatimbas: fizemos modelos 3D próprios para o logo aparecer
Bonés e chapéusSão modelos 3D do jogoJockies: reaproveitamos o modelo do boné e só trocamos a textura
Jaquetas e calçasModelos 3D que usam o UV do corpoBuzitos: reaproveitamos as malhas do agasalho vanilla com texturas novas

Reaproveitar um modelo do jogo e trocar a textura é, de longe, o caminho mais rápido.

O erro dos buracos: m_MasksFolder

Sintoma: a roupa fica perfeita no chão e no inventário, mas vestida faltam pedaços, como lâminas que não fecham. Com calça por cima é pior.

Causa: o jogo recorta cada peça com "máscaras" para que não apareça o que as peças de cima cobrem. Essas máscaras são desenhadas para o UV do corpo. Se o seu modelo tem um UV próprio (um tênis, um capacete), os recortes caem em lugares aleatórios.

Solução: no XML da peça:

xml
<m_MasksFolder>none</m_MasksFolder>

Antes de descobrir isso, tentamos inverter as faces e fazer a malha com dupla face. Nada disso era o problema.

Texturas: textureChoices ou m_BaseTextures

No XML da peça:

  • Se a peça tem modelo, a textura vai em <textureChoices>. Se você colocar em <m_BaseTextures> e alguém largar a peça no chão, o console se enche de erros.
  • <m_BaseTextures> é só para roupa sem modelo que é pintada sobre o corpo (como uma camiseta ou um macacão inteiro).

Modelos 3D rígidos

  • Formato: o jogo lê .x (texto) e .fbx. Nós geramos .x com Python ou exportamos do Blender.
  • Pesos do esqueleto: para um objeto rígido (sapato, capacete), faça ele seguir um único osso. Se você copiar os pesos da pele, ele estica feito borracha ao dobrar o tornozelo.
  • Teste vestido dentro do jogo. Os renders do Blender não aplicam as máscaras nem as poses reais, então muitos problemas só aparecem dentro do jogo.

Vestir os zumbis

Para a sua roupa aparecer nos zumbis, você define um outfit em media/clothing/clothing.xml e registra ele no ZombiesZoneDefinition. Foi assim que fizemos Telezombies e Fútbol Chileno Z.