Üç Boyutlu Kent Modeli Oluşturma

Esri CityEngine ile Üç Boyutlu Bir Kent İnşa Edin – 1. Bölüm” adlı blog yazımızda iki boyutlu verilerin nasıl içe aktarılacağını ele alınmıştı. Bu blog yazımızda, hazırladığımız iki boyutlu verileri CGA kurallarını kullanarak nasıl üç boyutlu modellere dönüştürdüğümüzü inceleyeceğiz.

Esri CityEngine’de üç boyutlu bir içerik oluşturmanın iki yolu vardır:

  • Üç boyutlu mimari içeriklerin çizim araçları kullanılarak manuel olarak oluşturulması
  • İki boyutlu şekillere kurallar uygulanarak üç boyutlu modellerin oluşturulması

CityEngine’in gücü CGA komut dosyaları sayesinde etkileşimli, dinamik ve parametrik üç boyutlu modellerinizi hızlıca üretebilmenizden gelmektedir. “Kentsel Tasarım Projelerinizi Esri CityEngine ile Oluşturun” adlı blog yazımızda, CityEngine’in ana konsepti olan kural tabanlı modelleme kavramından bahsetmiştik. Esri CityEngine’de modelle manuel olarak etkileşime giren ve üç boyutlu geometrileri modelleyen kullanıcının klasik müdahalesi yerine, görevler bir kural dosyasında soyut olarak tanımlanır.

CityEngine, üç boyutlu model oluşturabilmek için iki boyutlu şekiller, öznitelikler ve kurallar olmak üzere üç bileşene ihtiyaç duymaktadır. Şekiller her bir üç boyutlu model için başlangıç noktasıdır. Birinci bölümde anlatılan farklı içe aktarma tekniklerini kullanarak elde etmiş olduğunuz veriler, üç boyutlu model oluşturmak için kullanacağınız şekilleri temsil edecektir. Bu şekiller CityEngine’de CGA komut dosyalarındaki kurallar ile üç boyuta dönüştürülmektedir. Aslında kurallar şeklinize bir sonraki adımda ne olacağını tanımladığınız komutlardır.

Örneğin CGA komut dosyalarında ki kurallarda bir bina x birim uzunluğundaysa, o binanın x birim uzunluğunda olması gerektiğini yazabilirsiniz ya da bir alan yeşil alanı temsil etmekte ise, bu alanı ağaçlar ile doldurabilirsiniz. CGA komut dosyalarında bunlar gibi basit komutlara yer verebileceğiniz gibi arazi kullanım, kentsel gelişme ve mimari detayların kriterlerini içeren çok daha karmaşık komutlar da yazabilirsiniz. Oluşturmuş olduğunuz modelde her bir içerik için kurallar yardımı ile ne kadar fazla detay sağlarsanız, üç boyutlu içeriğin karmaşıklığı ve gerçek dünyadaki nesneye benzerliği de o kadar artacaktır. Bu nedenle CGA kurallarını kullanarak üç boyutlu modellerin üretilmesi için, yeterli düzeyde şekil ve öznitelik bilgisine sahip verilerin elde edilmesi önemlidir.

Model üretmek için kullanacağınız bu komutlar “extrude”, “split” veya “texture” gibi birçok üç boyutlu uygulamada yaygın olarak kullanılan komutlar da olabilir. Böylece daha önceden bu tür uygulamaları kullanan ve bu kavramlara hakim olan kullanıcılar CGA şekil oluşturma dil bilgisine kolayca adapte olabilir ve kısa sürede karmaşık mimari formlar üretebilir.

Temel bina oluşturma kural dizini üzerinden kural bileşenlerini inceleyecek olursak:

Bir CGA kuralının temel işlevi, bir başlangıç şekline belirli parametrelerin uygulanması sonucunda yeni bir şeklin oluşturulmasını sağlamaktır. Kural dizininin bu bölümünde bina taban alanını ifade eden şekle bir kural uygulanmaktadır. BinaTabanAlani burada başlangıç şeklidir, yani kural tarafından işlenen ilk şekildir. Başlangıç şekle, nihai modelin oluşturulması için extrude (yükseltme) ve component split (bileşen bölme) olmak üzere iki işlem uygulanmıştır. Extrude (yükseltme) işlemi, bina taban alanını tanımlayan ve bu şekli üç boyutlu kütle modele dönüştüren işlemdir. CityEngine’de işlemler üç boyutlu modelin oluşturulabilmesi için parametreleri kullanır. Bu örnekte, parametre binanın 5 birim yükseltildiğini belirtmek için kullanılmıştır. Bu sayısal bir değer olabileceği gibi aşağıdaki örnekteki gibi şeklin kendisinden gelen ya da CityEngine’de oluşturulmuş bir öznitelik değeri ile de ilişkilendirilebilir.

Burada attr komutu ile ifade edilen Yukseklik ve CatiTipi ise model için öznitelik oluşturmaktadır.  Her bir öznitelik için @Range komutu ile tanımlamış olduğunuz değişkenler çerçevesinde Navigator penceresinde seçim menüsü karşınıza çıkmaktadır. Bu sayısal değişkenleriniz için bir kaydırıcı iken sözel değişkenleriniz için açılır menü şeklinde Navigator penceresine yansımaktadır.

Component Split (Bileşen bölme) işlemi ise çatı, pencere, kapı gibi mimari detayları ekleyebilmeniz için kullanılan işlemdir. Bu örnekte, üç boyutlu modelin yüzeylerini tanımlayan bileşen parçaları çatı ve duvarlardır. Elde edilen bu çatı ve duvar bileşenlerinin de modelde işlenebilmesi için kural ile tanımlanmaları gerekmektedir.

Kurallar “–>” söz dizilimi ile tanımlanmaktadır. Bu örnekte tanımlanan Cati kuralı koşullu bir yapıyı temsil etmektedir. Koşullu yapı, bir kod parçasının sonucunu belirleyen bir mantıksal işlem anlamına gelir. CGA’de koşullu ifadeler “case-else” yapısıyla belirtilir. Burada kural olasılıksal değerlere göre tanımlanan çatı öznitelik bilgileri ile koşullu bir yapı sunmaktadır.  Yani eğer öznitelik bilgisinde çatı tipi beşik çatı olarak tanımlanmış ise bu BesikCati, eğer Sağrılı Çatı olarak tanımlanmışsa SagriliCati, diğer tüm tanımlamalar içinse DuzCati alarak adlandırılmıştır. Bu kuralda sadece yeni bir tanımlama yapılmış herhangi bir geometrik işlem uygulanmamıştır. Daha sonra bu yeni çatı tanımlamaları için CityEngine kural kütüphanesindeki çatı kuralları ile geometrileri oluşturulmuştur.

Kural dizinindeki duvar kuralı ile duvar bileşenine renk atanarak basit bir kural uygulanmıştır. Bu kural sonrasında modelinizin duvarları renk kodunuzdaki rengi alacaktır. Bu renk kou Hexadecimal ya da RGB renk değerlerini kullanabilir.

Kural örneğindeki gibi, binanın duvarlarına texture komutunu kullanarak kural yardımı ile kütüphanenizde yer alan dokulardan cephe giydirme işlemi gerçekleştirebilirsiniz. Hatta dinamik dokular üretebilmek için Facade Wizard kullanarak cephe giydirme işlemlerinizi daha da geliştirebilirsiniz. Bu konuda yazılmış “ESRI CityEngine Facade Wizard ile Dinamik Yapılı Dokular Oluşturun” adlı blog yazımızı inceleyebilirsiniz.

Nihai model, bir kural tarafından işlenecek son şekildir. Bu örnekte X. Olarak ifade edilen son model o bileşen için başka işlem yapılmayacağı son ürün olduğu anlamına gelmektedir.

Kurallarınıza // veya # veya /* */ karakterlerini kullanarak açıklama ekleyebilirsiniz. Açıklama, CGA kuralları yazılırken önerilen bir uygulamadır. Kuralın diğer insanlara açıklanmasına yardımcı olur, kodun her bölümünün amacını açıklar.

Uygulamak istediğiniz operasyona göre tüm bu kuralları oluşturduğunuzda modelinizi üretebilirsiniz. Oluşturmuş olduğunuz CGA kural dosyasını iki boyutlu şekillerinize atadığınızda saniyeler içinde üç boyutlu modeliniz üretilmiş olacaktır.

Esri CityEngine ile Üç Boyutlu Bir Kent İnşa Edin adlı blog serimizin üçüncü bölümünde video oyunları, sanal gerçeklik ve arttırılmış gerçeklik konuları ele alınacaktır.

 

Share This