3. Dummy, coordenada, rotação
Enviado: 14 Ago 2018, 05:11
Atenção: É recomendado que você leia as partes anteriores do meu tutorial de converter/adaptar carros pro GTA.
Agora que você já conhece os dummies e suas funções, vamos começar a entender melhor sobre o posicionamento deles.
Como criar um dummy e deixá-lo visível no ZModeler
Se você esconder todos os nodes com mesh/malha visível, deixando somente os dummies, você verá o carro desta maneira:

Nota: Recomendo que veja o carro utilizando a câmera "perspective":

O cubo azul é a indicação do centro do arquivo. Os verdes menores são os dummies de utilidades do jogo.
Você pode ver o nome de cada dummy posicionando o mouse em cima deles:

No entanto, as cores, tamanhos e o fato de existir os cubos visíveis é algo totalmente do ZModeler; é só uma conveniência.
Clique com o botão direito em cima de um dummy na visualização, ou na hierarquia, e vai em

Perceba que você pode escolher a cor e tamanho da visualização do dummy:

Isto é muito útil, veja:
Você facilmente cria um novo dummy no ZModeler utilizando este botão:

Para abrir este menu, clique na seta pra baixo do lado do botão. Se não abrir, vá em
Após selecionar
Criará um node chamado

Se você esconder o dummy

Ele é azul grande, se você quiser, faça os passos ensinados acima para deixá-lo pequeno e numa cor desejada.
Você também pode criar um novo dummy tirando uma cópia de um existente:

Lembre-se de sempre clicar no quadradinho do lado do
Agora basta clicar em algum dummy e arrastar o mouse.
Como dito anteriormente, eu recomendo que você faça isso na visualização

Será criado um clone, igual, incluindo o mesmo nome.
Vá na hierarquia na posição onde está o dummy que você usou para clonar, o dummy clonado será um irmão do dummy de origem, e ele estará no fim da lista.
Nota: Esta ferramenta não é só para clonear dummies, mas qualquer tipo de node. Utilizando a configuração "With children", como o nome diz, clona também todos os filhos contidos.
Coordenadas e rotações
Uma coisa que você deve ter percebido quando clicou e arrastou o dummy para ser clonado, é que a posição não reagiu exatamente ao movimento do mouse, foi um tanto "estranho".
Por padrão o ZModeler fica configurado em "screen space" movendo somente o eixo
Para trabalhar na câmera

Assim, se você deixar configurado em
Para entender melhor, vamos utilizar outras ferramentas do ZModeler, como a

Agora experimente clicar e arrastar algum dummy (ou peça do carro, não importa). Se moverá somente para os lados (eixo
Se você marcar
Troque o modo para
No


No exemplo acima, agora o eixo Y (verde) e Z (azul) estão na diagonal, se eu movê-los com
As configurações da ferramenta
Informação importante:
GTA SA usa sistema de coordenada left-hand (mão esquerda):

No entanto, enquanto o ZModeler utiliza
Lembre-se:
O
Isto pode causar confusões de diversas maneiras, como em explicações e ao converter modelos — há alguns modelos que você baixa na net ou faz rip de outros jogos que usa um sistema de coordenada diferente, e se não trocar o lado dos eixos, o carro, peças etc ficarão virados 90°.
Pivot sendo resetado in-game
E aqui a gente entra em algo que pode ser confuso para muita gente, inclusive, eu só aprendi realmente como isto funciona há menos de 1 semana atrás.
Se você já trabalhou com modelos no ZModeler antes, sabe que é necessário usar

Mas em quais peças? E por quê?
Eu pensava ser alguma limitação de modelos 3D em geral, depois pensei que fosse só algo do ZModeler ou do GTA, mas mais especificamente, é uma "economia de memória" que a Rockstar fez nos GTAs da Era 3D.
Os filhos dos dummies de damage, como portas e para-choque, têm o seu frame deletado e o atomic é copiado para o frame dummy (lembra o que é frame e atomic?).
Vendo que as informações de posição, rotação, escala etc estão no frame e não no atomic, tudo será perdido, e agora o atomic usará as informações do frame do dummy.
Para ver o problema na prática, vá no

Experimente mover um pouco pro lado (não ative o

Não fará alteração in-game!

É porque você moveu o node, o frame, e como expliquei, este frame será deletado pelo jogo, portanto esta informação será perdida. O atomic usará o frame do
É por isto que é necessário usar
O jogo apaga tais frames pois normalmente eles são iguais ao dummy, então são inúteis e só servem para gastar um pouco de memória RAM (164 bytes cada node para ser mais exato), uma economia importante na época do PS2.
Ou seja, todos os nodes dentro destes dummies é necessário usar
Também é necessário fazer a mesma coisa em nodes adaptados ao Improved Vehicles Features e Active Dashboard, não pelo mesmo motivo, mas pelo método que os tais mods funcionam. Isto é, o node do volante terá o pivot resetado pelo mod e ficará na mesma posição e orientação do seu pai, assim é necessário fazer a mesma solução.
Curiosamente, o meu VehFuncs não precisa disso. Eu fiz uma solução que deixa mais conveniente para quem modela — você não precisa se preocupar com tudo isto
E falando nele, se você usar VehFuncs, nodes dentro de tais dummies, caso o node não inicie com a primeira palavra do nome do pai, o frame dele será preservado.
Isto quer dizer que se você instalar um node chamado
Próxima parte:
(em breve)
Agora que você já conhece os dummies e suas funções, vamos começar a entender melhor sobre o posicionamento deles.
Como criar um dummy e deixá-lo visível no ZModeler
Se você esconder todos os nodes com mesh/malha visível, deixando somente os dummies, você verá o carro desta maneira:

Nota: Recomendo que veja o carro utilizando a câmera "perspective":

O cubo azul é a indicação do centro do arquivo. Os verdes menores são os dummies de utilidades do jogo.
Você pode ver o nome de cada dummy posicionando o mouse em cima deles:

No entanto, as cores, tamanhos e o fato de existir os cubos visíveis é algo totalmente do ZModeler; é só uma conveniência.
Clique com o botão direito em cima de um dummy na visualização, ou na hierarquia, e vai em
Properties:
Perceba que você pode escolher a cor e tamanho da visualização do dummy:

Isto é muito útil, veja:
Você facilmente cria um novo dummy no ZModeler utilizando este botão:

Para abrir este menu, clique na seta pra baixo do lado do botão. Se não abrir, vá em
View > Redraw All e tente novamente.Após selecionar
Dummy Helper, clique no mesmo botão, agora no ícone do cubo.Criará um node chamado
Dummy Helper na hierarquia.
Se você esconder o dummy
landstal.dff, toda a nossa Landstalker ficará escondida e assim conseguiremos visualizar o nosso dummy:
Ele é azul grande, se você quiser, faça os passos ensinados acima para deixá-lo pequeno e numa cor desejada.
Você também pode criar um novo dummy tirando uma cópia de um existente:

Lembre-se de sempre clicar no quadradinho do lado do
Copy e conferir as configurações. Deixe-as como na imagem.Agora basta clicar em algum dummy e arrastar o mouse.
Como dito anteriormente, eu recomendo que você faça isso na visualização
Perspective, mas também funciona em outras.
Será criado um clone, igual, incluindo o mesmo nome.
Vá na hierarquia na posição onde está o dummy que você usou para clonar, o dummy clonado será um irmão do dummy de origem, e ele estará no fim da lista.
Nota: Esta ferramenta não é só para clonear dummies, mas qualquer tipo de node. Utilizando a configuração "With children", como o nome diz, clona também todos os filhos contidos.
Coordenadas e rotações
Uma coisa que você deve ter percebido quando clicou e arrastou o dummy para ser clonado, é que a posição não reagiu exatamente ao movimento do mouse, foi um tanto "estranho".
Por padrão o ZModeler fica configurado em "screen space" movendo somente o eixo
X, ou seja, somente horizontalmente na tela.Para trabalhar na câmera
Perspective eu recomendo deixar em Local:
Assim, se você deixar configurado em
X, ao mover algo, moverá no eixo local X.Para entender melhor, vamos utilizar outras ferramentas do ZModeler, como a
Move:
Agora experimente clicar e arrastar algum dummy (ou peça do carro, não importa). Se moverá somente para os lados (eixo
X; setas vermelhas).Se você marcar
Move Pivot only, moverá somente o pivot, ou seja, as setas, a origem do node, não o modelo dele. No caso do dummy não existe nenhum modelo, portanto não tem diferença.Troque o modo para
Y e Z, e Screen e World, e veja as diferenças.No
World é igual ao Local quando a peça está com rotação padrão, mas experimente mudar a rotação de algum dummy ou peça utilizando a ferramenta Rotate:

No exemplo acima, agora o eixo Y (verde) e Z (azul) estão na diagonal, se eu movê-los com
Local Y ou Z, eles andarão na direção que estão apontados, diferente de World que moverão para a direção "do mundo", ou seja, o Y continua sendo para cima mesmo que localmente ele esteja na diagonal.As configurações da ferramenta
Rotate é melhor testar na prática do que explicar, especialmente Base to Pivot, que muda a reação da rotação por parte do node pai. O Rotate Matrix é basicamente rotacionar o pivot (o que é bem comum usar), enquanto o Rotate Geometry rotaciona também a geometria do que será o atomic do nosso frame, ou seja, toda a malha do modelo da peça.Informação importante:
GTA SA usa sistema de coordenada left-hand (mão esquerda):

No entanto, enquanto o ZModeler utiliza
Y para "cima", no GTA SA é Z.Lembre-se:
Y no ZModeler é Z no GTA SA. Ambos querem dizer "para cima".O
Z do ZModeler é a profundidade (ou "frente-atrás"), enquanto no GTA SA a profundidade é o Y.Isto pode causar confusões de diversas maneiras, como em explicações e ao converter modelos — há alguns modelos que você baixa na net ou faz rip de outros jogos que usa um sistema de coordenada diferente, e se não trocar o lado dos eixos, o carro, peças etc ficarão virados 90°.
Pivot sendo resetado in-game
E aqui a gente entra em algo que pode ser confuso para muita gente, inclusive, eu só aprendi realmente como isto funciona há menos de 1 semana atrás.
Se você já trabalhou com modelos no ZModeler antes, sabe que é necessário usar
Reset do parent nas peças.
Mas em quais peças? E por quê?
Eu pensava ser alguma limitação de modelos 3D em geral, depois pensei que fosse só algo do ZModeler ou do GTA, mas mais especificamente, é uma "economia de memória" que a Rockstar fez nos GTAs da Era 3D.
Os filhos dos dummies de damage, como portas e para-choque, têm o seu frame deletado e o atomic é copiado para o frame dummy (lembra o que é frame e atomic?).
Vendo que as informações de posição, rotação, escala etc estão no frame e não no atomic, tudo será perdido, e agora o atomic usará as informações do frame do dummy.
Para ver o problema na prática, vá no
bump_front_dummy, perceba que este dummy e os seus filhos têm o pivot na exata mesma posição e orientação — quando você passa o mouse em cima do bump_front_ok, a origem das setas é exatamente igual; em cima do dummy:
Experimente mover um pouco pro lado (não ative o
Move Pivot only)
Não fará alteração in-game!

É porque você moveu o node, o frame, e como expliquei, este frame será deletado pelo jogo, portanto esta informação será perdida. O atomic usará o frame do
bump_front_dummy.É por isto que é necessário usar
Reset do Parent, pois deixará a posição (Offset) e orientação (Orientation) do node (no nosso caso, bump_front_ok) sendo igual ao seu dummy (bump_front_dummy), assim não fará diferença quando o jogo remover o frame de um, pois ambos são iguais.O jogo apaga tais frames pois normalmente eles são iguais ao dummy, então são inúteis e só servem para gastar um pouco de memória RAM (164 bytes cada node para ser mais exato), uma economia importante na época do PS2.
Ou seja, todos os nodes dentro destes dummies é necessário usar
Reset to parent, tanto com Offset quanto com Orientation para o resultado visualizado dentro do ZModeler ficar ao resultado dentro do GTA SA.Também é necessário fazer a mesma coisa em nodes adaptados ao Improved Vehicles Features e Active Dashboard, não pelo mesmo motivo, mas pelo método que os tais mods funcionam. Isto é, o node do volante terá o pivot resetado pelo mod e ficará na mesma posição e orientação do seu pai, assim é necessário fazer a mesma solução.
Curiosamente, o meu VehFuncs não precisa disso. Eu fiz uma solução que deixa mais conveniente para quem modela — você não precisa se preocupar com tudo isto
E falando nele, se você usar VehFuncs, nodes dentro de tais dummies, caso o node não inicie com a primeira palavra do nome do pai, o frame dele será preservado.
Isto quer dizer que se você instalar um node chamado
exemplo dentro do bump_front_dummy, o frame será preservado e não precisará disto acima, mas se o node se chamar bump_exemplo, precisará.Próxima parte:
(em breve)