9 Nisan 2012 Pazartesi

Softimage ICE - Ders Notları - 01



Merhaba,
Çok bilinen/kullanılan bir program olmamasına, autodesk'in de bu durumu değiştirmek için en ufak çabası olmamasına rağmen Softimage oldukça güçlü, modern araçlar içermektedir. Bunlardan en yenisi is 7 sürümüyle birlikte lansmanı yapılan ICE eklentisidir. Yine maalesef çok fazla kaynak yok bu konuda, digital tutors ve i3dTutorial gibi eğitim sitelerinin derleri de yetersiz kalıyor maalesef. Oturup deneye yanıla bir şeyler yapmaya bakıyor iş. Tekbaşına da zor oluyor haliyle. Bu yüzden bu başlık altında kendi çalışma notlarımı paylaşmaya karar verdim. Belki konu ile ilgili birileri de katılımcı olur ya da en azından ICE 'a ilgi duyan birilerine de yardımcı olurum/oluruz.

Başlayalım o halde.

Softimage ICE, node tabanlı bir vfx arayüzüdür. Birçok açıdan Houdini'ye benzediğini söylenebilir ( ..pek emin değilim ama !? ). ICE ile parçacık animasyonları ( su, ateş vb. ), rigged body, soft body, cloth ve son 3 versiyonu ile birlikte Topology ( procedural modelling ) ve bunlara bağlı animasyonlar da yapılabilmektedir. Hatta yine birkaç sürüm öncesinde eklenmiş olan rigging kısmı da, klasik bone sisteminin yerine geçebilecek araçlar sunmaktadır.
Peki bütün bunlar nasıl yapılır ?
ICE Tree ( node bağlantılarının tümü ) temelde 3 kısıma ayrılır.

1 - Getters : Veriyi ICE Tree'ye almak için kullandığımız node'lar
2 - Modifiers : Alınan veriyi değiştirmek için kullanılan nodelar.
3 - Setters : Değiştirilen veriyi objeye göndermek için kullanılan node'lar.

Yani yapılan iş, veriyi alıp, işleyip geri göndermekten başka bir şey değil. Böyle söyleyince kolay görünüyor ama asıl önemli olan şey bu verilerin cinsi ve veriyi bir cinsten başka bir cinse çevirmek. Burada işler biraz karışıyor. Şöyle bir arayüze bakalım.


Explorer'dan "sphere" objesini sürükleyip, ICE Tree'ye bırakınca sol üstteki "Get sphere" nodunu elde ediyoruz.  Şimdi, objeyi ICE Tree'ye aldık, ama hangi özelliğini kullanacağımızı daha belirtmedik. Bunun için soldan ikinci olan "Get Data" noduna bakalım. Her nodun sol tarafındaki slotlar veri girdisi ( Input ) için, sağ tarafındakiler ise veri çıktısı ( Output ) için kullanılır. "get Data" nodunun Input kısmında "Source" ve "In Name" slotu bulunmakta. Ayrıca get nodu kırmızı durumda. Yani bize eksik birşeyler olduğunu söylüyor.

"Get Data" noduna çift tıkladığımızda özelliklerine giriyoruz ve buradan hangi "veriyi almak" istediğimizi seçiyoruz. 2 tane opsiyonumuz var, ya ilgili boşluğa o veriyi yazmak ya da "Explore" a tıklayıp çıkan menüden istediğimiz veriyi seçmek.


Şimdi Get Data nodu değişti ve Get .pointPosition halini aldı. Ayrıca daha önce siyah olan "Value" Portu sarı rengine dönüştü. Tam da bu noktada Bu renklerin ne anlama geldiği konusuna değinmek istiyorum. Tabiki hepsi değil, ama en azından data çeşitleri ve bunların renk kodlarına değinmek gerekiyor.

Scalar Data ( Açık yeşil ) : Tek veri taşıyan veri türü. Örneğin XYZ uzayında sadece X aksisi. Bu veri türü virgüllü sayıları da kapsar. ( 1,316 gibi )
3D Vector Data : Bu veri türünde ise 3 tane veri taşınmaktadır. Örneğin, XYZ uzayında bir objeniz var diyelim. Ve bu obje  X ekseninde : 2.5 , Y ekseninde : 3,6 Z ekseninde de : -4,5 noktalarında olsun. 3D Vector ile objenizin konumu şu şekilde görünecektir: 2.5,3.6,-4.5.
Boolen Data  ( Açık turuncu ) : 1 ya da 0 verisini taşır. Genel de mantıksal durumlarda kullanılır ( TRUE, FALSE ).
Siyah : Input'dan gelen data hangi tür ise outputtan da aynı tür olarak çıkar.

Şimdi örneğimize geri dönelim. Get .pointPosition nodunun Value çıktısı sarı renkte. Yani sphere objesinin herbir vertex(point)i XYZ aksisinde belirlenmiş olarak kullanılır durumda. "Value" değerini "Add" nodunun "Value1) Inputuna bağlıyoruz ve siyah olan portlar anında sarıya dönüyor. Artık Add nodundaki "Value2" değerine girdiğimiz her değer de "vector data" olmak zorunda.
Value 2 portuna birşey bağlı olmadığı için, Add noduna çift tıkladığımızda XYZ koordinatlarını ayarlamamız için sliderlar çıkıyor. Bunlarla oynayarak objemizi oluşturan bütün vertexlerin yerlerini aynı anda değiştirebiliriz. Yanlız burada dikkat edilmesi gereken şey, objeyi oje olarak değil bütün vertexleri aynı anda transfor ettiğimiz için yerninden oynatabiliyoruz. Tabii şu anda bu ICE Tree'miz çalışmıyor, çünkü daha birbirine bağlanacak nodelar var.

Üstteki node dizilişinde Add nodunu Set Data noduna bağlamış olmamıza rağmen, Set Data nodu hala kırmızı. Bunun nedeni hangi veriyi "Set" edeceğini bilememesi.
Bir alttaki node dizilişine baktığımız zaman burada ise "get pointPosition" nodunun out nameinin "Set Data" nodunun "in name" noduna bağlı olduğunu görüyoruz. Ve böylece Seta data nodumuz maviye dönüyor. Ve Set Data nodumuz vertex pozisyonlarını set edeceğini biliyor. Ardından "Set Data" nodunun "Execute" output'unu ICE Tree nodunun "Port1" ine bağlıyoruz.
Böylece ilk ICE Tree'mizi oluşturmuş olduk. Add noduna çift tıklayıp XYZ değerleri ile oynayarak objemizin yerini ICE ile değiştirebiliriz artık.
Biliyorum çok fazla iş yaparak minik bir sonuç elde ettik ancak, böyleceICE'ın çalışma mantığını kavrayabileceğimiz önemli bir adım atmış olduk.
İleride görüşmek dileğiyle.

Emin

Hiç yorum yok:

Yorum Gönder