Yapıcı katı geometri - Constructive solid geometry

CSG nesneleri, yapraklar ilkelleri ve düğümler işlemleri temsil eden ikili ağaçlarla temsil edilebilir. Bu şekilde, düğümler etiketlenmiştir kavşak için, sendika için ve fark için.

Yapıcı katı geometri (CSG; önceden aradı hesaplamalı ikili katı geometri) kullanılan bir tekniktir katı modelleme. Yapıcı katı geometri, bir modelleyicinin kullanarak karmaşık bir yüzey veya nesne oluşturmasını sağlar. Boole operatörler daha basit nesneleri birleştirmek için[1] birkaç ilkel nesneyi birleştirerek potansiyel olarak görsel olarak karmaşık nesneler üretme.[2][3]

İçinde 3D bilgisayar grafikleri ve CAD, CSG genellikle prosedürel modelleme. CSG ayrıca poligonal ağlar ve prosedürel ve / veya parametrik olabilir veya olmayabilir.

CSG ile kontrast poligon örgü modelleme ve kutu modelleme.

Çalışmalar

Temsil için kullanılan en basit katı nesneler denir ilkeller. Tipik olarak basit şekle sahip nesnelerdir: küpoidler, silindirler, prizmalar, piramitler, küreler, koniler.[1] İzin verilen temel öğeler kümesi, her yazılım paketi ile sınırlıdır. Bazı yazılım paketleri eğri nesnelerde CSG'ye izin verirken diğer paketler bunu yapmaz.

Bir nesnenin olduğu söyleniyor inşa edilmiş izin verilenler aracılığıyla ilkellerden operasyonlar, tipik olarak Boole operasyonlar açık setleri: Birlik, kavşak ve fark, Hem de geometrik dönüşümler bu setlerden.[1]

Bir ilkel, tipik olarak bir prosedür bir miktar kabul eden parametreleri; örneğin, bir küre, bir yarıçap değeri ile birlikte merkez noktasının koordinatları ile tanımlanabilir. Bu ilkeller, aşağıdaki gibi işlemler kullanılarak bileşik nesneler halinde birleştirilebilir:

Bu temel işlemleri birleştirerek, basit olanlardan başlayarak yüksek karmaşıklığa sahip nesneler oluşturmak mümkündür.

Işın izleme

Yapıcı katı geometrinin işlenmesi özellikle aşağıdaki durumlarda basittir: Işın izleme. Işın izleyiciler, üzerinde çalışmakta olan her iki ilkel ile bir ışını keser, operatörü 1 boyutlu ışın boyunca kesişme aralıklarına uygular ve ardından ışın boyunca kameraya en yakın noktayı sonuç olarak alır.

Başvurular

Işınlar bağlamında uygulanan CSG işlemleri ışın izleyici

Yapıcı katı geometrinin bir dizi pratik kullanımı vardır. Basit geometrik nesnelerin istendiği durumlarda kullanılır,[kaynak belirtilmeli ] veya matematiksel doğruluğun önemli olduğu yerlerde.[4]Neredeyse tüm mühendislik CAD paketleri CSG kullanır (burada takım kesimlerini ve parçaların birbirine uyması gereken unsurları temsil etmek için yararlı olabilir).

Deprem motoru ve Gerçek dışı motor her ikisi de bu sistemi kullanıyor Çekiç (yerli Kaynak motoru seviye editörü) ve Tork Oyun Motoru /Tork Oyun Motoru Gelişmiş. CSG popülerdir, çünkü bir modelleyici çok karmaşık bir geometri oluşturmak için bir dizi nispeten basit nesne kullanabilir.[3] CSG prosedürel veya parametrik olduğunda, kullanıcı, nesnelerin konumunu değiştirerek veya bu nesneleri birleştirmek için kullanılan Boole işlemini değiştirerek karmaşık geometrilerini revize edebilir.

CSG'nin avantajlarından biri, tüm ilkel şekiller su geçirmez ise, nesnelerin "katı" veya su geçirmez olmasını kolayca sağlayabilmesidir.[5] Bu, bazı imalat veya mühendislik hesaplama uygulamaları için önemli olabilir. Buna kıyasla, geometri oluştururken sınır temsilleri, ek topolojik veriler gereklidir veya verilen sınır açıklamasının geçerli bir katı nesneyi belirttiğinden emin olmak için tutarlılık kontrolleri yapılmalıdır.[1]

CSG şekillerinin kullanışlı bir özelliği, rasgele noktaları CSG tarafından oluşturulan şeklin içinde veya dışında sınıflandırmanın kolay olmasıdır. Nokta, tüm temel ilkellere göre sınıflandırılır ve ortaya çıkan boole ifadesi değerlendirilir.[6] Bu, bazı uygulamalar için arzu edilen bir kalitedir. Işın izleme.[6]

Kafeslerden CSG'ye dönüştürme

CSG modelleri, yapı tarafından parametrelendirildiğinden, genellikle normalden daha avantajlıdır ağlar amacın özelleştirilmiş modeller üretmek olduğu uygulamalar söz konusu olduğunda. Bu tür uygulamalar için, zaten var olan ağları CSG ağaçlarına dönüştürmek ilginç olabilir. Ağları otomatik olarak CSG ağaçlarına dönüştürme sorununa ters CSG.

Sonuçta ortaya çıkan bir CSG ağacının, minimum sayıda düğüme sahipken giriş ağıyla aynı hacmi 3B alanda kaplaması gerekir. Ortaya çıkan modelin düzenlenmesinin kolay olmasını sağlamak için basit çözümler tercih edilir. Keşfedilmesi gereken geniş arama alanı nedeniyle bu sorunu çözmek bir zorluktur. İlkel şekillerin boyutu ve boyutu gibi sürekli parametreleri ve son CSG ağacını oluşturmak için kullanılan Boolean operatörleri gibi ayrı parametreleri birleştirir.

Tümdengelimli yöntemler, bir dizi oluşturarak bu sorunu çözer. yarım boşluklar geometrinin içini tanımlayan. Bu yarı boşluklar, nihai modeli elde etmek için birleştirilebilecek ilkelleri tanımlamak için kullanılır.[7]

Başka bir yaklaşım, ilkel şekillerin tespitini ve son modeli tanımlayan CSG ağacının hesaplanmasını birbirinden ayırır. Bu yaklaşım, modernin yeteneğinden yararlanmaktadır. program sentezi minimum karmaşıklığa sahip bir CSG ağacı bulmak için araçlar.[8]

Kullanan yaklaşımlar da var genetik algoritmalar başlangıç ​​şeklini istenen ağın şekline doğru yinelemeli olarak optimize etmek için.[9]

CSG destekli önemli uygulamalar

Genel modelleme dilleri ve yazılımı

Işın izleme ve parçacık taşıma

Bilgisayar destekli tasarım

Oyun

Diğerleri

  • 3Delight
  • Aqsis (0.6.0 sürümünden itibaren)[11]
  • Blender - öncelikle bir yüzey örgü düzenleyicisi, ancak meta nesneleri kullanarak ve örgü nesnelerinde Boole değiştiricisini kullanarak basit CSG yapabilme yeteneğine sahiptir.
  • Clara.io
  • Geant4
  • MCNP
  • SketchUp

Referanslar

  1. ^ a b c d Foley, James D. (1996), "12.7 Yapıcı Katı Geometri", Bilgisayar Grafiği: İlkeler ve Uygulama, Addison-Wesley Professional, s. 557–558, ISBN  9780201848403,
  2. ^ Roth, Scott (1982). "Katıları Modellemek için Işınlı Döküm". Bilgisayar Grafikleri ve Görüntü İşleme. 18 (2): 109–144. doi:10.1016 / 0146-664X (82) 90169-1.
  3. ^ a b Bloomenthal, Jules; Bajaj, Chandrajit (1997), "5.2.5 CSG Ağaçlarıyla Kesişim", Örtülü Yüzeylere Giriş, Morgan Kaufmann, s. 178–180, ISBN  9781558602335.
  4. ^ Foley (1996), s. 559.
  5. ^ van Rossen, Sander; Baranowski, Matthew (2011), "Gerçek zamanlı yapıcı katı geometri", Ansari, Marwan (ed.), Oyun Geliştirme Araçları, CRC Press, s. 79–96, ISBN  9781439867723.
  6. ^ a b Glassner, Andrew S. (1989), Işın İzlemeye Giriş, Morgan Kaufmann, s. 80, ISBN  9780122861604.
  7. ^ Buchele, Suzanne F .; Crawford, Richard H. (2004). "Örtük sınır temsillerinden üç boyutlu yarı uzay yapıcı katı geometri ağaç yapımı". Bilgisayar destekli tasarım. 36 (11): 1063–1073. doi:10.1016 / j.cad.2004.01.006.
  8. ^ Du, Tao; Inala, Jeevana Priya; Pu, Yewen; Spielberg, Andrew; Schulz, Adriana; Rus, Daniela; Solar-Lezama, Armando; Matusik, Wojciech (2018). "InverseCSG: 3D modellerin CSG ağaçlarına otomatik dönüşümü". ACM Trans. Grafik. doi:10.1145/3272127.3275006.
  9. ^ Fayolle, Pierre-Alain; Pasko, Alexander A. (2016). "Nesne yapım ağaçlarının 3B nokta bulutlarından çıkarılmasına evrimsel bir yaklaşım" (PDF). Bilgisayar destekli tasarım. 74: 1–17. doi:10.1016 / j.cad.2016.01.001.
  10. ^ Godot Engine - Godot CSG desteği alıyor
  11. ^ Gregory, Paul (12 Şubat 2002). "Büyük sürüm". Alındı 20 Mayıs, 2020 - SourceForge aracılığıyla.