基本立体をくっつけていくだけでも,色々なものを作れますが, CSGを使うと,複雑な立体を表現することが出来ます.
ブーリアン演算とも呼ばれるものです.
CSGを使うと,複数の立体が重なっている部分だけを取り出したり,ある立体から別の立体を 削り取ったような図形が作れます. つまり,立方体(box)に円柱(cylinder)状の穴を開けたりできます.
CSGを扱うために理解しておかなければならないのは,オブジェクトの内部と外部の概念です. boxやsphereの場合は簡単ですね.立方体や球の内側か外側かです.
POV-Rayの場合,オブジェクトの面が空間を2つに隔てる場合,内と外が作られるようです. つまり,planeなどの無限平面でもCSGが扱えます. 逆に言うと,cylinderでもopenをつけて口をあけてしまうと,CSGが正常にできません. また,inverseで内部と外部を入れ替えることができます.
POV-RayのCSGには以下の4つの演算が用意されています.
オブジェクトを単純に繋ぎます. 繋ぐだけなので,unionだけではあまり意味がありません. 同一のテクスチャを貼りたい時や,unionしたものをさらにCSGに使うのが主な使い方です.
unionで(半)透明のオブジェクトを繋ぎ合わせると,内部に面が見えてしまいます. それが嫌な場合は,mergeを使ってください.
積をとります. つまり,2つのオブジェクトの重なっている部分が残り,後の部分は見えなくなります.
差をとります. あるオブジェクトから別のオブジェクトを削り取ることができます.
2つのオブジェクトを繋ぎます.unionと違って,透明な物体でも内部に面が残ることがありません.