Neredeyse tüm ticari ürünler, ürünün tasarım özelliklerine sahip 2 veya 3 boyutlu bir model şeklinde CAD dosyası olarak başlar. Günümüzün 3D modellerini temsil etmek için yaygın olarak kullanılan yöntemlerden biri; yapıcı katı geometridir. CSG, çok sayıda temel şeklin veya “ilkellerin” birkaç ayarlanabilir parametreyle, tek bir nesneyi oluşturmak için çeşitli şekillerde birleştirilebileceği bir tekniktir.Derlenmiş dijital nesne, bitirildiğinde; nesnenin şeklini tanımlayan 3 boyutlu üçgenlerden oluşan bir ağa dönüştürülür.
Bu kafesler, 3 boyutlu yazdırma ve sanal simülasyon dahil olmak üzere; birçok uygulama için girdi olarak kullanılır. Bu ağı özelleştirmek mühendisler açısından kolay değildir. Örneğin, nesnenin yarıçapının bir kısmını ayarlamak; etkilenen her üçgenin köşelerini ve kenarlarını ayrı ayrı ayarlamayı gerektirir. Binlerce üçgen içeren karmaşık modellerde; kişiselleştirme göz korkutucu ve zaman alıcı hale gelir. Üçgen kafesleri tekrar şekillere dönüştürmek için kullanılan geleneksel teknikler; karmaşık modellere göre iyi ölçeklendirilmez veya düşük çözünürlüklü, gürültülü dosyalar üzerinde doğru şekilde çalışmaz.
Son zamanlarda, AMC SIGGRAPH Asya Konferansı’nda sunulan bir bildiride, MIT araştırmacıları; CAD modellerini küreler ve küpler gibi ilkel şekillerine ayırmak için “program sentezi” adlı bir tekniği uygulayan bir sistem tanımladılar. Program sentezi otomatik olarak bir dizi talimat doğrultusunda bilgisayar programları oluşturur.
Temel olarak, CAD modelleri oluşturmak için; tasarımcılar nihai şekilleri bireysel nesnelere monte eder. Araştırmacıların yöntemi, CAD modellerini düzenleyebilecek bireysel biçimlerde parçalara ayırarak, tersini yapıyor. Giriş olarak, sistem bir 3D üçgen örgü alır ve önce onu oluşturan ayrı şekilleri belirler. Program sentezi, şekillerin nasıl bir araya getirilip son modelde nasıl birleştirildiğini bulmaya çalışarak şekillerin arasında gezinir. Bunu yaparken, ağı, ilkel şekilleri ve bu şekillerin nasıl bir araya geldiğinin adımlarını detaylandıran diğer düğümleri temsil eden bir düğümler ağacına böler. Son şekiller, kullanıcıların kafeslere geri yüklenebilen ince ayar yapması için düzenlenebilir parametreler içerir.
Temel Şekiller
Araştırmacılar, değişen karmaşıklıktaki 50 adet 3 boyutlu CAD modelinin bir veri kümesini oluşturdular. Deneylerde, araştırmacılar kendi sistemlerini 100 ilkel şekilden oluşan CAD dosyalarını tersine çevirebileceklerini gösterdiler. Basit modeller yaklaşık bir dakika içinde parçalanabilir. Araştırmacılar, çalışma sürelerinin hızlı olmasına rağmen, sistemin temel avantajının çok karmaşık modelleri basit, temel şekillere ayrıştırma kabiliyeti olduğunu söylüyor.
MIT’in Bilgisayar Bilimi ve Yapay Zeka Laboratuvarı (CSAIL) Hesaplamalı İmalat fabrikasında doktora öğrencisi olan Tao Du: “Yüksek düzeyde, sorunlu bir üçgen ağını basit bir ağaca dönüştürmek için ideal olarak bir nesneyi özelleştirmek istiyorsanız; boyutlarının ne olduğu ve bunların nasıl birleştirildiğini öğrenebilmek için orijinal şekillere erişebilmek en iyisi olacaktır. Fakat her şeyi bir üçgen ağda birleştirdiğinizde, üzerinde çalışmak için bir üçgen listesinden başka bir şey kalmaz ve bu bilgi kaybolur. Meta verileri kurtardığımızda, diğer kişilerin tasarımları değiştirmesi daha kolay. ”
Du, işlemin imalatta veya 3 boyutlu yazdırma yazılımıyla birleştirildiğinde yararlı olabileceğini söylüyor. Bu özellikle amatör 3D yazıcı kullanıcılarının 3D baskı modellerini çevrimiçi toplulukların indirmesi ve değiştirmesi için web sitelerine yükledikleri tasarım paylaşımı çağında önemlidir. Yüklemeler çoğunlukla üçgen kafeslerden oluşur. Çünkü kafesler platformlar arasında evrensel olarak kabul görmüş CSG tabanlı CAD dosyalarından çok daha evrenseldir.
Du: “Tonlarca mesh modelimiz var. Ancak arkalarında nispeten az sayıda CAD dosyası var. Kullanıcılar tasarımı evde yeniden üretmek ve birazcık kişiselleştirmek istiyorsa, bu teknik faydalı olabilir.”
Ağaçlar ve Üçgenler
Program sentezi, ağaçlar ve matematiksel özellikler gibi içinde çalışması gereken yapının anlamı olan belirli bir “dilbilgisi” verilen aday bilgisayar programlarını otomatik olarak bulur. Bu kısıtlamaları kullanarak, program sentezi geriye doğru çalışır ve yeni girdiler, verilen bu spesifikasyonlara uyan bir algoritma oluşturmak için boşlukları doldurur. Teknik, örneğin yazılım mühendisliğinin basit bileşenleri için kullanılabilir.
Araştırmacıların çalışmasında, dilbilgisi CSG’dir ve ağaç olarak temsil edilir. Her bir son düğüm (dallanma düğümleri olmadan), açıkça tanımlanmış parametrelere sahip ilkel bir şekli temsil eder ve ara düğümler, şekillerin yakınsak ve ilişkili olduğu temel yolları temsil eder.
Araştırmacılar, program sentezinin üç boyutlu bir ağın tamamını taramasını ve temel olarak yeni bir aday programı oluşturabileceği olası her CSG ağacını düşünmesini sağlayan bir yöntem geliştirmiştir.
Sistem bir giriş ağı aldıktan sonra, bir ön işleme adımı tüm ilkel şekillerin olası konumlarını, yönlerini ve parametrelerini algılar. Bu işlem, üçgen ağın yüzeyinde büyük bir nokta bulutu oluşturur. Özel bir “ilkel algılama” algoritması, bu noktalardan, ağı oluşturan her ilkel şeklin boyutlarını ortaya çıkarır.
Araştırmacılar daha sonrauzaydaüç boyutlu tonlarca noktayı alır ve bunları ağın içinde veya dışında olarak işaretler. Bu, şekillerin nasıl birleştiğine veya birbiriyle ilişkisinin belirlenmesine yardımcı olur. Basit bir örnek, birleştirilmiş A ve B iki küreden oluşan bir ağdır. Örneklenen bir nokta, A küresinin içine, biri B küresinin içine ve biri ikisinin kesişimine düşerse (hem A hem de B’nin içinde), büyük olasılıkla iki şeklin birleşimidir.
Bu bilgiler göz önüne alındığında, ilkel boyutlarla birlikte, program sentezi potansiyel olarak bir CGS ağacı oluşturabilir. Ancak, düşük karmaşıklıktaki 3D kafesler, on binlerce noktayı örneklemek için program sentezini gerektirecektir. Bu, işlemsel olarak ele almak için pratik olmayan büyük bir arama alanı oluşturur.
Du: “Tüm numuneleri doğrudan beslemek, program sentezleyicisini boğacaktır.”
Sistemin verimli bir şekilde çalışmasını sağlamak için araştırmacılar, üç boyutlu alan boyunca birkaç küçük nokta örneği alt kümesi oluşturan ve program sentezinin hesaplanması için daha kolay olan bir örnekleme yöntemi tasarladılar. Bu alt kümeleri örnekleyerek, doğru sayılabilecek yeni bir aday “program” veya CGS ağacı oluşturur. Çok sayıda yinelemeden sonra belirli noktaları ve ağaçları ortadan kaldırmak için teknikler kullanarak sistem, doğru ara adımlar ve son parametreler ile, her şekil için doğru CGS ağacına iner. Herhangi bir düzenlenmiş şekil, sistem ara aşamaları nihai nesneyi geri hesaplayarak takip ettiği için ağa geri besleme sağlar.
Şu anda, sistem sadece dört ilkel şekli ele alıyor; küreler, silindirler, küpler ve tori (halka şekilleri). İlerleyen zamanlarda araştırmacılar, yalnızca Boolean operatörlerinin dışındaki daha fazla şekil ve daha fazla değiştirici işlemek için CSG dilbilgisinin karmaşıklığını arttırmayı hedefliyor.