1 Ağustos 2011 Pazartesi

3DS MAX İLE PORTAKAL SOYMAK

Kullanılan yazılımlar: 3DS MAX, Cloth, MAX Script ve PHOTOSHOP


Hiç böyle bir şey denemediniz değil mi? Yakın bir arkadaşım nasıl yapacağını sorana dek benimde aklıma düşmemişti. Önce mümkün gelmedi. Ama denedikçe açıldım ve oldukça basit bir sonuca ulaştım.


Portakal kabuğu konseptine sahip yalıtım firmasına televizyon reklamı yaparken, ürün ve resimlerini portakalı soyarak içinden çıkartmak istediklerinde ne tepki verirdiniz? Soğuk terler dökeceğinizi düşünmek zor değil. Her seviyeden 3d kullanıcısını oldukça zorlayacak bir hareketten bahsediyoruz. Arkadaşım reklamı kompozisyon yazılımlarda farklı metotlar ile halletse de, sorusu bende derin (!) Sancılara sebep oldu. Geçte olsa 3d olarak bir çözüm ürettim. Bundan sonraki çalışmalarda “geç” olmaması dileğiyle sizlerle de paylaşmak istiyorum.

Gerekli malzemelerimiz, sadece 3DS MAX yazılımı. Soyulma hareketini canlandırmak için de Cloth eklentisini kullanacağız. Farklı bir yazılım kullanıyor iseniz, hiç dert değil. Genel araçlar kullanacağım için kullandığınız yazılıma uyarlamak zor olmayacaktır. Modeli tasarlarken Rhino ile baya haşır neşir oldum ama istediğim sonucu alamadım. Hatta iş iyice içinden çıkılmaz hale geldi. Her ne kadar helezonik eğrileri çizip yüzey ile etkileştirmek NURBS tabanlı yazılımlarda daha hassas yapılabilse de bu kadar matematiksel olmaya gerek yok dedim. Sonra durup bunun daha basit bir metodu olduğunu ve sadece aklıma gelmediğini düşündüm. İşte o an şimşekler çaktı. (yine lavaboda!). Neyse fazla dramatize etmeden teknik anlatıma geçelim.

Teknik Tasarım

Bu işin iki önemli adımı var, 1- Portakalın soyulması 2- Portakalın modellenmesi. Önce modeli sonra canlandırmayı yapacağız ama işin tamamını düşünüp modelimizi ona göre üretmeliyiz. Çünkü teknik kısmı ağır basan bir canlandırma yapacağız. Kumaş etkisi kullanacağız. Soyulma hareketinde kumaş etkisini kullanma fikrini Richard Rosenman’ın otomobil reklamından ilham aldım.

Seneler önce yaptığı canlandırmada, çizgi film tarzı ile gerçek araba arasındaki geçişi (kağıt gibi parçalanarak soyuluyor idi) kumaş etkisi ile yaptığını anlatan eğitseller yayınlamıştı. Soyulma hareketinin doğası gereği kumaş ile simüle etmeye çalışmak gerçekten en iyi alternatif.

Küreden Portakala

Yazının başından beri, “teknik”, “tasarım” gibi kelimeleri bolca zikrediyorum. Altı üstü top gibi bi’şey yahu amma kastın ha! diyebilirsiniz. Ama demeyin. Kumaş simülasyonu kullanacağım için modelin yüzey örgüsünün ve dağılımının düzgün olması gerekiyor. Render aşamasında da dilim sayısını (Subdivision) arttırmamız gerektiğinde, dörtgenlerden oluşması gerekiyor.

Sphere oluşturarak başlıyoruz. Geosphere üçgenlerden oluştuğu için maalesef tercihimiz dışında kalıyor. Çapı 110 birim ve dilim sayısı 200 olsun. Genelde girilecek parametreleri noktası virgülüne vermem ama bu uygulamada sonucun hatasız olması için gerekiyor. Özellikle girilen ölçüler kumaş simülasyonu esnasında sonucu etkileyecek türden. Modifier listesinden Edit Poly’i seçerek nesneye atayın. Edge moduna girerek (üst görünümde) saatin 12-3-6-9 konumuna denk gelen kenarlardan birini seçin. Loop komutu ile meridyenin yarısını seçmiş olacaksınız. Alt nesne modundan çıkın. Modifier listesinden Twist’i seçerek nesneye atayın. Angle değerine 1440 girin. Varsayılan olarak nesneyi Z ekseninde bükecektir, değiştirmeyin. Yeni bir Edit Poly atayın. Edge alt nesne moduna geçin. Az önce yarım meridyen olan seçiminiz helezon görünümü kazanmış olmalı. Create Shape komutu ile Spline’a çevirin. Create Shape komutunun sağındaki kutucuğa tıklayınca açılan pencereden Smooth’u seçerseniz, yumuşak görünümlü eğri elde edersiniz. Atadığınız Modifier’ları silin ve kürenin dilim sayısını 32’ye, çap değerini 100’e düşürün.

Elimizde bir helezon ve ondan biraz küçük küremiz olmalı.

Helezonu seçin. Sağ paneldeki Interpolation bölümünden Optimize seçeneğini kaldırın. Steps değerini 1’e düşürün. Böylece nokta yoğunluğunu azaltarak, eşit dilimlenmelerini sağladık. Modifier panelinden Extrude’u seçerek nesneye atayın. Amount değerini arttırın. Miktarı pek önemli değil. Listeden seçerek Edit Poly’i nesneye atayın. Edge moduna geçin. Üstteki kenarlardan birini seçtikten sonra Loop komutu ile tüm sırayı seçili hale getirin. Collapse komutu ile tüm seçili alt nesneleri tek noktada kaynaştırın. Vertex moduna geçin ve az önce kaynaştırdığınız bölgedeki noktayı seçin. Nesnenin tam ortasına taşıyın. Leonardo’nun taslak defterindeki pervaneyi andıran bir yapı elde etmiş olmalısınız.

Kesiyoruz

Küreyi seçin. Sağ panelden Create / Geometry / Compound Objects altındaki Boolean’ı seçin. Operasyon tipini Cut / Split olarak değiştirin. Pick Operand B komutu ile helezon nesnesini seçin. İşlem sonucunda helezonik nesne kürenin yüzeyinde kesik izi oluşturacaktır. Aslında Cut / Split komutu nesnemizi otomatik olarak kesmeli idi ama helezonik nesne kapalı yapıya sahip olmadığı için bunu yapamadı. Kesik üzerinden el (!) ile geçerek kesmemiz gerekiyor. Edit Poly uygulayın ve Edge moduna geçin. Kesik izin üzerindeki bazı kenarlar seçili hale gelecektir. Loop komutu ile tüm kesim izini seçin. Ardından Split komutuyla nesneyi gerçekten kesin.

Kesim işleminin sonucunu kontrol etmek için, Polygon moduna geçtikten sonra kesiğe komşu yüzeyleri seçip hareket ettirmeye çalışın. Kesik yerinden ayrıldığını göreceksiniz, eğer kesik yerinden ayrılmıyor ise bu aşamaya kadar uyguladığınız adımları kontrol edin (Undo yapmayı unutmayın). Aklınıza, neden ProBoolean ya da ProCutter gibi gelişmiş araçları kullanmadığım sorusu gelebilir. Maalesef yaptığım denemelerde onlar ile başarılı sonuç alamadım. Klasik Boolean en sağlıklı metodu sunmakta.

Boolean işlemi sonucunda kesişim bölgelerinde gereksiz noktalar kalabilir.

Nesnenin noktalarını alt nesne modunda olmasanız bile görmek için üstteki menüden Tools / Display Floater’ı seçin. Display Properties bölümünden Vertex Ticks seçeneğini işaretlerseniz, noktalar her zaman görünür hale gelecektir. Gereksiz noktaları teker teker temizlemek işkence olacağı için hazır Script kullanacağız.

Scriptler ve Kullanımları Hakkında Temel Bilgiler

Tarayıcınızı www.scriptspot.com adresine yönlendirin.

Ana sayfanın hemen üstündeki devasa arama alanına “clean boolean” yazıp, aratın. Arama sonucunda bir kaç Script çıkacaktır. İstediğiniz herhangi bir taneyi kullanabilirsiniz. Denediklerimin benzer sonuç verdiğini belirtmek isterim. Scriptler ve kullanımları hakkında vereceğim genel bilgilerden sonra, CleanBool isimli olanı tercih edip anlatıma onunla devam edeceğim.

Scriptler genellikle MS (Klasik Script) ya da MCR (Makro Script) uzantısı alırlar. Eğer Scriptspot sitesinden RAR / ZIP paketi indirmişseniz, açıp içindeki Script dosyasını çıkarmanız gerekiyor. Scriptleri çalıştırmanın en kısa metodu, sürükle bırak metodu ile Exporer’dan 3DS MAX penceresi üzerine taşıyıp bırakmaktır. MS uzantılı Scriptler işlevine göre hemen çalışır ya da pencere açarlar. MCR uzantılı olanlar ise sürükle bırak ile çalışmaz, yüklenirler. Aktif hale gelmeleri için arayüze eklenip çalıştırılmaları gerekmektedir.

Yüklediğimiz Scripti arayüze ekleyelim. Üst barda sağ tık menüsünden Customize’yi (ya da Customize menüsünden Customize User Interface’i) seçin. Açılan pencere yardımı ile kısa yolları, araç paletlerini, (çalışma ekranında çıkan sağ tıklama ile açılan) dörtlü menüyü (Quad Menu), yazılı menüleri ve renkleri değiştirebilirsiniz. Bizim işimiz Toolbars ile. Category kısmından ZYCA Tools’u seçin. Bu seçenek her Script için farklı olacaktır. Yüklediğiniz Script’in dokümanlarından hangi isimle yüklendiğini bulabilirsiniz. Action bölümünde “Clean Boolean Junk Vertex” komutunu göreceksiniz. Dilerseniz var olan araç paletlerinden birine, dilerseniz sağdaki New... butonu ile oluşturacağınız boş araç paletine Action bölümündeki komutu sürükleyip bırakın. Komut ismi ile bir buton oluşarak araç paletinde belirecektir. Aynı adımları izleyerek dörtlü menü ya da üstteki açılır menülere de ekleyebilirsiniz. Tercih sizin.

Modellemeyi Bitiriyoruz

Boolean işleminden çıkan nesne seçili durumda iken, oluşturduğunuz araç paletindeki CleanBool komutunu uygulayarak, gereksiz noktaları temizleyin.

Bu Script nesnenize Edit Poly atayıp otomatik olarak gereksiz noktaları silecektir. Buraya kadar olan adımları eksiksiz uygulayıp sağ salim geldi iseniz. Nesnenin bir kopyasını çıkarıp gizledikten sonra Convert to Editable Poly komutu ile parametrik halini bozup ham hale getirin.

Simülasyona Hazırlık

Kumaş simülasyonu ile çalışırken portakalı soymamıza yardım edecek nesnelere ihtiyacımız var. Alt kısmını sabit tutmak için bir küre ve üst tarafın soyulması için Point Helper. Önceki küre ile aynı koordinatlarda, çapı 100 birimden az olan küre oluşturun. Çap değerini kumaş simülasyonunda kullanacağımız çarpışma mesafesi (Collision Offset / Tolerance) belirleyecek. Cloth eklentisinde çarpışma mesafesi genellikle 1 birimdir. Bu doğrultuda yardımcı kürenin çapını 98 birim girin. Dilim sayısını 16’ya düşürebilirsiniz. Böylece simülasyonun hesaplama süresinden kazanabilirsiniz.

Alt kısmı sabitlemiş olduk. Portakal kabuğunun yukarı doğru soyulma hareketini sağlayacak yardımcı nesneyi oluşturalım. Kürenin en üst noktasına hizalı Point Helper oluşturun (Create / Helpers). Box seçeneğini işaretleyerek daha rahat görünür hale getirip boyutunu da arttırabilirsiniz. Zaman sürgüsünü portakalın soyulması için belirlediğiniz son kareye getirin (mesela 200) ve Auto Key’i kızarttıktan sonra Point Helper’ı Z ekseninde yükseltin. Kendi sahne oranlarıma göre 1000-1500 birim yeterli olacak gibi görünüyor. Zaman sürgüsünü ileri geri alarak hareketi kontrol edebilirsiniz.

Böylece bir tane soyulmayı bekleyen, bir tane sabit duran küre ve bir tanede yukarı doğru yükselen noktanız oldu.

Simülasyona geçmeden yardımcı kürenin özelliklerinden Renderable seçeneğini kapayarak Render esnasında görünmemesini sağlamayı unutmayın.

Simülasyon (Kumaş)

Simülasyona başlamadan nesnelere anlaşılır isimler vererek işlemler sırasında yanılma payınızı en aza indirmiş olursunuz. Sahnenizdeki iki küreyi seçin ve Modifier listesinden Cloth’u seçerek atayın. Object Properties butonuna tıklayarak simülasyon tanımlarının yapıldığı pencereyi açın. Soldaki listeden, sabit küreyi seçerek Collision Object olarak belirleyin. Portakalı seçin, tipini Cloth olarak ayarlayın. Cloth Properties bölümünde ince ayar için onlarca parametre var. Bunlarla teker teker uğraşmak istiyorsanız 3DS MAX’in Help menüsü size yardım edecektir. Konunun dağılmaması için, sadece kullanacaklarımıza değinip geçeceğim. Portakal kabuğu davranışına uygun hazır kumaş tipi olarak Burlap’i öngörüyorum. Preset bölümünden seçebilirsiniz. Diğer hazır kumaş tiplerini Türkçeye uyarlar isek,

Burlap : Çuval Bezi, Cashmere : Kaşmir, Cotton :  Pamuklu, Flannel : Pazen, Fanila, Generic Heavy : Kalın Kumaş, Heavy Leather : Kalın Deri, Polyester : Polyester, Rubber : Lastik, Satin : Saten, Silk : İpek, Spandex : Tayt, Starched Cotton : Kolalanmış Pamuklu Kumaş, Taffeta : Tafta, Terrycloth : Havlu, Wet Cloth : Islak Kumaş, Wool : Yün

Canlandırmak istediğiniz kumaş tipine uygun olanını seçmeniz gerekiyor. OK butonu ile onaylayarak çıkın. Gravity seçeneği varsayılan olarak açıktır. Kapalı konuma getirerek portakalın aşağı doğru hareket etmesini engelleyin. Group alt nesne moduna girin. En tepedeki Vertex’i seçin. Make Group ile grup olarak tanımlayın. Group Parameters çekmecesinin alt kısmından Use Soft Selection’ı işaretleyin. Falloff değerine 100 girin. Edge Distance değerine 5 girin. Böylece hareket kesim izini takip edecektir. Node komutuna tıkladıktan sonra Point Helper’ı seçin. Böylece seçtiğiniz Vertex ve etki alanındaki komşularını Point Helper’a bağladınız. Constraint bölümünden Soft’u işaretleyin ve Damping değerine 5 girin.

Böylece etkilenen Vertexler gecikmeli olarak harekete geçecektir. Alt nesne modunu kapayabilirsiniz

Buraya kadar yaptıklarınızda bir eksik yok ise,  Simulate butonuna bastığınızda portakalın kabuğu yukarı doğru hareket etmeye başlayacaktır. Eğer ölçümlendirmede de problem yok ise simülasyon son kareye kadar aksamadan devam edecektir. Eğer simülasyonda aksama olursa Check Intersection, Self Collision gibi nesnenin kendi ile etkileşim parametrelerini kapamak etkili olacaktır. Ayrıca Sürtünme (Friction) değerlerini de minimuma indirmek olası hataların önüne geçer.

3DS MAX’in düşük sürümüne sahipseniz ve Cloth varsayılan olarak yüklü değil ise alternatif kumaş eklentisi önerebilirim: SimCloth. Basit arayüzü, az parametreye sahip olması, düşük sürümleri desteklemesi ve bedava olması en büyük artıları. www.maxplugins.de adresinden indirebilirsiniz.

Portakalı Detaylandırmak

Kabuğumuz kağıt gibi ince. Kalınlık vermek için Shell Modifier’ını kullanın. Outer Amount değerine 4 birim girin. Kabuk kalınlaşmış olmalı. Yüzeydeki kesikleri kabuk yukarı çekilene dek gizlemek istiyorsak Vertex Weld yardımınıza yetişiyor. Vertex Weld’i Shell’in altına atamayı unutmayın. Yani önce noktaları kaynaştırıp sonra kalınlık vermeliyiz. Threshold değerini 0.5 olarak ayarlayın. Düşük olması kesiklerin çabuk belirginleşmesini, yüksek değer ise geç belirginleşmesini sağlar. Aşırı yükseltirseniz kabuk garip davranışlar sergileyebilir. 1’in üzerine çıkmamanızı tavsiye ederim.

Portakalın formunu yumuşatmak için TurboSmooth atayın. Unutmamanız gereken çalışma performansının azalmaması için Iterations değerini 0-1 tutup Render Iterations değerini arttırmanız. Render içinde 2 ya da 3 birim kullanmanızı öneririm. TurboSmooth ile birlikte kabuğun kenarları da yumuşayacaktır. Eski görünümü geri kazanmak için Shell Modifier’ına dönüp Segments değerini 2 birim olarak değiştirin.

Malzeme ve Doku

Malzeme işlemine geçmeden unutmamamız gereken bir işlem var. Nesnenin UVW Mapping’ini ayarlamak. Portakalı yapmak için kullandığımız Sphere primatif nesnesinin varsayılan kaplama ayarlarını bozmadı yahut aktif konuma getirmeyi unutmadı isek sorun yok. Eğer sorun var ise, Cloth Modifier’ın altına inip UVW Mapping atayın. Spherical olmasına dikkat edin. Başka bir ayara gerek yok. Önemli olan UVW Mapping’in Cloth’un altında olması aksi durumda kaplamanız nesnenin yüzeyinde kayacaktır.

Nesneye gerçek portakal fotoğrafından elde edeceğimiz dokuyu kaplayacağımız için önümüzde iki seçenek var. Ya fotoğraf makineniz ile siz çekeceksiniz, ya da resim arama motorlarında bulmaya çalışacaksınız. Eğer fotoğraf çekecek iseniz dikkat etmeniz gerekenler, kadrajı tam doldurması, aydınlatmanın keskin olmaması, yoğun bir parlama almaması.

Photoshop’ta fotoğrafı açıp portakalın sınırlarını biraz içeriden alarak kesin. Ardından Filter / Distort / Polar Coordinates filtresini uygulayın. Polar to Rectangular seçeneğini işaretleyip işlemi onaylayın. Portakal dokunuz hazır.

İçini beyaz, dışını turuncu yapmak için multi/Sub-Object malzeme kullanmak gerekiyor. İki tane alt malzeme yeterli, birincisi turuncu doku, ikincisi beyaz doku için. Malzemenin doğru atanması için Material ID’leri ayarlamak gerekiyor. Yani hangi malzeme hangi yüzeye kaplanacak bilgisi. Shell Modifier’a dönün. Override Inner / Outer / Edge Mat ID seçeneklerini aktif hale getirip dış yüzeylere 1, kenar ve iç yüzeylere de 2 değerini girin. Dilerseniz dış yüzeyde kullandığımız turuncu dokuyu PS ile işleyerek, beyazlaştırıp iç kısımda kullanabilirsiniz.

Bitti

Işık, kamera ve sahne ile ilgili diğer ayarları anlatarak yazıyı uzatmaya gerek görmüyorum. Çünkü bunları ihtiyacınıza göre zaten şekillendireceksiniz. Unutulmaması gereken kumaş simülasyonunu tamamlayıp portakalın tamamen soymaya çalışmak yerine senaryonuza göre ihtiyacınız kadarını göstermektir. Bu eğitselde 1- portakalın doğru kesilmesi 2-kumaş simülasyonu ile canlandırılma imkanı ve 3- dokusunun hatasız uygulamasına dikkat çekmeye çalıştım. Umarım doğru, eksiksiz ve sıkmadan anlatabilmişimdir.

Kumaş simülasyonu kullandığımız için portakalı sadece yukarı değil farklı yönlere de soyabilirsiniz. İşin içine yer çekimi katarak kabuğun zemin üzerinde yığılmasını sağlayabilirsiniz. Bu tarz çeşitlemeleri size bırakıyorum. Uygulayıp sonucunu benimle paylaşabilirsiniz. Senin işine ne kardeşim, uygulayıp yazsana... bizde öğrenelim demeyin, çünkü kumaş simülasyonu kullanmadan portakal soymaya çalışmaktayım.

Bir yazımızın daha sonuna geldik. Her türlü görüş ve önerinizi beklediğimi hatırlatırım (osmansafi@gmail.com). Gelecek sayıda görüşmek üzere

Hiç yorum yok:

Yorum Gönder