Problema com eixos de Gravidade

 
   3D Game Builder - Índice » Modelagem
Problema com eixos de Gravidade
Autor Mensagem
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Problema com eixos de Gravidade
Edirlei, achei que tinha resolvido um problema, mas não consegui. Depois que analizei a porta do exemplo, eu tentei fazer algo igual. Bom, modelei e texturizei uma porta no wings, fiz em duas partes, porta e maçaneta, a porta eu texturizei, a maçaneta não, deixei cinza. Então exportei pro blender, onde alterei o centro de gravidade, usando o center cursor, fiz com que os eixos de rotação da porta e da maçaneta coincidissem com o ponto de rotação da dobradiça. Até aí tudo bem. Só que essa porta está fora do ponto central do Wings, normalmente quando fazemos isso, os programas 3D guardam essa posição, de modo que se os objetos são exportados em partes, ao serem importados por outro programa, caiam na mesma posição. Bom, essa posição ficou mantida no blender e também no 3D Game builder. Só que a o eixo de rotação da porta não coincidiu com o da dobradiça, como fiz no blender, continua referente ao centro do Wings... Vejam na imagem o "fantasma da porta":



Bom, eu não consigo casar a porta com o fantasma, essa distância é mantida mesmo qdo movemos tudo. Então, se eu giro 45º, ao invéz da porta girar na dobradiça, gira em torno do fantasma.
É assim sempre, o eixo do objeto é o centro do programa? E se assim for, para colocar a porta girando certo, eu terei que deslocar ela um pouco do centro, mas o fantasma é que define o campo de colisão, logo, terei que deixar metade da porta dentro do campo e metade fora. Então terei outro problema, metade da porta vai permitir que o personagem a atravesse e do outro lado, onde o campo avança além da porta, vou ter uma barreira invisível...
Com outros objetos é fácil contornar pque eles não tem que girar como uma porta.
Pombas, a porta do exemplo parece funcionar certinho...
Vou fazer outros testes aqui...

Abraço



_________________
Lemos
http://alemdanimacao.zip.net/
Sáb Out 31, 2009 5:54 pm Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Re: Problema com eixos de Gravidade
Bom, aqui vai o primeiro teste, confirmando as minhas teorias; desloquei o eixo de rotação da porta (a mesma da imagem anterior) que me interessa, o eixo da dobradiça, para o centro do Blender (onde as linhas coloridas verde e vermelha se cruzam), vejam a imagem:



Importei essa porta para o 3DGameBuilder, vejam o resultado:



Como vocês podem observar, aconteceu exatamente o que eu disse, o centro do "fantasma" coincidiu com o ponto de rotação da porta a dobradiça! Agora a porta dobra, certinho onde eu quero, mas o campo de colisão só abrangeu a metade da porta e sobrou para direita:



Com isso a porta gira bem, mas corre o risco do personagem conseguir atravessar ela pero da dobradiça e esbarrar na porta invisível quando ela estiver aberta. No teste que fiz não deu para perceber isso pque o campo de colisão do Mainactor é meio grande, então compensou, mas isso está tosco... Confused Além disso observo outra coisa, o fantasma se alinha verticalmente com o solo, e a porta está totalmente acima do solo, logo, para fazer com que o campo coincida com a porta na altura, eu terei que afundar a porta até a metade no chão... Mad Seria muito bem se pudéssemos manipular o posicionamento desssas coisas dentro do programa!!!!
Nem adianta desabilitar a colisão e usar event área, pque para que o event área acompanhe a porta, terei que uasr o script de párentear e o Edirlei já explicou que o centro do objeto filho coincide com o centro do objeto pai, que no caso está para a direita. Neste caso, se eu tentar aumentar o event área para esquerda, em direção à maçaneta, para compensar a falta do campo, ele também vai crescer para direita, criando uma enorme e inconveniente porta-fantasma-invisível-porém-sólida- e chata-pra-cacete!!!!!!!!!!!! Mad



_________________
Lemos
http://alemdanimacao.zip.net/
Sáb Out 31, 2009 6:34 pm Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Re: Problema com eixos de Gravidade
Bom, como eu sou muito chato, resolvi ver se era persegução comigo ou se o problema é universal Twisted Evil ; baixei a porta do tutorial de um cenário completo e coloquei dentro do meu teste e Bingo! Aí está, ela também teve o seu campo de colisão deslocado para que seu giro pudesse ser acertado:



Conclusões:

1 - O centro gravitacional e de rotação dos objetos coincide SEMPRE com o centro do programa de onde eles são exportados. Então, após terminar a modelagem, faça com que os 3 eixos do programa, X,Y, e Z, coincidam com o local que você quer que seja o centro gravitacional do objeto, movendo-o até a coordenada 0,0,0.

2 - Mexer nesse centro pode ter, por consequência, erros no campo de colisão...

Abraço... Fiquei triste com isso... Crying or Very sad Crying or Very sad Crying or Very sad

_________________
Lemos
http://alemdanimacao.zip.net/
Sáb Out 31, 2009 6:54 pm Exibir perfil de usuários
Edirlei
Administrador
Administrador


Registrado: 15/03/08
Mensagens: 760

Lemos escreveu:
1 - O centro gravitacional e de rotação dos objetos coincide SEMPRE com o centro do programa de onde eles são exportados. Então, após terminar a modelagem, faça com que os 3 eixos do programa, X,Y, e Z, coincidam com o local que você quer que seja o centro gravitacional do objeto, movendo-o até a coordenada 0,0,0.


No tutorial sobre criar um cenário completo onde é feita uma casa com portas, eu falo algo sobre isso.

Lemos escreveu:
2 - Mexer nesse centro pode ter, por consequência, erros no campo de colisão...


Basta você desativar a colisão da porta e adicionar hierarquicamente um objeto event area nela e acertar o tamanho dele na posição correta. Em modelos externos eu aconselho sempre a usar combinações de objetos event area para a detecção de colisões, é muito mais leve.
Dom Nov 01, 2009 12:33 pm Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Edirlei escreveu:
Basta você desativar a colisão da porta e adicionar hierarquicamente um objeto event area nela e acertar o tamanho dele na posição correta. Em modelos externos eu aconselho sempre a usar combinações de objetos event area para a detecção de colisões, é muito mais leve.


Sim, quando eu detectei o problema eu cheguei a pensar nessa solução, mas o problema é que você explicou que o centro de gravidade do objeto Filho se alinha com o do objeto pai. Então, se eu fizer o event área = ao tamanho da porta, quando eu criar a hierarquia, ele também vai ficar deslocado para a direita, coincidindo exatamente com o fantasma (o fantasma é que é o objeto real, é ele que tem o campo de colisão e define o eixo de rotação). Aí, para compensar o pedaço da porta à esquerda que ficou sem event área, eu terei que aumentar ele na largura, já que eu não poderei deslocá-lo. Como resultado, eu terei um campo de colisão perfeito na porta, mas como eu o aumentei para esquerda, ele também terá aumentado para a direita, logo, eu terei a direita da minha porta uma outra porta formada pelo evnt área, que agora tem o dobro da largura original. Aí, quando a porta estivesse fechada, tudo bem, o event área que sobra ficaria escondido dentro da parede, mas quando ela abrisse, a porta invisível ficaria avançada para fora e isso poderia ser um inconveniente, tipo, o jogador poderia bater não muro invisível... Confused
Esse problema da hierarquia seria resolvido se a distâcia entre o pai e o filho fosse mantida quando criássemos o parentesco, assim como é no blender, seria uma mão na roda, lemgra que já conversamos sobre isso quando falamos do pareneamento da câmera, que deu um erro, a câmera colou na cabeçado jogador e não dava para ver ele mais de cima ( viewtopic.php?t=374 )?
Se a distância fosse mantida, a câmera do tópico a que me referia ficaria acompanhando o jogador na distância que quiséssemos, e a porta feita com event área ficaria deslocada do centro gravitacional do fantasma, ocupando exatamente o a área da porta visível.
Vou colocar essa observação lá no desenvolvimento, é uma coisa importante na minha opinião, por favor, pense com carinho!

Abraço

_________________
Lemos
http://alemdanimacao.zip.net/
Dom Nov 01, 2009 1:08 pm Exibir perfil de usuários
Lemos
Usuário
Usuário


Registrado: 14/04/09
Mensagens: 802
Localização: Rio de Janeiro - RJ

Bom após este estudo e as conclusões chegadas, pude planejar melhor a modelagem. Vou explicar: eu precisei modelar uma janela. Havia duas formas:

1 - criava uma modêlo único, mas com mapeamento complexo
2 - criava várias peças simples, já mapeadas de maneira simples, e depois montava a peça, exportando em seguida

Optei pela segunda opção. Vamos ao passo a passo no Wings3D:

1 - A parede da casa possuía o buraco para a janela, então salvei o arquivo completo, com todas as peças, mas com o nome de janela.

2 - deletei os objetos que não interessavam e fiz o batente da janela. Era só um cubo que alterei a escala até virar um retângulo.

3 - transformei a malha em triângulos

4 - fiz mapeamento UV e apliquei a textura, 256x256

5 - a partir dele, fui alterando a escala, girando e movendo, até compor a janela. cada pedaço é uma retângulo copiado.

6 - usando os comando absolutos do wings, centralizei elas nas coordenadas 0,0,0, dos 3 eixos

7 - exportei em .3DS

8 - coloquei a textura usada na pasta textures do projeto

9 - No 3D game Builder eu cadastrei no banco de dados de objetos (nem precisou aplicar material!)

10 - coloquei no mapa, vejam o resultado:



E um detalhe, como eu centralizei a janela no wings, o campo de colisão ficou PERFEITO! Essa experiência ajudou bastante a mim, espero que ajude a todos no planejamento da modelagem. Só não testei aida criar um objeto composto como a janela com mais de uma textura.
Abraço!

_________________
Lemos
http://alemdanimacao.zip.net/
Dom Nov 01, 2009 10:11 pm Exibir perfil de usuários
   3D Game Builder - Índice » Modelagem
Página 1 de 1