Logo Hardware.com.br
FabianoTraple
FabianoTrapl... Veterano Registrado
1.2K Mensagens 17 Curtidas

Desenvolvimento de jogos 3D - Parte I

#1 Por FabianoTrapl... 17/01/2009 - 09:02
Olá a todos...

A minha empresa irá começar a desenvolver jogos online esse ano, então para sanar algumas dúvidas e repassar os processos de desenvolvimento de jogos para todos estou abrindo esse tópico.

Objetivo do tópico

Estudo de modelagem 3D.

Ferramentas

Editor gráfico 3D OpenSoucer BLENDER ( http://www.blender.org )
Compilador C/C++ (Windows/Linux)


Iniciando...

Aṕos várias pesquisas sobre engine's gráficas acabamos optando por nenhuma para não criar dependências no projeto que poderão causar problemas.

Depois de fazer uma analize sobre os modelos exportados pelo BLENDER, acabamos optando pelo modelo VRML.

Exemplo do cubo inicial do blender exportado para VRML:


#VRML V1.0 ascii

# Blender V246

# 'Switch' is used as a hack, to ensure it is not part of the drawing

Separator {
Switch {
DEF Material
Material {
diffuseColor 0.800000 0.800000 0.800000
specularColor 1.000000 1.000000 1.000000
shininess 0.500000
transparency 0.000000
}
DEF Cube
Separator {
Coordinate3 {
point [
1.000000 1.000000 -1.000000,
1.000000 -1.000000 -1.000000,
-1.000000 -1.000000 -1.000000,
-1.000000 1.000000 -1.000000,
1.000000 0.999999 1.000000,
0.999999 -1.000001 1.000000,
-1.000000 -1.000000 1.000000,
-1.000000 1.000000 1.000000,
]
}
USE Material

IndexedFaceSet {
coordIndex [
0, 1, 2, 3, -1,
4, 7, 6, 5, -1,
0, 4, 5, 1, -1,
1, 5, 6, 2, -1,
2, 6, 7, 3, -1,
4, 0, 3, 7, -1,
]
}
}

# Hidden Objects, in invisible layers

}

# Visible Objects

Separator {
MatrixTransform {
matrix
0.685880 -0.317370 0.654862 0.000000
0.727634 0.312469 -0.610666 0.000000
-0.010817 0.895343 0.445245 0.000000
-0.338183 -0.376694 -11.252342 1.000000
}
PerspectiveCamera {
focalDistance 3.500000
}
Separator {
MatrixTransform {
matrix
1.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 0.000000
0.000000 0.000000 1.000000 0.000000
0.000000 0.000000 0.000000 1.000000
}
USE Cube
}
}
}


Observe que o arquivo gerado é um arquivo texto que contém um padrão formatado.

O próximo passo será criar uma simples biblioteca que leia todos os dados desse arquivo texto e exiba o objeto na tela em OpenGL.
jcferranti
jcferranti General de Pijama Registrado
4.7K Mensagens 162 Curtidas
#2 Por jcferranti
19/01/2009 - 09:01
FabianoTraple disse:
Olá a todos...

A minha empresa irá começar a desenvolver jogos online esse ano, então para sanar algumas dúvidas e repassar os processos de desenvolvimento de jogos para todos estou abrindo esse tópico.

Objetivo do tópico

Estudo de modelagem 3D.

Ferramentas

Editor gráfico 3D OpenSoucer BLENDER ( http://www.blender.org )
Compilador C/C++ (Windows/Linux)


Iniciando...

Aṕos várias pesquisas sobre engine's gráficas acabamos optando por nenhuma para não criar dependências no projeto que poderão causar problemas.

Depois de fazer uma analize sobre os modelos exportados pelo BLENDER, acabamos optando pelo modelo VRML.

Exemplo do cubo inicial do blender exportado para VRML:


#VRML V1.0 ascii

# Blender V246

# 'Switch' is used as a hack, to ensure it is not part of the drawing

Separator {
Switch {
DEF Material
Material {
diffuseColor 0.800000 0.800000 0.800000
specularColor 1.000000 1.000000 1.000000
shininess 0.500000
transparency 0.000000
}
DEF Cube
Separator {
Coordinate3 {
point [
1.000000 1.000000 -1.000000,
1.000000 -1.000000 -1.000000,
-1.000000 -1.000000 -1.000000,
-1.000000 1.000000 -1.000000,
1.000000 0.999999 1.000000,
0.999999 -1.000001 1.000000,
-1.000000 -1.000000 1.000000,
-1.000000 1.000000 1.000000,
]
}
USE Material

IndexedFaceSet {
coordIndex [
0, 1, 2, 3, -1,
4, 7, 6, 5, -1,
0, 4, 5, 1, -1,
1, 5, 6, 2, -1,
2, 6, 7, 3, -1,
4, 0, 3, 7, -1,
]
}
}

# Hidden Objects, in invisible layers

}

# Visible Objects

Separator {
MatrixTransform {
matrix
0.685880 -0.317370 0.654862 0.000000
0.727634 0.312469 -0.610666 0.000000
-0.010817 0.895343 0.445245 0.000000
-0.338183 -0.376694 -11.252342 1.000000
}
PerspectiveCamera {
focalDistance 3.500000
}
Separator {
MatrixTransform {
matrix
1.000000 0.000000 0.000000 0.000000
0.000000 1.000000 0.000000 0.000000
0.000000 0.000000 1.000000 0.000000
0.000000 0.000000 0.000000 1.000000
}
USE Cube
}
}
}
Observe que o arquivo gerado é um arquivo texto que contém um padrão formatado.

O próximo passo será criar uma simples biblioteca que leia todos os dados desse arquivo texto e exiba o objeto na tela em OpenGL.


humm, interessante, mas não há um formato que o OpenGL já abra por padrão?
Casa:MS Windows Seven (empolgando)
Trampo: MS Windows Seven (desapontando)

Quer um Fórum exclusivamente sobre Open Source? Aqui: www.linuxbsd.com.br/forum
Fergo
Fergo Highlander Registrado
9.3K Mensagens 1.1K Curtidas
#3 Por Fergo
19/01/2009 - 12:49
jcferranti disse:
humm, interessante, mas não há um formato que o OpenGL já abra por padrão?


Sem o uso de uma biblioteca externa, não, tem que ser aberto na raça.
Se o exporter for inteligente, ele já exporta os vértices ordenadamente, de modo que a normal do polígono fique do lado certo sem precisar que o programador recalcule isso (culling).

Fergo
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
FabianoTraple
FabianoTrapl... Veterano Registrado
1.2K Mensagens 17 Curtidas
#4 Por FabianoTrapl...
19/01/2009 - 13:33
Fergo...

O blender exporta os vértices na ordem correta, mas ele ainda pode exportar uma lista com a ordem, olhe o exemplo acima e procure pelo tag IndexedFaceSet.

jcferranti...

O OpenGL não abre nenhum formato por padrão, isso o torna mais maleável e portável, depende do programar implementar o mesmo.
[email]umbrsuporte@hotmail.com[/email] bebi_demais.gif
FabianoTraple
FabianoTrapl... Veterano Registrado
1.2K Mensagens 17 Curtidas
#6 Por FabianoTrapl...
20/01/2009 - 08:24
The Doug...

Sim é um parser escrito em C que irá ler o arquivo VXML do blender e é para PC e será para Windows, Linux e Mac.
Para criar a janela e demais dependência usarei a biblioteca SDL que é multiplataforma.

e alguém estiver interessado sobre o padrão VRML acesso o link abaixo:

http://www.inf.pucrs.br/~manssour/VRML/ConceitosImportantes.html
[email]umbrsuporte@hotmail.com[/email] bebi_demais.gif
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal