GlScene para iniciantes - part 2

Embed Size (px)

DESCRIPTION

Escrito porSubHeaven – [email protected]

Citation preview

SubHeaven [email protected]

Parte 02

Em nosso ltimo tutorial vimos o bsico, que era carregar um modelo MD2 e usar alguns de suas animaes. Agora vamos aprender a carregar um mapa usando a renderizao de terrenos. Vamos refazer os passos bsico e criar um novo projeto. Vamos ento colocar um GLScene, um GLSceneViewer e um GLCadencer em nosso form. Vamos ajusta a propriedade Align do nosso GLSceneViewer1 para alClient com isso o GLSceneViewer ir ocupar automaticamente toda a janela e a propriedade Scene do nosso GLCadencer1 para GLScene1. Agora vamos incluir em nosso projeto um GLBitmapHDS da aba GLSceneUtils,que serve para Carregar um arquivo de imagens com tons de cinza que sero mais tarde transformados em um mapa. Vamos setar a sua propriedade MaxPoolSize para 786432 e, em Picture, vamos carregar nosso modelo de mapa.

Agora vamos abrir nosso GLScene e incluir um GLTerrainRenderer a cena, ele que converte arquivos em tons de cinza em mapas.

Vamos mudar o nome de nosso GLTerrainRenderer para Mapa e ligar a propriedade HeightDataSource de nosso mapa ao GLBitmapHDS1. Agora vamos a propriedade Material de nosso mapa e aplicar uma textura de nosso gosto (No esquea de desligar a opo Disabled). Acrescente a unit JPEG no uses de nosso cdigo fonte (A nica alterao em linha de cdigo de nossa aula).

Com isso foi criado um cubo com o nosso modelo onde os tons de cinza indicam a altitude do mapa criado. Nosso primeiro problema a orientao xyz de nosso mapa. Os eixos y e z precisam ser trocados pois ele carregado como uma folha em p em sua frente, logo, a parte que deveria ser pra cima esta virado para frente. Pra mudar isso a sua propriedade Direction -> Y para 1 e mantemos X e Z em 0 (Ou seja, como a direo do nosso mapa esta pra frente, apenas pedimos pra ele apontar agora pra cima). O outro problema que ele criado como um cubo e aplicado um calculo padro de elevao do terreno. Com isso (Pode ser includo uma cmera para observar enquanto criamos) nossos morros e montanhas esto altos demais. Para amaciarmos nosso mapa devemos modificar sua propriedade Scale e ajustar o valor de Z (Lembre-se que nosso mapa tem os eixos Z e Y trocados) para 0.1. esse valor pode ser ajustados para ficar ao seu gosto em relao as elevaes do terreno e os valores em X e Y podem ser usado para esticar ou encolher o mapa. Vamos incluir ento uma cmera para vermos como est ficando. Abra o nosso GLScene e inclua um GLDummyCube. Ele serve para encapsular objetos e assim facilitar a movimentao dos mesmos na tela. No nosso caso vamos juntar o personagem e a cmera principal no GLDummyCube, assim, ao movimentarmos, podemos mover o personagem, seus acessrios e a cmera de uma s vez.

Agora vamos adicionar uma cmera, uma luz e arrastar as duas como filhas de GLDummyCube1.

Vamos tambm mudar a propriedade Name do GLDummyCube1 para MainCubo, a do GLCamera1 para Camera e de nosso GLLightSource1 para Luz.

Altere a propriedade Position da cmera para Z = 5 e Y = 1 e a propriedade TargetObject para MainCubo. Vamos agora ligar a propriedade Camera do GLSceneViewer pra Camera e para nos ajudar a calcular as propores vamos ligar a propriedade VisibleAtRunTime de nosso MainCubo para True.

Com isso nosso mapa esta pronto.

Podemos alterar as texturas e a prpria imagem modelo para carregarmos mapas diferentes. O efeito de fundo azul eu consegui alterando a propriedade Buffer -> BackGroundColor do nosso GLSceneViewer. Salve esse projeto pois iremos usa-lo em nossa prxima aula, quando incluiremos os movimentos tanto da cmera quanto do MainCubo.