E-bergi dünyasından herkese merhaba! Geçtiğimiz ayki yazımda da belirttiğim gibi bu ay anlatacağım konu Unity’de arazi yaratma teknikleri ve kolayca yol objesi yaratmanızı sağlamak için geliştirilen bir araç olan EasyRoads3D. Özellikle araba yarışı gibi bir oyun geliştiriyorsanız az sonra bahsedeceğim yöntemler işinizi kolaylaştıracaktır.

Unity'de Arazi Yaratma Seçenekleri

İngilizce'deki karşılığı ‘terrain’ olan ve Unity’de de bu adla kullanılan arazi(zemin) nesnelerini temel olarak üç farklı şekilde değiştirip, onlara istediğimiz şekli verebiliyoruz.

Unity'nin Arazi Şekillendirme Editörü

Menü çubuğundan Arazi(Terrain) seçeneğini seçip arazinizi oluşturduktan sonra, bu nesneniz hiyerarşi(hierarchy) sekmesinde yerini alacaktır. Bu sekmede arazi nesnenizin üzerine tıkladığınızda kontrol(inspector) sekmesinde bu nesnenize ait özellikleri göreceksiniz. Bu özellikler arasında arazi(terrain) olarak adlandırılan bir betik (script) bulunuyor. Bu betik, aslında arazi yaratmanızı sağlayan editörü oluşturan betik. Buradaki seçeneklere bakacak olursak;

  • Arazi yüksekliğini artırma veya azaltma
  • Arazi yüksekliğini belli bir seviyeye çıkarma veya indirme
  • Arazinin şeklini yumuşatma (sert yükseklikler varsa aradaki geçişi hafifleştirme)

  • Arazinizi bir doku(texture) ile kaplama

  • Ağaç, bitki ve diğer objeleri arazinize ekleme

Tüm bu işlemleri de sanki Paint’te boyama yapar gibi bir fırça aracı eşliğinde gerçekleştiriyorsunuz. İstediğiniz kaplama(texture) tipi ve belirlediğiniz ağaç/ot modelleriyle arazinizi süsleyebiliyorsunuz. Uygulamanın bu kısmı eğlenceli; ancak arazinizin her bir noktasını düşünerek şekillendirmek zorunda kalmanız çok zaman alıyor. Bu nedenle işinizi hızlandıracak bir ek araç (toolkit) yine Unity tarafından geliştiricilere sunuluyor. Bu aracı ikinci bir yöntem olarak anlatalım.

Arazi Araç Takımı(Terrain Toolkit)

Unity’nin kendi sitesindeki Destek->Kaynaklar->Unity Eklentileri (Support - > Resources -> Unity Extensions) yolu izlenerek edinilebiliyor. Hatta direk buradan buyurun. :)

Bu linkten aracı indirdikten sonra Unity içinde “Assets->Import Package” yolundan indirdiğiniz Arazi Araç Takımı paketini seçtiğinizde bu paketin açılıp, içindeki klasörleri Proje(Project) sekmenize eklendiğini göreceksiniz. Aracın editörünü aktifleştirebilmek için projenize eklenen Arazi Araç Takımı(“Terrain Toolkit”) klasörünün içindeki “Terrain Toolkit” betiğini Hiyerarşi sekmenizdeki arazi nesnenizin üzerine sürüklemelisiniz.

Bu aracın özelliği Unity’nin kendi içinde olduğu gibi fazladan bir arazi editörü sunması. Bunu da editör aracılığıyla belirlenebilen özellikler ve ölçeklendirmeler çerçevesinde gerçekleştiriyor. Yani siz özellikleri ve miktarlarını belirledikten sonra “Arazime Uygula” seçeneğine tıkladığınızda tüm araziniz sonuçtan etkilenerek sizi daha önceden bahsettiğim o detaylı uğraşlardan kurtarıyor. Bu editörde aşağıdaki özellikler mevcut:

  • Yaratma (Voronoi: keskin yerel yükseltiler, Perlin: yayılmış yükseltiler,vb.)
  • Aşındırma (ısı, rüzgâr ve su gibi etkenler tarafından yaratılan erozyon)
  • Doku kaplama(belirtilen yükselti aralıklarında arazinizi belirtilen doku malzemeleriyle kaplar)

Bununla birlikte eğer ağaçlandırmanızda da çeşitlilik istiyorsanız Unity bunun için de ek bir paket hazırlamış durumda. Buradan zip dosyasını indirip çıkarttıktan sonra Arazi Araç Takımı’ndaki gibi paketi projenize ekleyebiliyorsunuz. ‘Terrain Assets’ olarak adlandırılan bu pakette çeşitli ağaç/çalı modelleri ve birden çok farklı doku modelleri bulunmakta. Bu paketi projenize ekledikten sonra herhangi bir betiği arazi objenize taşımanıza gerek yok; projenize eklenmesi yeterli. Etkin olduğunu Unity’nin kendi arazi yaratma editöründeki ağaçlandırma kısmında ağaç tiplerini seçerken görebilirsiniz.

Heightmap Yöntemi

Bu yöntemde yükseklikler gri renk skalasındaki renk değerleriyle eşleştiriliyor. İki boyutlu ve gri tonlarındaki bu heightmap dosyaları sayesinde üç boyutlu şekilleri ifade ve elde edebiliyoruz. Unity’de “.raw” uzantılı bu heightmap dosyalarını arazinize uygulayarak heightmap’te belirlediğiniz yükseltilerin belirlediğiniz koordinatlardaki sonucunu görebiliyorsunuz. Harici olarak ‘3D Terrain Generator’ ifadesiyle anılan arazi yaratma programları sayesinde yükseklik haritalarını Unity projemize ekleyip etkin hale getirebiliyoruz. Bu yöntem için ise güzel bir örnek ‘L3DT’ adlı bir program. Şu bağlantıda ve wiki adresinde de adım adım anlatıldığı üzere L3DT programında başlangıçta heightmap’inizin genişlik ve yüksekliğini belirliyorsunuz. Ardından Paint programına benzer bir mantıkla, belirli yükselti değerlerini seçip fırçayla arazinizi sembolize eden heightmap alanlarını boyuyorsunuz. Ardından hazırladığınız bu iki boyutlu resmi heightmap’e çeviriyorsunuz. Çevirdiğinizde alçak yerlerin siyaha yakın yüksek yerlerin de beyaza yakın renkte olduğunu göreceksiniz.

Daha sonra Unity’e tekrar dönerek .raw formatında kaydettiğiniz bu heightmap’i Unity’nin menü çubuğunda Arazi->Heightmap İthal Et (Terrain->Import Heightmap) yolunu izleyerek kendi arazi nesnenize uygulayabiliyorsunuz. Detaylar için şuradaki videoları izleyip kendiniz de adım adım uygulayabilirsiniz.

Aynı yöntemi Photoshop'la yapmak da mümkün. L3DT'deki mantıkla .raw uzantılı bir yükseklik haritası yaratmanın ardından (sadece gri skalasında bir resim çiziyorsunuz) Unity’e bu verileri aktarmak arazinize şekil vermeye yetiyor. Bu bağlantıda bu işlemin nasıl gerçekleştiği anlatıyor.

EasyRoads 3D

Ve geldik en kolay, en sevimli ve beni en heyecanlandıran yönteme! :) EasyRoads3D, Unity tarafından da desteklenen bir ek paket. Bu paket arazi yaratmaktan çok, eğer araba yarışı kıvamında bir uygulama geliştiriyorsanız, kolayca yol yaratmanızı sağlıyor. “Yol yaratmakta da ne varmış! Asfalt rengi bir doku(texture) seçip yarattığım arazinin üzerinde çizgi çekerek yol yaparım.” demeyin; çünkü bu çok zahmetli ve hiç de tatmin edici olmayan sonuçlar doğuran bir yöntem. Bu paketin bize sunduğu gerçekçi bir yol, yolun kenarlarında bulunan yan objeler(bank, lamba, ağaç gibi) ve yolun dışında nehir de ekleme gibi muhteşem özellikler içeriyor. Tüm bunların daha önceden yarattığınız araziniz ile bir bütün olarak görünmesi..yani az önce sıraladığım nesnelerin altında hiçbir boşluk kalmıyor; arazinizin kıvrımlarına ayak uyduruyor. Bu bağlantıda bulunan videoları izleyerek bu paketin tam olarak ne yaptığını görüp, “İşte bu!” diyebilirsiniz.

Pre-order fiyatı $39 olan bu paketi, bu bedeli ödeyerek satın alıp ya da ücretsiz olan demo sürümünü indirip “Assets->Import Package” seçenekleriyle de projenize ekledikten sonra “EasyRoads3D” ismindeki ek bir sekme Unity menü çubuğuna eklenecektir. Arazi->Arazi Yarat (Terrain->Create Terrain) yoluyla arazinizi yarattıktan ve yukarıda bahsettiğim adımlardan birini takip ederek biraz yükselti katıp şekillendirdikten sonra ek olarak gelen bu yeni sekmeye tıklayıp Yeni Nesne (New Object) diyerek size yol, nehir veya çit, duvar gibi başka bir nesne (custom object) seçeneklerinden hangisini oluşturmak istediğinizi soruyor. Yolu seçtiyseniz adını belirlediğiniz yeni nesne hiyerarşi sekmesine ekleniyor ve sizden yolu oluşturmaya yarayan işaretleyici (marker) olarak adlandırılan nesneleri araziye arka arkaya eklemenizi bekliyor. Artık geri kalan işlemleri Kontrol (Inspector) sekmesinde çıkan EasyRoads3D’nin kendi editörü üzerinden yapmaya devam ediyorsunuz. Eklediğiniz iki işaretleyici arasına bir yol parçası kendiliğinden ekleniyor. Bu şekilde yol işaretlerini arazinizin üzerinde istediğiniz yöne doğru adım adım koyabilirsiniz. İşaretleri koyduktan sonra “Araziyi İşle, Yol Geometrisi Yarat” (Process the terrain, creat road geometry) düğmesine tıkladığınızda yolunuz belirlenen doku(texture) ile görünecektir. Diğer bir güzel özellik de bu işaretleyicileri hiyerarşi sekmesinden tek bir nesneymiş gibi birer birer seçerek Taşı(Move) aracı ile istediğiniz yüksekliğe çekebilmek ve her yöne kaydırabilmek. Bu işlemleri yaparken yol hiçbir zaman arazinizden bağını koparmıyor; yani eğer bir işaretleyiciyi yukarı doğru hareket ettirirseniz yolun altı da yükseliyor ve boşluk oluşmadan bütünlük sağlanıyor. Ancak, demo sürümünde en fazla 6 tane işaretleyici kullanmaya izin veriliyor.

Yan Nesne(Side Object) adı verilen, yol boyunca yolun kenarlarına nesne koymanızı sağlayan bu seçenek de yeni tanımlayacağınız (model ve yerleşme aralıkları) kenar nesnesini yol boyunca yerleştiriyor. Bunun için yanlarında nesne yaratacağınız yol nesnesini önce seçmeniz, ardından da EasyRoads3D’nin editöründen Genel Ayarlar (General Settings) düğmesine tıklayıp, yarattığınız yan nesneleri etkinleştirmeniz gerekiyor. Bundan sonra bir soldaki “Araziyi İşle, Yol Geometrisi Yarat” (Process the terrain, creat road geometry) düğmesinde “Yan Nesneler İnşa Et” (Build Side Objects) dediğinizde bu yol için etkinleştirilmiş olan yan nesneler yolun kenarlarına eklenmiş oluyor.

EasyRoad3D’nin daha pek çok etkileyici ve kullanımı kolay özellikleri mevcut. “Ben bu Unity işine gireceğim!” diyorsanız ve yola ihtiyacınız olursa bu aracı ne yapıp edip edinmeye ve kullanmaya çalışın. :) Paketin geliştiricisi olan arkadaşın da elektronik posta adresi burada; bir sorunuz olduğunda anında e-posta atın. Adam en fazla 10 dakika içinde geri dönüyor; tüm gün bilgisayar başında yani. :)

Sonraki yazımda Unity’de yaptığınız oyunu nasıl -direksiyon, gaz, fren, vites kolu gibi parçalardan oluşan- oyun konsolunuza bağlayabileceğinizi anlatmak istiyorum. Kendi projemiz ilerledikçe size de öğrendiklerimi aktarıyorum özetle. :) Unity konusunda herhangi bir sorunuz/talebiniz varsa çekinmeden bize ulaşın. Sonraki yazımda görüşmek üzere!

Kaynaklar