11# -----------------------------------------------------------------
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.
2+ # Cena da Cornell Box Final - Com Esferas em Destaque (Avançadas)
53# -----------------------------------------------------------------
64
7- # Definições reutilizáveis da cena, como materiais.
8- # Usamos âncoras (&) para definir um material e aliases (*) para reutilizá-lo.
5+ ambient_light : [0.1, 0.1, 0.1]
6+
7+ # --- Definições de Materiais ---
98definitions :
109 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
10+ # Materiais das paredes
11+ parede_branca : &branco
12+ color : [0.73 , 0.73 , 0.73 ]
13+ ka : [0.73 , 0.73 , 0.73]
14+ ks : [0.0 , 0.0 , 0.0]
1615 ns : 10
1716
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
17+ parede_vermelha : &vermelho
18+ color : [0.65, 0.05, 0.05]
19+ ka : [0.65, 0.05, 0.05]
20+ ks : [0.0, 0.0, 0.0]
21+ ns : 10
2422
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
23+ parede_verde : &verde
24+ color : [0.12, 0.45, 0.15]
25+ ka : [0.12, 0.45, 0.15]
26+ ks : [0.0, 0.0, 0.0]
27+ ns : 10
28+
29+ # Materiais para os objetos internos
30+ bloco_azul : &azul
31+ color : [0.1, 0.2, 0.8]
32+ ka : [0.1, 0.2, 0.8]
33+ ks : [0.3, 0.3, 0.3]
34+ ns : 64
3135
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)
36+ bloco_laranja : &laranja
37+ color : [0.9, 0.5, 0.1]
38+ ka : [0.9, 0.5, 0.1]
39+ ks : [0.2, 0.2, 0.2]
40+ ns : 32
41+
42+ esfera_espelho : &espelho
43+ color : [0.0, 0.0, 0.0]
44+ ka : [0.0, 0.0, 0.0]
45+ ks : [0.98, 0.98, 0.98]
46+ ns : 2048
4047
41- # -----------------------------------------------------------------
42- # Configurações da Câmera
43- # -----------------------------------------------------------------
48+ esfera_vidro : &vidro
49+ color : [1.0, 1.0, 1.0]
50+ ka : [1.0, 1.0, 1.0]
51+ ks : [0.1, 0.1, 0.1]
52+ ns : 256
53+ ni : 1.52
54+ d : 0.05
55+
56+ # --- Configurações da Câmera ---
4457camera :
45- image_width : 960
46- image_height : 540
58+ image_width : 800
59+ image_height : 800
4760 screen_distance : 1.5
4861 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"
62+ viewport_height : 2.0
63+ lookfrom : [278, 278, -800]
64+ lookat : [278, 278 , 0]
65+ vup : [0, 1, 0]
5366
54- # -----------------------------------------------------------------
55- # Lista de Objetos na Cena
56- # -----------------------------------------------------------------
67+ # --- Fontes de Luz ---
68+ lights :
69+ - name : Luz do Teto
70+ position : [278, 548, 278]
71+ color : [1.0, 1.0, 1.0]
72+ - name : Flash da Câmera
73+ position : [278, 278, -800]
74+ color : [0.5, 0.5, 0.5]
75+
76+ # --- Objetos na Cena ---
5777objects :
78+ # As 5 paredes da caixa
5879 - name : Chão
5980 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
81+ point_on_plane : [0, 0, 0]
82+ normal : [0, 1, 0]
83+ material : *branco
84+ - name : Teto
85+ type : plane
86+ point_on_plane : [0, 555, 0]
87+ normal : [0, -1, 0]
88+ material : *branco
89+ - name : Parede do Fundo
90+ type : plane
91+ point_on_plane : [0, 0, 555]
92+ normal : [0, 0, -1]
93+ material : *branco
94+ - name : Parede Direita (Verde)
95+ type : plane
96+ point_on_plane : [555, 0, 0]
97+ normal : [-1, 0, 0]
98+ material : *verde
99+ - name : Parede Esquerda (Vermelha)
100+ type : plane
101+ point_on_plane : [0, 0, 0]
102+ normal : [1, 0, 0]
103+ material : *vermelho
69104
70- - name : Malha de Cubo Metálico
105+ # Blocos com tamanho e posição originais
106+ - name : Bloco Alto (Laranja)
71107 type : mesh
72- path : " ./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
108+ path : " cubo.obj"
109+ material : *laranja
75110 transform :
76111 - type : scaling
77- factors : [0.7, 0.7, 0.7] # Primeiro, diminui a escala do cubo
112+ factors : [82.5, 165, 82.5]
78113 - type : rotation
79- angle : 45 # Em graus (o parser converterá para radianos)
80- axis : [0, 1, 0] # Rotaciona em torno do eixo Y
114+ angle : 18
115+ axis : [0, 1, 0]
81116 - type : translation
82- vector : [1.5, 0, -1] # Por último, move o cubo para sua posição final
117+ vector : [180, 165, 250]
83118
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
119+ - name : Bloco Baixo (Azul)
120+ type : mesh
121+ path : " cubo.obj"
122+ material : *azul
91123 transform :
124+ - type : scaling
125+ factors : [82.5, 82.5, 82.5]
126+ - type : rotation
127+ angle : -20
128+ axis : [0, 1, 0]
92129 - type : translation
93- vector : [0, 0, 2] # Move o triângulo um pouco para frente
130+ vector : [370, 82.5, 150]
131+
132+ # ESFERAS COM POSIÇÃO AJUSTADA (AINDA MAIS PERTO)
133+ - name : Esfera de Vidro
134+ type : sphere
135+ center : [380, 90, -140] # Z foi de 120 para 80
136+ radius : 90
137+ material : *vidro
138+
139+ - name : Esfera de Espelho
140+ type : sphere
141+ center : [180, 90, -200] # Z foi de 180 para 100
142+ radius : 90
143+ material : *espelho
0 commit comments