13 Şubat 2015 Cuma

Blender Topology Yöntemi ve Normal Map

Öncelikle herkeze merhaba.

        Bu konumuzda Blender da  topology nedir ve nasıl yapılır ona bakıcaz. Genel anlamda topology çok sayıda poligona sahip mesh objelerinin  ana hatlarını bozmadan düşük yüzek sayılarına çevirme yöntemidir.Blender da topology yapmanın birçok yöntemi var . Topology için modifier kullanabiliriz veya sculpt mode da topology yapabiliriz. Modifier ve sculpt mode de aslında kontrol tam olarak bizim elimizde olmaz, blender o işleri kendisi hesaplar ve en uygun gördüğü şekilde yapar işlemi.
Çok yüksek sayılardan çok düşük sayılara geçtiğimizde modifier ve sculpt fırçasının yaptığı işlemlerde istemediğimiz şeyler olabiliyor.
      Adım adım kontrolün tamamen bizde olduğu yöntem ile topology yapıcaz. Elimizde yüksek poligonlu bir objemiz var ve çalışma esnasında bile pcyi kasabiliyor bu tarz objeler .

Bu resimdeki obje 480.000 poligona sahip . bu sayılardaki objelere en basitinden mark seam hattı oluşturup uv map hazırlamaya çalışsak 1 ay uyraşırız.
Şimdi adım adım yapmaya başlıyoruz . 
Step1: 
Yeterli detaya sahip olduguna düşündüğümde ObjeMode geçerek Blenderdan bir plane objesi istedim ve adını LowPoly olarak değiştirdim.
Hemen ardından yeni objemiz aktif iken edit moda geçerek zaten 4 vertexli olan objenin 3 vertex ini silip sadece 1 vertex bırakıyoruz.

Step2:
Snap Modu aktifleştiriyoruz ve Snap Element olarakda Face seçiyoruz.Yani biz şu anda 1 vertexli olan objemizi yüksek face(poligon) sayılı objenin üzerinde G ile taşıdığımızda veya Extrude (E)  ile çoğalttığımızda vertex otomatik olarak diğer objenin yüzeylerinden birine yapışacak. 
Daha sonra loop hattımızı belirliyoruz .Loop dediğimiz hat için örnek vermek gerekirse mesela elimizi biraz kapatırsak avuç içimizde kasların oluşturdu 3 çizgi görürüz işte o çizgiler bir loop hattıdır.Bu model daha extrem hatlara sahip olduğu için  yüksek ve alçak olan yüzeyleri takip edicem ve bir yönde ilerlemeye çalışıcam .

    Animasyona sahip olmayan sabit duran ev,ağaç,masa vs gibi objelerde loop hatlarını oluşturan yüzeylerin üçgen-dörtgen veya ngen olmasının çok önemi yok ama shade smooth en iyi sonucu dörtgen yüzeylerde verdiği için oluşturacağımız facelerin olabildiğince dörtgen olmasına özen göstericez.
Step3 :
Extrude yaparak ilerliyoruz. Vertexleri tek tek seri şekilde extrude yapıyoruz. Edge veya bir loop hattı seçip  extrude yapabilirz ama o zaman o hattaki sadece bir vertex diğer objenin yüzeyine yapışır geri kalan vertexleri yine tek tek seçerek G ile taşımamız gerekir.

           Yüksek poligonlu ve yeni yapacağımız düşük poligonlu objemizin orgin noktaları aynı yerde olursa topology yaparken mirror modifier de kullanabiliriz böylece her işlemi iki sefer yapmamış oluruz.
Step4:
     Yeni oluşturduğumuz model için dikkat etmemiz gereken şeyler üst üste gelen vertex varmı yokmu kontrol ediyoruz. Obje Modda  Ctrl+A ile Rotation ve Scale diyoruz böylece blender objemizin şeklini tanımış oluyor.Güzel bir Mark Seam hattı ile iyi bir UvMap hazırlıyoruz.

  Ben denemek amaçlı 2 tane obje hazırladım.Bu iki obje örnek aldığımız yüksek poligonlu objenin iyi bir taklidi oldu ama istediğimiz detaylara sahip değiller. İşte tam burada çok can alıcı her derde deva olan Bake işleminden yararlanıp yüksek poligonlu objenin detaylarını alıp düşük poligonlu objeye aktarıcaz. Bake işleminden önce yeni objelerimiz için çok önemli ama çok da unutulan ctrl+A komutu verip rotasyonu ve scale değerlerini tanıtıyoruz. ardından uv maplarını hazırlıyoruz.
Step5:
Bake işlemi ile detayları almak istediğimiz için normal map hazırlamamız gerek
 Bake işlemini bildiğinizi varsayarak bu konuda anlatmıyorum istek olursa Bake işlemlerinin nasıl yapıldığı ve nerelerde kullanıldığına dairde bir anlatım hazırlamaya çalışırım. Gerçi resimdeki işaretlenmiş yerleri incelerseniz zaten kolaylıkla bake işlemini yapabilirsiniz.
  Oluşturduğumuz normal map haritasını node editörde ilgili objeye onun bir normal map haritası olduğunu tanıtıyoruz.Ben konunun anlaşılması için streng değerlerini yüksek tuttum siz ihtiyacınıza göre strang ayarları arttırır veya azaltabilirsiniz.

Şu anda yapmak istediğimiz şeyleri yaptık ve artık deneme zamanı. Bakalım nasıl bir sonuç alıcaz 
Görüldüğü gibi normal map yapması gerekeni yapıyor ve düşük poligonlu objelere etki ediyor.Bu resimi yorumlamak gerekirse koyu olan bölgeler ışıktan az etkileniyor ve bir derinlik hissi veriyor.Açık ren olan bölgeler ise ışıktan daha çok etkileniyor ve yükseklik hissi veriyor. Normal Map objenin şeklini değiştirmez veya obje üzerinde bir boyama yapmaz.Normal Map yüzeylerin ışıktan nasıl etkileneceğini belirler ve biz olmadığı halde orada çukurlar veya yükseltiler görürüz.Bir nevi ilizyon gibi.
Aşağıdaki resimde  normal map  bir yüzeye nasıl etki ediyor daha iyi anlıcaz
Işık kaynağından gelen yeşil renkteki ışık huzmelerini her yüzey kendi yönünde yansıtıcaktır.Bake işlemi ile üstteki yüzeyin ışığa olan tepkisini alıyor ve alttaki yüzeye normal map aracılığı ile tanıtıyoruz.Böylece alttaki temsili yüzey tamamen düz olmasına karşın normal map sayesinde üstteki temsili yüzeyin ışık kırılmalarını taklit ederek sanki oda girinti ve çıkıntılara sahipmiş gibi görünüyor.
Madem ışık dedik objelerimize küçük bir ışık testi yapalım

Ortadaki objemiz 480.000 poligonlu  soldaki 3400 sağdaki ise 1300 poligonlu objelerimizdi
ışığın kapsamına giren bölgelere dikkat edersek (özellikle 1300 poligonlu olan sağdaki) çok iyi şekilde orjinal objeyi taklit ediyor.

ben biraz daha uğraşıp 700 poligona kadar indirgedim objeyi ve Hand painted yöntemiyle texture dosyalarını hazırladım. Aşağıdaki videoda color map ve normal map kullanılmıştır.

https://www.youtube.com/watch?v=2QXL1uvj_sQ

   

Hatam ve anlatım bozukluklarım olduysa kusura bakmayın , faydam dokunduysa ne mutlu

10 Şubat 2015 Salı

Blender Foundation Low Poly Modelleme

( Blender Foundation da başlangıç seviyesinin biraz üzerindekiler için yapılan bir anlatımdır.)
(  ozkancifci06@gmail.com)



Herkeze iyi günler diyorum öncelikle bu konuda elimden geldiğince iyi bir low poly model nasıl yapılıyor onu paylaşmaya çalışıcam.
öncelikle şunu belirtmekte fayda var low poly model nedir ne işe yarar neden low poly tercih ediyoruz.
Özellikle oyunlarda tercih ediliyor, oyunlar bir yandan gerçek zamanlı render yaparak çalışıyor .oyunlarda kasma dediğimiz şey bu render süresinin uzaması oluyor genellikle.
Kısacası ister bir oyun olsun ister bir animasyon olsun render süresini azaltmak için olabildiğince low poly modelleme yapmakta fayda var.

Low Poly yapmanın birçok yolu var kimisi  binlerce edge ve vertex'i eliyle tek tek silerek azaltıyor, kimisi blender dururken yardımcı programlarla uğraşıp bir kamyon inport- export işlemi yapıyor.. Tamamen kişisel tercihe bağlı bir çok yolla low poly model yapmak mümkün.

Şahsen benim tercih ettiğim yöntem yüksek detaylı (poligonlu) bir objeyi  Bake ile düşük poligona çevirme yöntemi .

adım 1 :
       Modellemeye başlıyoruz


Burada dikkat etmemiz gereken yer edge lerimizin birbirini takip ediyor olması. yani loop lar birbirnini ne kadar iyi takip ediyorsa o kadar iyi olur. birbirinden kopuk çizgi hatları varsa modellimizde ileride başımıza bela olarak geri dönüyor onun için hatların düzgün ve birbirini takip ediyor olmasına dikkat!!

adım2:
       Modelimizde boşta kalmış , üst üste gelmiş vertex- edge -face olmamasına dikkat ediyoruz . çalışırken arada bir ''remove doubles'' konutunu vermekte fayda var.



adım3:

     Modelimizin ana hatlarını oluşturuyoruz .Ana hatları oluşturmadan yüksek detaylandırmaya geçersek bu durum el arabasına araba lastiği takmaya çalışmak gibi birşey olur



adım 4:
      Şimdi oluşturduğumuz modelin UvMap'ını hazırlıcaz. Bu kısım yapacağımız işlemler için en önemli kısım onun için UvMap çıkartmadan önce kesinlikle Obje mod da Ctrl+A ile objemizin scale ve rotasyon işlemlerini blender'a tanıtıyoruz. Bu işlemi yapmadan UvMap çıkartırsak Mark Seam hatlarımız en doğru yerde olsa bile Uv map düzgün çıkmayacaktır.Mark seam hatlarımızın doğru yerde olması da önemli. Önce mark seam hatlarımızı oluşturuyoruz.




      Daha sonra Unwrap komutu ile UvMap çıkartıyoruz.Bu aşamada Uv İmage editörde UvMap ı düzenliyebiliriz.Bu aşamadan sonra kesinlikle UvMap da bir değişiklik yapmıcaz !!!



adım4:
       Obje modda modelimizin Shift+D ile bir kopyasını alıyoruz. Shift Double ile kopyalanan obje , ana objenin UvMap da dahil olmak üzere tüm özellikleriyle beraber kopyalanıyor


   
   
      Aslında şu ana kadar yaptığımız işlemler bizim asıl olayımıza refarans oluşturmak içindi.Ana objemiz olan objeyle (bende plane adında olan) bake işlemi dışında başka işimiz kalmadı istersek silebiliriz ama ilerideki işlemi kolaylaştıracağı ve zaman kazandıracağı için ben daha sonra kullanmak için saklıcam onun için gizliyorum ana objemi ve kopyaladığım plane 001 adındaki kopya ile devam edicem çalışmaya.

adım5:
         Artık yüksek poligon sayısıyla çalışıcaz .Yüksek poligon demişken ister edit modda tüm yüzeylerimize subdivade konutu verip yüzey sayısını çoğaltalım , ister SubSurf Modifier ekliyelim veya ikisinide yapalım farketmez ama UvMap a dokunmayalım :) . Sculpt Mode geçip başlıyoruz yontmaya . SubSurf modifierden etkilenmesini istemediğimiz face- edge varsa edit moda geçiyoruz  Shift+E komutu verip rengi kırmızı olana kadar sürüklüyoruz scale işlemi yapar gibi. renk kırmızı ise o face-edge  subsurf modifierden etkilenmez  rengi pembe gibi bir yerde bırakırsak daha az etkileneceği anlamına gelir.

   
     yontma işleminde çok abartılı şeyler yaparsak iyi bir sonuç alamayız ortaya saçma birşey çıkar.Modelleme aşamasında ana hatlarımızı belirlemiştik zaten , işte o ana hatlara uygun işlemler yapmak en iyi sonucu veriyor.

adım 6 :
       Yeteri kadar detaylandırma yaptığımıza inaıyorsak artık Bake işlemi ile Normal Map oluşturucaz .Hani sakladığımız ana objemiz vardı onu şimdi bake için kullanabilirz. Ana objemi ekrana geri çağırıyorum ve Bake işlemi için gerekli olan ayarlamaları yapıyorum.
       İlk önce ana objemiz için Uvİmage editörden yeni bir image dosyası istiyoruz ve ana objemizin UvMapında hiçbir scale rotasyon vs işlemi yapmıyoruz.
       Bu çalışmayı ben cycles da yaptığım için Node editörde ana objemin materyaline bir image texture istiyoruz ve az önce yeni oluşturduğumuz image dosyasını tanıtıyoruz hiç bir bağlantı kurmuyoruz . Sadece bake işleminin o dosyaya yapılması için aktif durumda olmasına dikkat ediyoruz .
       Obje moda geçiyoruz ilk önce yüksek poligonlu kopya objemizi sonra düşük poligonlu ana objemizi shift tuşuna basılı iken seçiyoruz. objeler üstüste geldiğinden dolayı seçmekte zorlanan olursa sağ menüden objelerin isimleri üzerine tıklayarakda seçebilir  tek dikkat etmemiz gereken düşük poligonlu ana objemiz sonra seçilecek ve rengi sarı(aktif obje) olucak .
       Render menüsündeki Bake sekmesini açıp oradaki ayarlarıda yapıyoruz.
Bake Type : Normal
Margin :2px
clear : pasif (çentik yok)
selectec to aktive : aktif ( çentik var)



adım7:  
      Bake butonuna basınca bize bir normal map vericek  Uv image editörden  save image diyerek kaydetmeyi unutmayın.



adım8:
     Artık yüksek poligonlu objemizi düşük poligona çeviricez kopya objemizin yüzey sayısını Decimate modifier ile düşük yüzey sayılı bir objeye çevirebiliriz.Ben farkı görmeniz için yüksek poligonlu objenin bir kopyasını oluşturdum ve 2 sefer Decimate modifier uyguladım.240.000 poligon sayılı objeyi 6871 poligona düşürdüm bu şekilde .Çalıştığım konsept gereği modelim çok extrem hatlara sahip biraz ince ayar ile 1000-1500 poligona düşücektir . Daha toplu olan modellerde insan modeli gibi veya araba modeli gibi modellerde daha iyi sonuç alınıyor.  Aynı normal mapı ana objenin(5544 face olan) üzerine tanıttığımda istediğim sonucu alamadım ama high polyden Decimate modifier ile low poly yapılan objede hiçbir sorun yok.

Low poly yaptığım objeye Node editörede  normal mapı tanıttım.


Sonuç Olarak ;


         Bu çalışma Cycles Render da hazırlandı ama  Blender Render ilede işlemler aynı. Cycles da extra olarak Node Editörü kullanıyoruz . Node editör bize daha ayrıntılı çalışma imkanı tanıyor ve Cysles render  esnasında daha hassas ışık hesaplamaları vs gibi hesaplamalar  yapıyor.
         Bake işlemi her iki render seçeneğinde de aynı mantıkla çalışıyor
Ben biraz daha uğraşarak yüzey sayısını 700 e kadar indirgedim ve Hand painted yöntemiyle texture dosyalarını hazırladım. Aşağıdaki videoda color map ve normal map kullanılmıştır.

https://www.youtube.com/watch?v=2QXL1uvj_sQ