Aula 10 – Constructive Solid Geometry (CSG) Prof. Leandro Taddeo CSG Introdução 2 Constructive solid geometry (CSG) é uma técnica utilizada em modelagem de sólidos Geralmente utilizada em computação gráfica 3D CSG permite que o modelador crie objetos complexos utilizando operadores booleanos para combinar objetos Facilita a aplicação de operações matemáticas difíceis de serem executadas com malhas poligonais CSG Objetos e Operações 3 Os objetos sólidos mais simples utilizados para representação são chamados de Primitivas Exemplos de primitivas: esfera, caixa, cilindro, cone Objetos mais complexos podem ser construídos a partir de primitivas através da aplicação de operadores booleanos Exemplos de operadores: união, intersecção, diferença CSG Operações – União 4 A união deve ser utilizada quando se deseja combinar dois objetos em um só É útil também quando se deseja: Aplicar a mesma textura aos dois objetos Transformar ambos os objetos com um só comando CSG Operações – União 5 sphere { <0,5,0> 4 texture { T_Glass1 // T_Wood34 } union { sphere { <0,5,0> 4 } } cylinder { <0,3,0> <0,0,0> 2 } cylinder { <0,3,0> <0,0,0> 2 texture { T_Glass1 // T_Wood34 } } texture { T_Glass1 // T_Wood34 } } CSG Operações – União 6 Exemplos sem união Exemplos com união CSG Operações – Merge 7 A operação de merge deve ser utilizada quando se deseja combinar dois objetos em um só, excluindo as partes dos objetos que ficaram internas É útil para objetos transparentes Objetos opacos podem ser combinados com a união, pois é uma operação mais rápida CSG Operações – Merge 8 merge { sphere { <0,5,0> 4 union } cylinder { <0,3,0> <0,0,0> 2 } texture { T_Glass1 } } merge CSG Operações – Diferença 9 A operação de diferença deve ser utilizada quando se deseja remover partes de um objeto, cavando formas nele O primeiro objeto é aquele de onde serão removidas as partes especificadas por outros objetos que vêm a seguir Qualquer parte do objeto original que esteja dentro dos outros objetos é removida A cor da parte removida fica a mesma do objeto que a removeu CSG Operações – Diferença 10 difference { sphere { <0,5,0> 4 texture { pigment {Red} } } cylinder { <1,6,-4> <-1,4,4> 1.5 texture { pigment {Blue} } } } CSG Operações – Diferença 11 União Diferença CSG Operações – Diferença 12 A textura também pode ser aplicada na diferença difference { sphere { <0,5,0> 4 } cylinder { <1,6,-4> <-1,4,4> 1.5 } texture { pigment {Red} } } CSG Operações – Intersecção 13 A operação de intersecção captura todos os pontos que estão contidos em todos os objetos especificados Diferentemente da diferença, a intersecção “joga fora” a partes do objeto que estão fora da intersecção com os objetos seguintes CSG Operações – Intersecção 14 União Diferença Intersecção CSG Operações – Intersecção 15 intersection { box { <-5,0,0> <0,5,5> texture { pigment {Green} } } sphere { <0,5,0> 3 texture { pigment {Yellow} } } rotate 30*y } Pode-se aplicar transformações geométricas diretamente do objeto resultante CSG Exercício 16