224:
240:
208:
275:
31:
327:
A convenient property of CSG shapes is that it is easy to classify arbitrary points as being either inside or outside the shape created by CSG. The point is simply classified against all the underlying primitives and the resulting boolean expression is evaluated. This is a desirable quality for some
316:. CSG is popular because a modeler can use a set of relatively simple objects to create very complicated geometry. When CSG is procedural or parametric, the user can revise their complex geometry by changing the position of objects or by changing the Boolean operation used to combine those objects.
285:
Constructive solid geometry has a number of practical uses. It is used in cases where simple geometric objects are desired, or where mathematical accuracy is important. Nearly all engineering CAD packages use CSG (where it may be useful for representing tool cuts, and features where parts must fit
352:
A resulting CSG tree is required to occupy the same volume in 3D space as the input mesh while having a minimal number of nodes. Simple solutions are preferred to ensure that the resulting model is easy to edit. Solving this problem is a challenge because of the large search space that has to be
319:
One of the advantages of CSG is that it can easily assure that objects are "solid" or water-tight if all of the primitive shapes are water-tight. This can be important for some manufacturing or engineering computation applications. By comparison, when creating geometry based upon
344:
when it comes to applications where the goal is to fabricate customized models. For such applications it can be interesting to convert already existing meshes to CSG trees. This problem of automatically converting meshes to CSG trees is called
266:. Ray tracers intersect a ray with both primitives that are being operated on, apply the operator to the intersection intervals along the 1D ray, and then take the point closest to the camera along the ray as being the result.
201:; for example, a sphere may be described by the coordinates of its center point, along with a radius value. These primitives can be combined into compound objects using operations like these:
353:
explored. It combines continuous parameters such as dimension and size of the primitive shapes, and discrete parameters such as the
Boolean operators used to build the final CSG tree.
363:
Another approach decouples the detection of primitive shapes and the computation of the CSG tree that defines the final model. This approach exploits the ability of modern
806:
Buchele, Suzanne F.; Crawford, Richard H. (2004). "Three-dimensional halfspace constructive solid geometry tree construction from implicit boundary representations".
324:, additional topological data is required, or consistency checks must be performed to assure that the given boundary description specifies a valid solid object.
34:
CSG objects can be represented by binary trees, where leaves represent primitives, and nodes represent operations. In this figure, the nodes are labeled
152:. The set of allowable primitives is limited by each software package. Some software packages allow CSG on curved objects while other packages do not.
833:
Du, Tao; Inala, Jeevana Priya; Pu, Yewen; Spielberg, Andrew; Schulz, Adriana; Rus, Daniela; Solar-Lezama, Armando; Matusik, Wojciech (2018).
609:
223:
360:
that describe the interior of the geometry. These half-spaces are used to describe primitives that can be combined to get the final model.
967:
790:
760:
721:
660:
239:
591:– primarily a surface mesh editor, but capable of simple CSG using meta objects and using the Boolean modifier on mesh objects.
957:
962:
254:
Combining these elementary operations, it is possible to build up objects with high complexity starting from simple ones.
207:
313:
749:
van Rossen, Sander; Baranowski, Matthew (2011), "Real-time constructive solid geometry", in Ansari, Marwan (ed.),
179:
39:
405:
187:
84:
to combine simpler objects, potentially generating visually complex objects by combining a few primitive ones.
321:
183:
167:
55:
329:
279:
263:
81:
357:
92:
88:
565:
554:
550:
530:
525:
438:
301:
133:
124:
96:
588:
309:
175:
141:
47:
604:
908:
864:"An evolutionary approach to the extraction of object construction trees from 3D point clouds"
786:
756:
717:
711:
656:
650:
433:
371:
364:
78:
77:. Constructive solid geometry allows a modeler to create a complex surface or object by using
863:
780:
750:
878:
842:
815:
707:
685:
137:
17:
619:
540:
149:
895:
340:
With CSG models being parameterized by construction, they are often favorable over usual
928:
646:
74:
951:
689:
305:
297:
164:
482:
422:
341:
290:
111:
107:
100:
513:
488:
374:
to iteratively optimize an initial shape towards the shape of the desired mesh.
274:
882:
819:
535:
503:
498:
463:
458:
171:
847:
834:
508:
198:
194:
614:
594:
577:
560:
478:
473:
388:
493:
468:
453:
443:
428:
410:
27:
Creating a complex 3D surface or object by combining primitive objects
599:
545:
262:
Rendering of constructive solid geometry is particularly simple when
145:
129:
30:
582:
448:
393:
122:
The simplest solid objects used for the representation are called
835:"InverseCSG: automatic conversion of 3D models to CSG trees"
356:
Deductive methods solve this problem by building a set of
939:
278:
CSG operations being applied in the context of rays in a
676:
Roth, Scott (1982). "Ray
Casting for Modeling Solids".
103:, and may or may not be procedural and/or parametric.
862:Fayolle, Pierre-Alain; Pasko, Alexander A. (2016).
367:tools to find a CSG tree with minimal complexity.
128:. Typically they are the objects of simple shape:
655:, Addison-Wesley Professional, pp. 557–558,
710:(1997), "5.2.5 Intersection with CSG Trees",
8:
649:(1996), "12.7 Constructive Solid Geometry",
193:A primitive can typically be described by a
652:Computer Graphics: Principles and Practice
846:
383:Generic modelling languages and software
273:
29:
641:
639:
637:
635:
631:
203:
678:Computer Graphics and Image Processing
233:Subtraction of one object from another
159:from primitives by means of allowable
896:Godot Engine - Godot gets CSG support
736:
716:, Morgan Kaufmann, pp. 178–180,
553:, via free or paid plug-ins from the
378:Notable applications with CSG support
7:
774:
772:
701:
699:
907:Gregory, Paul (February 12, 2002).
370:There are also approaches that use
71:computational binary solid geometry
400:Ray tracing and particle transport
25:
713:Introduction to Implicit Surfaces
238:
222:
206:
785:, Morgan Kaufmann, p. 80,
99:. CSG can also be performed on
782:An Introduction to Ray Tracing
300:both use this system, as does
249:Portion common to both objects
217:Merger of two objects into one
1:
755:, CRC Press, pp. 79–96,
336:Conversion from meshes to CSG
197:which accepts some number of
779:Glassner, Andrew S. (1989),
690:10.1016/0146-664X(82)90169-1
314:Torque Game Engine Advanced
63:Constructive solid geometry
18:Constructive Solid Geometry
984:
420:
883:10.1016/j.cad.2016.01.001
820:10.1016/j.cad.2004.01.006
188:geometric transformations
73:) is a technique used in
968:Euclidean solid geometry
918:– via SourceForge.
406:PhotoRealistic RenderMan
322:boundary representations
848:10.1145/3272127.3275006
95:, CSG is often used in
752:Game Development Tools
282:
163:, which are typically
59:
958:Computer-aided design
871:Computer-Aided Design
808:Computer-Aided Design
585:(as of version 0.6.0)
417:Computer-aided design
328:applications such as
277:
33:
963:3D computer graphics
706:Bloomenthal, Jules;
125:geometric primitives
89:3D computer graphics
566:Valve Hammer Editor
481:(formerly known as
479:PTC Creo Parametric
439:Autodesk Fusion 360
308:level editor), and
97:procedural modeling
929:Magica CSG website
372:genetic algorithms
310:Torque Game Engine
283:
106:Contrast CSG with
69:; formerly called
60:
814:(11): 1063–1073.
708:Bajaj, Chandrajit
555:Unity Asset Store
434:Autodesk Inventor
365:program synthesis
16:(Redirected from
975:
942:
937:
931:
926:
920:
919:
917:
915:
904:
898:
893:
887:
886:
868:
859:
853:
852:
850:
839:ACM Trans. Graph
830:
824:
823:
803:
797:
795:
776:
767:
765:
746:
740:
734:
728:
726:
703:
694:
693:
673:
667:
665:
643:
242:
226:
210:
101:polygonal meshes
53:
45:
37:
21:
983:
982:
978:
977:
976:
974:
973:
972:
948:
947:
946:
945:
938:
934:
927:
923:
913:
911:
909:"Major release"
906:
905:
901:
894:
890:
866:
861:
860:
856:
832:
831:
827:
805:
804:
800:
793:
778:
777:
770:
763:
748:
747:
743:
735:
731:
724:
705:
704:
697:
675:
674:
670:
663:
647:Foley, James D.
645:
644:
633:
628:
574:
541:LittleBigPlanet
522:
425:
419:
402:
385:
380:
338:
272:
260:
250:
248:
243:
234:
232:
227:
218:
216:
211:
190:of those sets.
120:
51:
43:
35:
28:
23:
22:
15:
12:
11:
5:
981:
979:
971:
970:
965:
960:
950:
949:
944:
943:
932:
921:
899:
888:
854:
825:
798:
791:
768:
761:
741:
729:
722:
695:
684:(2): 109–144.
668:
661:
630:
629:
627:
624:
623:
622:
617:
612:
607:
602:
597:
592:
586:
580:
573:
570:
569:
568:
563:
558:
548:
543:
538:
533:
528:
521:
518:
517:
516:
511:
506:
501:
496:
491:
486:
476:
471:
466:
461:
456:
451:
446:
441:
436:
431:
418:
415:
414:
413:
408:
401:
398:
397:
396:
391:
384:
381:
379:
376:
337:
334:
271:
268:
259:
256:
252:
251:
244:
237:
235:
228:
221:
219:
212:
205:
119:
116:
75:solid modeling
26:
24:
14:
13:
10:
9:
6:
4:
3:
2:
980:
969:
966:
964:
961:
959:
956:
955:
953:
941:
936:
933:
930:
925:
922:
910:
903:
900:
897:
892:
889:
884:
880:
876:
872:
865:
858:
855:
849:
844:
840:
836:
829:
826:
821:
817:
813:
809:
802:
799:
794:
792:9780122861604
788:
784:
783:
775:
773:
769:
764:
762:9781439867723
758:
754:
753:
745:
742:
738:
733:
730:
725:
723:9781558602335
719:
715:
714:
709:
702:
700:
696:
691:
687:
683:
679:
672:
669:
664:
662:9780201848403
658:
654:
653:
648:
642:
640:
638:
636:
632:
625:
621:
618:
616:
613:
611:
608:
606:
603:
601:
598:
596:
593:
590:
587:
584:
581:
579:
576:
575:
571:
567:
564:
562:
559:
556:
552:
549:
547:
544:
542:
539:
537:
534:
532:
529:
527:
524:
523:
519:
515:
512:
510:
507:
505:
502:
500:
497:
495:
492:
490:
487:
484:
480:
477:
475:
472:
470:
467:
465:
462:
460:
457:
455:
452:
450:
447:
445:
442:
440:
437:
435:
432:
430:
427:
426:
424:
416:
412:
409:
407:
404:
403:
399:
395:
392:
390:
387:
386:
382:
377:
375:
373:
368:
366:
361:
359:
354:
350:
348:
343:
335:
333:
331:
325:
323:
317:
315:
311:
307:
306:Source engine
303:
299:
298:Unreal Engine
295:
293:
287:
281:
276:
269:
267:
265:
257:
255:
247:
241:
236:
231:
225:
220:
215:
209:
204:
202:
200:
196:
191:
189:
186:, as well as
185:
181:
177:
173:
169:
166:
162:
158:
155:An object is
153:
151:
147:
143:
139:
135:
131:
127:
126:
117:
115:
113:
110:modeling and
109:
104:
102:
98:
94:
90:
85:
83:
80:
76:
72:
68:
64:
57:
49:
41:
32:
19:
940:Womp website
935:
924:
912:. Retrieved
902:
891:
874:
870:
857:
838:
828:
811:
807:
801:
781:
751:
744:
737:Foley (1996)
732:
712:
681:
677:
671:
651:
483:Pro/Engineer
423:CAD software
369:
362:
355:
351:
346:
339:
326:
318:
304:(the native
291:
288:
286:together).
284:
270:Applications
261:
253:
246:Intersection
245:
229:
213:
192:
180:intersection
160:
156:
154:
123:
121:
112:box modeling
108:polygon mesh
105:
86:
70:
66:
62:
61:
40:intersection
514:Vectorworks
489:Realsoft 3D
358:half-spaces
347:inverse CSG
330:ray tracing
264:ray tracing
258:Ray tracing
157:constructed
952:Categories
626:References
605:Magica CSG
536:GtkRadiant
504:SolidWorks
499:Solid Edge
464:SolveSpace
421:See also:
280:ray tracer
230:Difference
199:parameters
184:difference
168:operations
161:operations
56:difference
739:, p. 559.
509:Tinkercad
195:procedure
134:cylinders
82:operators
877:: 1–17.
615:SketchUp
595:Clara.io
578:3Delight
561:UnrealEd
474:OpenSCAD
389:HyperFun
142:pyramids
118:Workings
914:May 20,
589:Blender
469:Onshape
454:FreeCAD
444:BRL-CAD
429:AutoCAD
411:POV-Ray
165:Boolean
146:spheres
130:cuboids
79:Boolean
52:—
44:∪
36:∩
789:
759:
720:
659:
600:Geant4
572:Others
546:Roblox
526:Dreams
520:Gaming
459:NX CAD
342:meshes
302:Hammer
294:engine
138:prisms
50:, and
867:(PDF)
583:Aqsis
551:Unity
531:Godot
494:Rhino
449:CATIA
394:PLaSM
292:Quake
214:Union
176:union
150:cones
48:union
916:2020
787:ISBN
757:ISBN
718:ISBN
657:ISBN
620:Womp
610:MCNP
296:and
289:The
182:and
172:sets
91:and
54:for
46:for
38:for
879:doi
843:doi
816:doi
686:doi
170:on
93:CAD
87:In
67:CSG
954::
875:74
873:.
869:.
841:.
837:.
812:36
810:.
771:^
698:^
682:18
680:.
634:^
349:.
332:.
178:,
174::
148:,
144:,
140:,
136:,
132:,
114:.
42:,
885:.
881::
851:.
845::
822:.
818::
796:.
766:.
727:.
692:.
688::
666:,
557:.
485:)
312:/
65:(
58:.
20:)
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.