Viewport3D por Hardware, Malhas & Câmeras (WpfViewport3DManager.cs)
O arquivo WpfViewport3DManager.cs gerencia a visualização de modelos 3D com aceleração de hardware via DirectX e pipeline de malhas triangulares do WPF.
1. Malhas Triangulares com MeshGeometry3D
Seção intitulada “1. Malhas Triangulares com MeshGeometry3D”No WPF, todo modelo tridimensional é constituído por triângulos descritos na classe MeshGeometry3D:
Positions: Vetores tridimensionais definindo a localização de cada vértice no espaço local.TriangleIndices: Trios de índices inteiros que conectam os vértices para formar as faces triangulares.- Ordenação Anti-Horária (CCW): A ordem de indexação define a face frontal através da regra da mão direita. Triângulos visualizados por trás são descartados por Back-Face Culling.
<!-- Malha Triangular de um Plano com Coordenadas UV de Textura --><MeshGeometry3D Positions="-1,0,-1 1,0,-1 1,0,1 -1,0,1" TriangleIndices="0,1,2 0,2,3" TextureCoordinates="0,0 4,0 4,4 0,4"/>2. Câmeras: PerspectiveCamera e Projeção
Seção intitulada “2. Câmeras: PerspectiveCamera e Projeção”A classe PerspectiveCamera simula o olho humano e lentes ópticas:
Position: Localização do observador no espaço .LookDirection: Vetor direcional que aponta para onde a câmera está olhando.UpDirection: Vetor vertical de orientação (usualmente ).FieldOfView: Ângulo do cone de visão em graus (ex: ).
Câmera Orbital Arcball com Coordenadas Esféricas
Seção intitulada “Câmera Orbital Arcball com Coordenadas Esféricas”A câmera orbita ao redor da cena utilizando parametrização esférica:
- Distância (): Controlada pelo Scroll do mouse.
- Ângulo Azimutal (): Rotação horizontal de a .
- Ângulo Polar (): Elevação vertical de a .
3. Iluminação Difusa e a Lei de Lambert
Seção intitulada “3. Iluminação Difusa e a Lei de Lambert”Para iluminar superfícies foscas (como pedra, madeira ou argamassa), o motor 3D aplica a Lei de Reflexão de Lambert:
Onde é a normal unitária da superfície e é a direção da luz incidente. O produto escalar calcula o cosseno do ângulo de incidência da luz.
Sistema Solar com Duas Luzes Direcionais
Seção intitulada “Sistema Solar com Duas Luzes Direcionais”Em cenas arquitetônicas abertas, combinam-se duas instâncias de DirectionalLight com inclinação de e rotação oposta para manter ambas as fachadas iluminadas sem sombras pretas absolutas.
4. Repetição de Texturas com TileMode=“Tile”
Seção intitulada “4. Repetição de Texturas com TileMode=“Tile””Para aplicar texturas de piso e parede sem esticar a imagem, utiliza-se ImageBrush com repetição em mosaico:
<DiffuseMaterial> <DiffuseMaterial.Brush> <ImageBrush ImageSource="Assets/granite.png" TileMode="Tile" Viewport="0,0,0.25,0.25" ViewportUnits="Relative"/> </DiffuseMaterial.Brush></DiffuseMaterial>Referências Oficiais Microsoft Learn
- Classe Viewport3D (System.Windows.Controls) — Container visual para renderização de cenas 3D no espaço de interface 2D.
- Classe PerspectiveCamera — Configuração de posição, vetor LookDirection, UpDirection e FieldOfView.
- Propriedade TileBrush.TileMode — Mapeamento e repetição de texturas no WPF.
Próximo Passo: Explore a Modelagem Hierárquica e Grafos de Cena.