Knowledge (XXG)

Constructive solid geometry

Source 📝

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:)

Index

Constructive Solid Geometry

intersection
union
difference
solid modeling
Boolean
operators
3D computer graphics
CAD
procedural modeling
polygonal meshes
polygon mesh
box modeling
geometric primitives
cuboids
cylinders
prisms
pyramids
spheres
cones
Boolean
operations
sets
union
intersection
difference
geometric transformations
procedure
parameters

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.