CSG (datagrafikk)
Constructive solid geometry (CSG) er en teknikk som brukes for å lage 3D-modeller ved å sette sammen komplekse overflater og former med boolske operasjoner.[1] Ofte vil modeller laget med CSG kunne se svært kompliserte ut, men egentlig bare bestå av kombinasjoner av enklere basisformer.[2]
Et alternativ til CSG kan være å bruke polygonbaserte modeller.
Virkemåte
[rediger | rediger kilde]De enkleste former for faste objekter kalles primitiver. Dette kan for eksempel være sylindere, prismer, pyramider, kuler og kjegler.[1] Mengden primitiver vil avhenge av hva slags programvare man bruker. Noen programmer tillater CSG på kurvede objekter, mens andre ikke har slik funksjonalitet.
Det sies at et objekt er konstruert med primitiver ved hjelp av ulike operasjoner. Disse operasjonene er typisk de boolske settoperasjonene: union, snitt, differanse, samt geometriske transformasjoner.[1]
Et primitiv kan typisk beskrives med en funksjon som tar inn et antall parametere; for eksempel kan en kule beskrives med koordinatene til sitt senterpunkt, og en radius.
Bruk av CSG
[rediger | rediger kilde]CSG har flere praktiske bruksområder. Spill- og grafikkmotorer som Quake-motoren og Unreal-motoren bruker CSG. CSG er også brukt i nesten all DAK-programvare. CSG er populært fordi det lar modellereren lage svært komplekse modeller ved hjelp av enkle operasjoner og grunnformer.[2]
En av fordelene til CSG er at det er enkelt å garantere at modellene man lager er faste, eller vanntette, hvis alle grunnformene også er vanntette.[3] Dette kan være en svært viktig egenskap når modellene skal brukes innenfor til produksjon av maskindeler og lignende.
En annen nyttig egenskap er at man enkelt kan sjekke om et punkt er inni eller utenfor objekter laget med CSG. Et punkt kan ganske enkelt sjekkes mot de underliggende primitivene, og de boolske operasjonene utført på disse.[4] Denne egenskapen kan blant annet utnyttes ved bruk av ray tracing.[4]
Referanser
[rediger | rediger kilde]- ^ a b c Foley, James D. (1996), «12.7 Constructive Solid Geometry», Computer Graphics: Principles and Practice, Addison-Wesley Professional, ss. 557–558, , http://books.google.com/books?id=-4ngT05gmAQC&pg=PA557.
- ^ a b Bloomenthal, Jules; Bajaj, Chandrajit (1997), «5.2.5 Intersection with CSG Trees», Introduction to Implicit Surfaces, Morgan Kaufmann, ss. 178–180, , http://books.google.com/books?id=T3SSqIVnS4YC&pg=PA178.
- ^ van Rossen, Sander; Baranowski, Matthew (2011), «Real-time constructive solid geometry», i: Ansari, Marwan, Game Development Tools, CRC Press, ss. 79–96, , http://books.google.com/books?id=HKZuaUdmovsC&pg=PA79.
- ^ a b Glassner, Andrew S. (1989), An Introduction to Ray Tracing, Morgan Kaufmann, s. 80, , http://books.google.com/books?id=YPblYyLqBM4C&pg=PA80.