MegaMan Billy Oposto H&K 416 Dead_Lab Afta's Sketchbook Lil'Chew-Chew CTF_Aerospace LIghtmaps - Escala x Resoluo
* Login   * Register * Labs   * FAQ    * Search

All times are UTC - 3 hours




Post new topic Reply to topic  [ 9 posts ] 
Author Message
 Post subject: [tutorial] Compilação de props e modelos
PostPosted: 01 May 2008, 12:46 
Offline
User avatar

Joined: 03 Dec 2007, 19:51
Posts: 344
Location: Rio de Janeiro - RJ
Criar props especiais para seu mapa pode significar a diferença entre um bom mapa e um ótimo mapa. Os modelos podem ser usados para dar aquele toque único que evidencia a personalidade e a dedicação do designer em seu projeto.

O processo, no entanto, não é muito fácil, mas com este tutorial você vai poder colocar seus props feitos em qualquer programa 3D no hammer e usá-lo em seu projeto.

Os passos a serem seguidos são os seguintes:

  1. Modelagem do prop em um programa 3D (3Ds max, Maya, XSI...)
  2. Criação dos diversos modelos para o bom funcionamento do prop (LoDs, Shadow e Phys)
  3. Exportação dos modelos no formato para compilação (no formato SMD)
  4. Setagem dos materiais e a configuração para compilação (criação dos VMTs e .QC)
  5. Compilação do modelo (no studiomdl)
  6. Uso no seu mapa! \o/




Planejamento

É bom saber:

1 metro = 52 unidades no hammer
1 unidade no hammer = 1 unidade o 3Dmax, Maya ou XSI


Faça um pequeno modelo do seu objeto no hammer antes de ir modelando, daí tire as medidas básicas em unidades e faça o seu rascunho ou planejamento.

Image

Image

Para modelos simples como uma placa ou uma mesa, você pode ir direto para o pacote 3D, mas para modelos complexos, como o do exemplo, que é um avião, eu recomendo fazer as vistas superior, lateral e frontal para auxiliar na modelagem.

Modelagem

Modele seu prop no programa 3D de sua escolha. O ideal seria usar o XSI mod tools, mas sinceramente eu acho ele muito bugado se comparado com o pacote completo do XSI. Eu uso o 3Ds Max 9 comercial e um plug in especial para exportar para o hammer. Porém, desde que o programa possa exportar o modelo no formato .OBJ já estará bom, pois você poderá importar os OBJs no XSI e salvar para o formato da valve.

Image

Esteja atento para colocar o objeto no centro da cena e bem em cima do plano, pois assim ele aparecerá corretamente no hammer.

Image

Para isso, coloque o ponto Pivot do objeto nas coordenadas 0 0 0 no pacote 3D. Se o seu objeto for alto (como uma lâmpada de teto) coloque-o no chão mesmo assim, pois senão a bounding box dele no hammer vai ficar muito grande e poderá te atrapalhar na hora de fazer o mapa.

Fique atento ao número de polígonos do modelo final e considere quantos LoDs você irá fazer. LoDs são os "Level of Detail", que são modelos com menos detalhes que serão exibidos de acordo com a distância do objeto que o jogador esteja. Segundo o Minotaur0 "nao importa muito a contagem do model final, e sim o quao eficientes sao teus LODs, (...) 4 estágios é o ideal, nao passe disso. (o prop de humvee do Insurgency por exemplo tem em torno de 8 mil polys, enquanto o ultimo lod stage tem apenas 300)." Este artigo é excelente para saber mais sobre LoDs.

Porém, antes de criar os LoDs, você precisa dar textura ao seu modelo. Crie sua textura no Photoshop ou de outra maneira que você preferir. O padrão do Orange Box para o mapeamento de modelos e props é:

  • color maps ($basetexture)
  • diffuse maps ($basetexture)
  • normal maps ($bumpmap)
  • specular maps ($envmapmask)
  • luminosity maps ($selfillum)
  • opacity maps ($translucent)

Porém, você também pode utilizar o Phong shader do Orange box e usar mapas de especularidade e glossiness com o "$phongexponenttexture". Mais aqui.

Coisas a se lembrar:
  • Todo model precisa de um mapeamento UVW
  • Todo model deve ser um único objeto inteiro
  • Tenha quantos LoDs quanto achar necessário, mas não faça LoDs com pouca redução de polígonos (menos de 25% é o limite)

Quando for modelando os diferentes LoDs você pode salvar uma cópia do modelo original, ou copiar o modelo em diferentes camadas, apenas lembre-se de mantê-los todos no mesmo exato lugar para evitar problemas, como o modelo "tremendo" quando o jogador passa de um LoD a outro olhando para o objeto. O ideal é fazer cópias dos arquivos para facilitar na hora de exportar os SMDs.

Shadow model e Collision model

O modelo em alta definição não deve ser usado para projetar a sombra do objeto. Se você criou alguns LoDs, pode usar um deles, geralmente o com menos polígonos possível, para usar como o Shadow model.

Este é o Shadow Model do Avião:

Image

Dentre algumas simplificações estão: A redução drástica de 5000 polys para 2000. Os canos das metralhadoras são sólidos, o motor (que não vai criar quase nenhuma sombra no ambiente por ser profundo) é praticamente liso. e a forma geral do avião é mais retona. Quando o jogo for projetar a sombra do avião nos brushes do mapa, vai usar este modelo como referência, salvando muita capacidade do processador e o jogador nunca vai perceber as diferenças. O Shadow model precisa de um mapeamento UVW (só ter o mapeamento, n~~ao precisa estar certinho pois nunca é exibido).

O modelo Collision é o que será usado para calcular a física do seu modelo. Ele determinará onde os jogadores "baterão" no seu modelo e por onde as balas e granadas não passam. Ele é um modelo especial pois deve seguir as seguintes características:

  • Pode ser composto de vários objetos convexos (vários boxes por exemplo)
  • Cada objeto deve pertencer a um Smoothing group diferente (eu explico)
  • Deve ser extremamente simples, use apenas boxes e não mais do que 20
  • Precisa de um mapeamento UVW (só ter o mapeamento, n~~ao precisa estar certinho pois nunca é exibido)

Veja o exemplo do Collision Model do avião:

Image

Como você pode ver ele é bem tosco. É muito difícil dos jogadores perceberem as falhas durante o jogo. O meu maior problema aí é não ter as duas hastes centrais do avião, portanto os tiros por ali irão passar direto, mas devido à sua posição eu acho difícil algum jogador tentar atirar por ali para acertar outro, pois o avião possui uma inclinação que dificultaria isso.

Cada objeto separado deve pertencer a um Smoothing Group diferente. Isso é algo aleatório que tem alguma importância na maneira com o o modelo é compilado. Portanto, abra seu model e selecione cada objeto de uma vez a coloque-os em um Smoothing Group diferente:

Image




Exportando os modelos

Se não usar o Max: Exporte os modelos como arquivos .OBJ e importe-os no XSI mod tools e exporte-os como SMDs. (eu não uso este processo portanto não sei se funciona 100%)

Eu prefiro usar um plug-in especial para exportar os SMDs direto do 3Ds Max. Você pode baixar este plug-in aqui (coloque-o na pasta /plugins/ do max e reinicie o programa). Tenha certeza de possuir apenas o objeto colapsado para uma mesh com o mapa UVW aplicado na cena e exporte no formato .SMD (que agora deverá estar disponível no final da lista. Exporte todos os modelos, os LoDs, Shadow e Collision com uma nomenclatura simples. Eu uso, por exemplo:

mymodel_1.smd
mymodel_2.smd
mymodel_3.smd
mymodel_colli.smd
mymodel_shadow.smd

Preparando os materiais

Prepare o material do seu modelo como se fosse uma textura normal, siga o tutorial do Minotaur0, mas mude a primeira linha para "VertexLitGeneric", pois os props são iluminados pelos vértices.

Code:
"VertexLitGeneric"
{
   "$basetexture" "redbaron"
   "model" 1
   "surfaceprop" "metal"
}


Coloque todos os materiais na pasta adequada para o jogo que estiver criando o modelo.

As características dos materiais são as mesmas que para serem usados em um Brush, o tuto do Minotaur0 explica bem esta parte.

Compilação

Agora você deve ter o seu modelo principal, os LoDs, o Shadow model e o Collision model no formato SMD, além do material pronto e na pasta do jogo. Chegou a hora de compilar o modelo para ser usado pelo hammer.

Vamos usar os seguintes nomes de arquivo:

mymodel_1.smd <-- Modelo de alta resolução
mymodel_phys.smd <-- Modelo de colisão
mymodel_shadow.smd <-- Modelo de sombra

Coloque todos os arquivos em uma mesma pasta, e então crie um arquivo de texto com a extensão .QC e cole o código abaixo. O arquivo QC é como se fosse uma "receita" de como fazer o seu model, que será interpretado pelo programa de compilação e irá gerar o seu model pronto.

Code:
/*
----------------
My model (object)
----------------
*/

$modelname mymodel.mdl
$origin 0 0 0 90
$scale 1.0
$body "Body" "mymodel_1.smd"
$staticprop
$surfaceprop "metal"
$upaxis Z
$cdmaterials "mymodel/"

$sequence "idle" "mymodel_1.smd" fps 30

$collisionmodel "mymodel_colli.smd"
{
    //Mass in kilograms
     100.0
   
}


Este código acima detemina o seguinte:
  • $modelname mymodel.mdl - O modelo compilado se chamará mymodel.mdl, mude o nome para o que você quiser.
  • $origin 0 0 0 90 - A origem do seu model poderá ser consertada aqui se vc fez diferente, mas é mais fácil acertar isso no Max.
  • $scale 1.0 - Mesma coisa com o tamanho do model, mas se vc achar que ficou grande ou pequeno depois de ver no mapa, você pode alterar aqui que é mais fácil que mudar todos os models no Max.
  • $body "Body" "mymodel_1.smd" - Esta linha indica qual o modelo será usado como modelo principal, é o modelo em alta resolução.
  • $staticprop - Identifica o modelo como estático, se fosse animado não teria esta linha.
  • $surfaceprop "metal" - terá propriedades de metal, veja esta listapara as possibilidades daqui.
  • $cdmaterials "mymodel/" - Usará os materiais na pasta mymodel/, tenha certeza que seus VMTs e VTFs estejam corretos.
  • $collisionmodel "mymodel_colli.smd" - Terá como colisão o modelo mymodel_phys.smd pesando 100Kg.

Para adicionar LoDs:

mymodel_2.smd <-- Modelo com LoD 1 para 50 metros
mymodel_3.smd <-- Modelo com LoD 2 para 100 metros

Basta adicionar o código:

Code:
$lod 50
{
     replacemodel "mymodel_1" "mymodel_2"
}
$lod 100
{
     replacemodel "mymodel_1" "mymodel_3"
}


Para compilar seu modelo, você deve usar o programa studiomdl.exe

Este programa é um programa criado pela Valve para compilar os modelos. Ele usa uma interface de prompt, portanto para facilitar a sua vida, crie um atalho para ele e coloque o código abaixo na linha "alvo" das propriedades do atalho:

Code:
C:\WINDOWS\system32\cmd.exe /K C:\steam\steamapps\seunome\sourcesdk\bin\orangebox\bin\studiomdl.exe

*Só lembre de mudar o diretório C: para outro se o Steam ou o Windows estiverem instalados em outra pasta, e também mude a pasta "seunome" para o seu login no Steam.

A maneira "tradicional" de compilar o modelo pode ser encontrada aqui.

Agora tenha certeza que o Source SDK está setado para o jogo que vc está fazendo o modelo para, e arraste o arquivo .QC para o atalho do studiomdl.exe. Se tudo der certo, seu modelo estará na pasta certa e pronto para ser inserido no seu mapa!

Abra o Model Viewer do Hammer e busque o seu model:

Image

Vá na aba "Model" e selecione o box "Auto LOD" e vá afastando a visão do modelo. Voc?ê deve ver ele mudando antre os diversos LoDs automaticamente.

Agora vá na aba "Physics" e clique em "Highlight". Devem aparecer umas linhas vermelhas representando o modelo de colisão do seu prop!

Image

Parabéns! Seu model pode ser inserido no mapa, coloque uma prop_static no seu mapa, abra as propriedades dela (alt+enter) e clique em "World Model" e depois no botão "Browse", espere um pouco para a janela de models abrir e selecione seu model:

Image

Dê OK em tudo e pronto, seu prop único está no mapa!

Falta fazer:
- Detalhar erros de compilação.
- Detalhar erros de compilação por causa do modelo de colisão

_________________
-- Arhurt

blog - design de jogos - livro - portfolio


Last edited by Arhurt on 05 May 2008, 14:44, edited 1 time in total.

Top
 Profile  
 
 Post subject: Re: Como compilar e inserir seus modelos
PostPosted: 01 May 2008, 13:50 
Offline
User avatar

Joined: 25 Jul 2007, 15:25
Posts: 1471
Location: Curitiba
Poxa arthur, perfeito!! Um belo tutorial, vai ajudar muita gente, com toda a certeza!

Só conssegui encontrar dois errinhos de digitação, nada de mais. Esta de parabens!


Top
 Profile  
 
 Post subject: Re: Como compilar e inserir seus modelos
PostPosted: 01 May 2008, 14:09 
Offline
User avatar

Joined: 25 Jul 2007, 15:57
Posts: 1083
Location: Curitiba - PR
Excelente tutorial Arhurt, parabéns cara!

Fergo

_________________
Site pessoalwww.fergonez.net ● Voltado à programação, especialmente de baixo nível
Portfoliowww.fbirck.com ● Portfolio pessoal - mapas, desenhos, renders e programação de jogos digitais
ArtigosClique para acessar ● Artigos e tutoriais relacionados com informática
ProjetosClique para acessar ● Alguns projetos com os quais estive/estou envolvido


Top
 Profile  
 
 Post subject: Re: Como compilar e inserir seus modelos
PostPosted: 02 May 2008, 16:48 
Offline
User avatar

Joined: 25 Jul 2007, 13:22
Posts: 1605
Location: Porões da Paper Street Soap Company
Orra, excelente cara! Faz tempo que eu to pra fazer este tutorial mas nunca arranjava tempo livre ou saco pra fazer.

Parabéns e valeu pela contribuição, parece bem completo o tutorial!

_________________
Level Designer @ Ubisoft Brasil

Portfolio - Blog - LinkedIn


Top
 Profile  
 
 Post subject: Re: [tutorial] Compilação de props e modelos
PostPosted: 05 May 2008, 14:45 
Offline
User avatar

Joined: 03 Dec 2007, 19:51
Posts: 344
Location: Rio de Janeiro - RJ
Opa! Valeu!

Qualquer sugestão, correção ou conteúdo extra é bem-vindo. Planejo expandir ele com erros de compilação do modelo de colisão essa semana ainda.

_________________
-- Arhurt

blog - design de jogos - livro - portfolio


Top
 Profile  
 
 Post subject: Re: [tutorial] Compilação de props e modelos
PostPosted: 05 May 2008, 15:29 
Offline
User avatar

Joined: 25 Jul 2007, 17:36
Posts: 404
Location: Tupã - SP
Muito bom!

_________________
Fergo wrote:
Rápido antes que pare de ovular.

Fergo


Top
 Profile  
 
 Post subject: Re: [tutorial] Compilação de props e modelos
PostPosted: 11 May 2008, 14:46 
Offline

Joined: 14 Mar 2008, 17:32
Posts: 28
Muito bom o tuto, nota 10.

Bom, eu uso o MilkShape para fzr os models e exportar o SMD, ate pq o meu exportador SMD eh o msm da antiga engine do HL¹, mas uso tranquilamente com o da Source.

To som com uma dúvida, tu sb como eu crio os radgollse seus max e min, para usar cmo um modelo animado? se souber, preciso muito sbr, vlw.

_________________
Que tal usar C++ para criar mods pro HL? ¬¬


Top
 Profile  
 
 Post subject: Re: [tutorial] Compilação de props e modelos
PostPosted: 13 May 2008, 10:59 
Offline
User avatar

Joined: 03 Dec 2007, 19:51
Posts: 344
Location: Rio de Janeiro - RJ
Fala!

Cara eu ainda não fiz nenhum modelo animado não. Pelo que sei você deve setar todos os bones e fazer a hierarquia no .QC

O jeito mais fácil que a valve recomenda é usar o ModelViewer para setar as hierarquias e de lá exportar um arquivo .qc, mas como te disse isso pra mim também é mistério total, vou dar um a lida e se achar algo te falo aqui.

Talvez nos fórums de Machinima tenha alguma coisa, vou dar uma olhada.

_________________
-- Arhurt

blog - design de jogos - livro - portfolio


Top
 Profile  
 
 Post subject: Re: [tutorial] Compilação de props e modelos
PostPosted: 27 May 2008, 15:40 
Offline
User avatar

Joined: 05 Aug 2007, 00:03
Posts: 165
Location: Regente Feijó - SP
Bem completo seu tutorial, muito útil pra mim.

Vlw :cool:


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 9 posts ] 

All times are UTC - 3 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group