1+ # -----------------------------------------------------------------
2+ # Exemplo de Arquivo de Cena para o Renderizador Prism
3+ # Este arquivo demonstra o uso de múltiplos objetos, materiais
4+ # e transformações para criar uma cena complexa.
5+ # -----------------------------------------------------------------
6+
7+ # Definições reutilizáveis da cena, como materiais.
8+ # Usamos âncoras (&) para definir um material e aliases (*) para reutilizá-lo.
9+ definitions :
10+ materials :
11+ # Material fosco para o chão
12+ chao_cinza : &material_chao
13+ color : [0.8, 0.8, 0.8]
14+ ka : [0.1, 0.1, 0.1] # Pouca reflexão ambiente
15+ ks : [0.1, 0.1, 0.1] # Pouco brilho especular
16+ ns : 10
17+
18+ # Material de plástico vermelho, com brilho moderado
19+ plastico_vermelho : &material_esfera_vermelha
20+ color : [1.0, 0.2, 0.2]
21+ ka : [0.2, 0.05, 0.05]
22+ ks : [0.7, 0.7, 0.7] # Brilho especular forte
23+ ns : 128 # Expoente de brilho alto para um highlight pequeno e intenso
24+
25+ # Material metálico/refletivo para o cubo
26+ metal_azul : &material_cubo_metalico
27+ color : [0.2, 0.3, 1.0]
28+ ka : [0.1, 0.1, 0.2]
29+ ks : [0.9, 0.9, 0.9] # Reflexão especular muito alta
30+ ns : 256
31+
32+ # Material de vidro para o triângulo
33+ vidro_transparente : &material_vidro
34+ color : [0.9, 0.9, 1.0] # Cor levemente azulada
35+ ka : [0.1, 0.1, 0.1]
36+ ks : [0.8, 0.8, 0.8]
37+ ns : 200
38+ ni : 1.5 # Índice de refração (típico para vidro)
39+ d : 0.1 # Opacidade (valor 'd' baixo significa mais transparente)
40+
41+ # -----------------------------------------------------------------
42+ # Configurações da Câmera
43+ # -----------------------------------------------------------------
44+ camera :
45+ image_width : 960
46+ image_height : 540
47+ screen_distance : 1.5
48+ viewport_width : 2.0
49+ viewport_height : 1.125
50+ lookfrom : [0, 2, 8] # Posição da câmera
51+ lookat : [0, 0, 0] # Ponto para onde a câmera olha
52+ vup : [0, 1, 0] # Vetor "para cima"
53+
54+ # -----------------------------------------------------------------
55+ # Lista de Objetos na Cena
56+ # -----------------------------------------------------------------
57+ objects :
58+ - name : Chão
59+ type : plane
60+ point_on_plane : [0, -1, 0] # Ponto que define a altura do plano
61+ normal : [0, 1, 0] # Vetor normal aponta para cima
62+ material : *material_chao # Reutiliza o material do chão definido acima
63+
64+ - name : Esfera Vermelha Principal
65+ type : sphere
66+ center : [-1.5, 0, 0]
67+ radius : 1.0
68+ material : *material_esfera_vermelha # Reutiliza o material de plástico
69+
70+ - name : Malha de Cubo Metálico
71+ type : mesh
72+ path : " ./data/input/cubo.obj" # Caminho para o arquivo .obj
73+ material : *material_cubo_metalico # Reutiliza o material metálico
74+ # Múltiplas transformações são aplicadas em ordem
75+ transform :
76+ - type : scaling
77+ factors : [0.7, 0.7, 0.7] # Primeiro, diminui a escala do cubo
78+ - type : rotation
79+ angle : 45 # Em graus (o parser converterá para radianos)
80+ axis : [0, 1, 0] # Rotaciona em torno do eixo Y
81+ - type : translation
82+ vector : [1.5, 0, -1] # Por último, move o cubo para sua posição final
83+
84+ - name : Triângulo de Vidro
85+ type : triangle
86+ # Vértices definidos diretamente no arquivo de cena
87+ p1 : [-3, -1, -5]
88+ p2 : [3, -1, -5]
89+ p3 : [0, 4, -5]
90+ material : *material_vidro # Reutiliza o material de vidro
91+ transform :
92+ - type : translation
93+ vector : [0, 0, 2] # Move o triângulo um pouco para frente
0 commit comments