Konstruktiv solid geometri

CSG-objekt kan representeras av binära träd, där löv representerar primitiver och noder representerar operationer. I den här figuren är noderna märkta för skärningspunkt , för union och för skillnad .

Constructive solid geometri ( CSG ; tidigare kallad computational binary solid geometry ) är en teknik som används vid solid modellering . Konstruktiv solid geometri tillåter en modellerare att skapa en komplex yta eller ett objekt genom att använda booleska operatorer för att kombinera enklare objekt, vilket potentiellt skapar visuellt komplexa objekt genom att kombinera några primitiva.

I 3D-datorgrafik och CAD används CSG ofta i procedurmodellering . CSG kan också utföras på polygonala nät , och kan vara procedurmässigt och/eller parametriskt.

Kontrast CSG med polygonnätmodellering och lådmodellering .

Arbete

De enklaste solida föremålen som används för representationen kallas geometriska primitiver . Vanligtvis är de föremål med enkel form: kuboider , cylindrar , prismor , pyramider , sfärer , kottar . Uppsättningen av tillåtna primitiver begränsas av varje mjukvarupaket. Vissa mjukvarupaket tillåter CSG på böjda objekt medan andra paket inte gör det.

Ett objekt konstrueras från primitiver med hjälp av tillåtna operationer , som typiskt är booleska operationer mängder : union , skärningspunkt och skillnad , såväl som geometriska transformationer av dessa mängder.

En primitiv kan typiskt beskrivas med en procedur som accepterar ett antal parametrar ; till exempel kan en sfär beskrivas med koordinaterna för dess mittpunkt, tillsammans med ett radievärde. Dessa primitiver kan kombineras till sammansatta objekt med hjälp av operationer som dessa:

Genom att kombinera dessa elementära operationer är det möjligt att bygga upp objekt med hög komplexitet från enkla.

Ray spårning

Återgivning av konstruktiv solid geometri är särskilt enkel vid strålspårning . Strålspårare skär en stråle med båda primitiva som opereras, applicerar operatören på skärningsintervallen längs 1D-strålen och tar sedan punkten närmast kameran längs strålen som resultatet.

Ansökningar

CSG-operationer tillämpas i samband med strålar i en strålspårare

Konstruktiv solid geometri har ett antal praktiska användningsområden. Det används i fall där enkla geometriska objekt önskas, [ citat behövs ] eller där matematisk noggrannhet är viktig. Nästan alla tekniska CAD-paket använder CSG (där det kan vara användbart för att representera verktygssnitt och funktioner där delar måste passa ihop).

Quake - motorn och Unreal Engine använder båda detta system, liksom Hammer (den inbyggda editorn för källmotornivå ) och Torque Game Engine / Torque Game Engine Advanced . CSG är populärt eftersom en modellerare kan använda en uppsättning relativt enkla objekt för att skapa mycket komplicerad geometri. När CSG är procedurmässigt eller parametriskt kan användaren revidera sin komplexa geometri genom att ändra objektens position eller genom att ändra den booleska operationen som används för att kombinera dessa objekt.

En av fördelarna med CSG är att det enkelt kan säkerställa att föremål är "fasta" eller vattentäta om alla de primitiva formerna är vattentäta. Detta kan vara viktigt för vissa tillverknings- eller tekniska beräkningstillämpningar. Som jämförelse, när geometri skapas baserat på gränsrepresentationer krävs ytterligare topologiska data, eller så måste konsistenskontroller utföras för att säkerställa att den givna gränsbeskrivningen anger ett giltigt solid objekt.

En bekväm egenskap hos CSG-former är att det är lätt att klassificera godtyckliga punkter som antingen inuti eller utanför formen skapad av CSG. Punkten klassificeras helt enkelt mot alla underliggande primitiver och det resulterande booleska uttrycket utvärderas. Detta är en önskvärd kvalitet för vissa applikationer som ray tracing .

Konvertering från maskor till CSG

Med CSG-modeller som parametriseras efter konstruktion är de ofta gynnsamma framför vanliga maskor när det kommer till applikationer där målet är att tillverka skräddarsydda modeller. För sådana applikationer kan det vara intressant att konvertera redan befintliga maskor till CSG-träd. Detta problem med att automatiskt konvertera maskor till CSG-träd kallas invers CSG .

Ett resulterande CSG-träd krävs för att uppta samma volym i 3D-rymden som inmatningsnätet samtidigt som det har ett minimalt antal noder. Enkla lösningar föredras för att säkerställa att den resulterande modellen är lätt att redigera. Att lösa detta problem är en utmaning på grund av det stora sökutrymmet som måste utforskas. Den kombinerar kontinuerliga parametrar som dimension och storlek på de primitiva formerna och diskreta parametrar som de booleska operatorerna som används för att bygga det slutliga CSG-trädet.

Deduktiva metoder löser detta problem genom att bygga en uppsättning halvrum som beskriver geometrins inre. Dessa halvrum används för att beskriva primitiver som kan kombineras för att få den slutliga modellen.

Ett annat tillvägagångssätt frikopplar detekteringen av primitiva former och beräkningen av CSG-trädet som definierar den slutliga modellen. Detta tillvägagångssätt utnyttjar möjligheten hos moderna programsyntesverktyg för att hitta ett CSG-träd med minimal komplexitet.

Det finns också metoder som använder genetiska algoritmer för att iterativt optimera en initial form mot formen på det önskade nätet.

Anmärkningsvärda applikationer med CSG-stöd

Generiska modelleringsspråk och programvara

Strålspårning och partikeltransport

Datorstödd design

Spelande

Andra