Hoje iremos realizar um efeito de iluminação com o componente TLight da biblioteca "FireMonkey", que suporta a criação de aplicativos facilmente e intuitivamente como temos visto no Delphi por anos. O FMX também é ideal para rápido desenvolvimento de software, com elementos tridimensionais. Apenas inserindo um objeto geométrico "TCube", alterando suas propriedades com o cursor do mouse, somos capazes de gerar bons efeitos facilmente.

Quando nos referimos a algum objeto em 3D, logo associamos a altura, largura e comprimento como parte do mesmo. O FMX possui dois tipos de projetos: o "FireMonkey 3D Application" e também o "FireMonkey HD Application"; os dois tipos de projetos dão-nos a possibilidade de trabalhar em 3D, sendo que os Forms do "FireMonkey 3D Application" já vem apto para cenas tridimensionais, e nos projetos "FireMonkey HD Application" é necessário adicionar um componente chamado "TViewport3D". Vou mostrar a estrutura dos dois tipos de projetos 3D e HD mais vamos criar um novo HD e inclua os seguintes componentes um TViewport3D e dentro dele um TCube um TLight e um TFloatAnimation dentro do TCube conforme estrutura abaixo:

 Estrutura dos projetos

Figura 1. Estrutura dos projetos

Alterando propriedades dos componentes:

Propriedades Cube1

  • Material.Emissive = cor desejada
  • Material.Texture.Bitmap.edit = pode-se incluir uma imagem
  • As dimensões, rotação, angulo etc... pode-se fazer com mouse, clicando e movimentando os pinos azuis do componente.

Propriedades Light1

  • LightType = ItDirectional tem mais dois outros tipos ItSpot e ItPoint

Propriedades FloatAnimation1

  • Duration = 4
  • Enabled = True
  • Loop = True
  • PropertyName = RotationAngle.Y com varias outras opções vale a pena testar.
  • StarValue = 0
  • StopValue = 360

Depois de realizado o processo, teremos um resultado como este:

 Posição dos Componentes

Figura 2. Posição dos Componentes

Agora, vamos fazer uma suposição, incluiremos um botão no Form e habilitaremos essa animação somente quando a opção for selecionada através do botão. Em um projeto HD você teria sucesso. Porém em um projeto 3D, não é possível a inclusão um botão diretamente no Form 3D. Segue detalhes na observação abaixo.

Observação Importante: em um aplicativo 3D é impossível usar diretamente componentes como botões, combobox, grid, etc... No entanto, há uma maneira muito simples para lidar com isso. Para isso teremos uma ligação entre as cenas 3D e 2D. O FireMonkey nos fornece o componente "TLayer3D", que foi projetado apenas para isso.

Para não estender muito o artigo, segue no código fonte projeto HD e 3D, facilitando o entendimento de como usar o componente TLayer3D.

Espero que tenham gostado, e que os códigos e dicas tenham facilitado o trabalho e estudo de vocês.

Muito obrigado. Fico por aqui, e espero por vocês na próxima! Grande abraço.