Talk:Constructive solid geometry

Untitled
There is something wrong in this statement, at least in the context of the article. Cold someone clarify in more detail in mind? Also, if these operations are different (which I strongly doubt) then both should be described.

<< Some software distinguishes the Union from a different operator, Merge, which does the union in such a way that the surfaces inside the merged region are not rendered. This would be desirable in cases where the objects are transparent, and the union should be treated as a single solid object. In particular, the POV-Ray graphics package implements this concept. >>

Mikkalai 02:45, 4 Jan 2004 (UTC)

POV-Ray is able to render transparent objects with non-zero refraction angles. The use of it's CSG union operator for such object has unexpected results sence the "interior serfaces" within the union will cause a second refeaction. The operation is significantly faster however so it has remained. a Merge operator eleminates these interior refractions at the cost of render speed.

--Jfmiller28 01:16, 26 July 2006 (UTC)

Quake uses CSG !?
The last paragraph says that Quake uses CSG in its engine. I very much doubt it. --81.57.79.249 09:36, 2 August 2005 (UTC)


 * The Quake tools always used a very primitive (and badly implemented) way of CSG to build levels. If you dont believe it, look into the map compiler or the source code, after all, it is freely avaible. 141.30.217.10 19:59, 16 May 2006 (UTC)


 * As far as I know, Quake does not even know CSG exists. The tools used CSG to build up the brushes but when compiled, they produced a BSP tree, which was a pre-digested data structure. As far as I know of it, it's very different from CSG. Note I cannot prove it (so I don't modify the page) but I'm quite sure it's like that.
 *  MaxDZ8 talk  20:23, 16 May 2006 (UTC)


 * Quake and Source use BSP. The difference is the use of Polymesh faces to create objects vers volume data.  —Preceding unsigned comment added by 125.19.39.19 (talk) 12:02, 8 September 2008 (UTC)
 * BSP isn't CSG. I think this claim should be removed. It's not constructive, the primitives are not solid, and therefore not geometry. The original papers do not use these terms concepts either. Stoopdapoop (talk) 03:16, 3 May 2024 (UTC)

Implementation
I want to add a section about how CSG is implemented, especially in raytracers. Like this:

A way raytracers implement constructive solid geometry is by sending a ray through both objects that are being operated on, and depending on the operator, the closest intersection point is decided.

Intersection: Object 1's intersections with ray: --- Object 2's intersections with ray:    -- Intersection:                         --- Ray's closest intersection:           ^ Subtraction: Object's intersections with ray:            --- Subtraction area's intersections with ray: -- Subtraction:                                    --- Ray's closest intersection:                     ^

This is the best way I can think of to explain it. ForrestVoight 17:12, 13 October 2006 (UTC)
 * God thank you, I had trouble grasping how it could have been implemented; But your simple sketch makes me reminded of that the implementation is probably not doing anything actually fancy with the multidimensional shapes, just plain simple operations on the one-dimentional rays!
 * Quite fascinating how simple things may turn out once one has overcome the threshold of knowledge required. Now, how do I “Cheat”; I mean turn those CSGs into meshes for pre-view purposes? 81.228.155.192 (talk) 15:22, 1 December 2011 (UTC)


 * Many thanks ForrestVoight! I can't believe I didn't think of this method.  I whipped up a diagram, if anybody wants to work it into the page.  It's a bit large, so scaling or reorganizing it might be needed.  https://commons.wikimedia.org/wiki/File:Boolean_raytrace.svg AlgoPunk (talk) 18:43, 22 February 2014 (UTC)


 * Thanks for the illustration! I put it on the page. ForrestVoight (talk) 19:52, 9 January 2019 (UTC)

Aqsis ?
It seems to me Aqsis (a RenderMan Renderer) support CSG. Should I add it in the list at the bottom of the page ? --Hibou57 (talk) 23:53, 31 October 2011 (UTC)