top of page
Writer's pictureMustafa Şen

Glass Fracture Problem...

Kurşun, top, tahta, Supermen... Bazen saydığımız cisimlerin camı çerçeveyi indirip şov yapmasını isteriz. Bunu nasıl yaparız ? Basit ince bi küp üzerinden gidelim. Herhangi bir yazılımda Fracture eklentisi özelliği, pluginiyle küpümüzü güzelce parçalanmış hale getirdik. Üstüne güzel bir cam materyali hazırlayıp fırlattık. Hayal kırıklığımız ilk öngörünüm renderımızda ortaya çıkacaktır :




Daha simülasyona başlamadık dokunmadık bile neye kırıldın kim üzdü seni ? Görüldüğü gibi cam, initial state'te (başlangıç durumu) birleşim noktalarındaki 90 derecelik yüzeyler sayesinde farklı yansıma ve kırılma değerleri gösteriyor. Halbuki başlangıçta görmek istediğimiz görüntü şuydu :






Sorunun temel kaynağı pre-fracturing işlemi. Yani daha simulasyon olmadan camı parçalamış olmamız. Doğada iş böyle yürümez. Camın parçalanması için Supermen'in cama temas etmesi gerekir. Bununla da kalmaz, hız ve basınca göre kırılma temas noktasından civara doğru hızlı veya yavaş yayılır.


Durumun iki çözümü vardır. Birincisi feyk atmak. Yani cismin temas ettiği tek karede düzgün pre-fracture edilmemiş cam ile fracture edilmiş camın yer değiştirmesi. Visibility ile de ayarlanabilir. Bunu yaptığınızda cisim temas ettiği an bütün cam parçası yine kırılmış görünecek :




Mmmeh. Hızlı sahnelerde işe yarayabilir fakat gerçekçi değil ve güzel slow motion bir sahnede iş görmez.


İkinci yöntem de bir çeşit fake atmadır fakat gerçeğe daha yakın bir yöntemdir. Şöyle ki :

Sorunun önceden parçalanmış camın içindeki 90 derecelik yüzeylerden kaynaklandığını biliyoruz. Maksadımız bu yüzeylerin görünürlüğünü belirli değerleri karşılamasına göre kapatıp açmak. Bunun için bize en temel 2 veri, iki materyal gerekmektedir ve birçok fracture eklentisi bize bu verileri sağlar. Materyalleri de kendimiz oluşturabiliriz.


1 - Dış yüzey poligonları (Outside Selection)

2 - İç yüzey poligonları (Inside Selection)


Cinema 4D Fracture üzerinden ilerleyelim. Yazılım sizi aldatmasın. Yöntem bütün yazılımlar için geçerlidir.


C4D Fracture / Selections tab'inde Inside Faces & Outside Faces i aktif ettiğimiz zaman iki tane seçim tag'i eklemiş oluruz. Object Manager'de Fracture'un hemen sağında iki tane üçgen olarak görülür. Üzerinde geldiğinizde hangisi hangisidir yazar.


Sıradaki adım basit bir cam materyali oluşturmak, bunu duplicate edip ikiye çıkarmak ve birini Outside diğerini Inside diye adlandırmak. Sonra iki camı da Fracture a atıyoruz. İkisi de Object Manager de Fracture'un sağında (üçgenlerin de sağında) minik materyaller olarak görünecek. Birini seçtiğiniz zaman size Material,Selection, Projection, UV Mapping gibi çeşitli özellikler gösterecek. Burada ilgi alanımız Selection kısmı. Outside materyalin Selection kısmına Outside Selection Tag'ini sürükleyip bırakıyoruz (Turuncumsu üçgenler). Inside materyal Selection a da Inside Selection Tag'ini atıyoruz.


Buraya kadar yapığımız işlem dış yüzeylerle iç yüzeylere iki farklı materyal atmak oldu. Çok da zor değil elle poligonları seçerek bile yapılabilecek birşey.


Aslında bu yazıyı on saniyede bitirebilirim fakat zaman kazanmak için sizi hatta tutmaya çalışıyorum !...


Şimdi bu noktada çözüme yaklaşımımız önemli. Öncelikle bütün meselemiz iç yüzeylerle, dolayısıyla Inside Materyal ile. Elimizdeki tek veri ve en önemli veri bu yüzeylerin birbirine temas ediyor olması ve simülasyon ilerledikçe bu temasın ortadan kalkıp birbirlerinden uzaklaşmaları. Bunu camın aleyhine nasıl kullanabiliriz ? Ya da nasıl bir map bize yakınlık ve uzaklığa göre değer verir ? Lamba ? Yanmadı ? Sağlık olsun, bize tam lazım olan şey ki her yazılımda bulunur Ambient Occlusion (AO) mapidir. Dirt diye de geçer. Bu map yüzeylerin, birbirlerine yakınlık ve uzaklığına göre siyahtan beyaza renk verir. Contact Shadow için de çokça kullanılan bir sistemdir. Şimdi yapmamız gereken tek şey Inside Materyal'in Opacity kanalına AO map'i atarak birkaç parametresiyle oynamak.


Bu işlemi yaptığınızda pek bir değişiklik görmemeniz fazlasıyla olası. Bunun da sebebi AO'nun geniş siyah beyaz aralığında tonlama yapması. Bunu düzeltmek için gereken şey AO ile Opacity arasında AO renklerini kontrol eden bir Ramp, Gradient kullanmak. Strandart C4D AO mapi size Ramp değerini gösterir. Gradient'in soldaki siyah kulakçığını iyice sağa, beyazın dibine çekin. Maximum Ray Length değerini de kırıklar kaybolana kadar düşürün. Gerekirse AO kalitesini artırmak için Samples değerlerini artırın.


Başka render motorlarında işlem çok ufak değişir. Örneğin Octane Dirt map'i size Ramp değerini göstermez. Bunun için araya bir Gradient Map'i atıp yine kulakçığı tutup çekin. Dirt map'e geri dönüp Radius / Spread değerini aradaki kırıklar kaybolana dek artırın.


Sonuç :




Bütün yazılımlarda üç aşağı beş yukarı değerlerle aynı yöntem uygulanabilir. Köye gidince anlatın.


Selametle kalın.

3 views0 comments

Recent Posts

See All

Comments


bottom of page