View Daniel Harjanto's profile on LinkedIn

Flipping Sosro Crown

by Daniel Harjanto a.k.a misterdi

Dalam tutorial ini akan dibahas beberapa hal seperti, bagaimana membuat geometri tutup botol, bagaimana melakukan baking dari animasi hasil simulasi rigid Body, dan bagaimana mengatur hasil dari simulasi.

 

The setup

Sebagaimana biasanya dalam melakukan simulasi ada baiknya menggunakan bentuk-bentuk sederhana sehingga simulasi dapat dilakukan dengan lebih cepat. Jadi dalam kasus ini akan digunakan sebuah silinder polygon sederhana (16 segmen) yang kira-kira ukurannya sesuai dengan tutup botol, lalu freeze transform. Objek ini diberi nama crownProxy.

Kita juga perlu sebuah meja, dimana tutup botol akan jatuh dan memantul. Untuk meja tersebut dapat digunakan sebuah polygon plane.

Letakan crownProxy sedemikian rupa, kalau perlu putar dan geser, tetapi tentunya letaknya harus berada di atas meja, jangan diletakan dibawah meja.

Pilih crownProxy, dan berikanlah sebuah gravity field padanya, default setting dari gravity field cukup memadai dalam hal ini. Pada saat dilakukan koneksi dari sebuah objek kepada sebuah dynamic field, Maya akan secara otomatis akan menambah rigidBody pada objek tersebut sesuai dengan opsi yang ada pada Create Active Rigid Body.

Pilih meja, dan jadikan dia sebuah passive rigidBody, menggunakan default setting.

Sebagai kondisi awal dari rigidBody (crownProxy), masukan beberapa nilai pada Initial Velocity-Y dan Initial Velocity-Z, juga pada Initial Spin-X.

Nilai-nilai ini adalah nilai dari proses coba-coba saja. Initial Velocity-Y = 15, berarti pada saat Maya mulai melakukan perhitungan dinamis, rigidBody akan memiliki kecepatan yang dihitung sebagai unit/detik (bukan unit/frame). Jadi dengan nilai positif 15 dalam arah Y, jika tak ada pengaruh lain pada rigidBody itu (tidak ada dynamic field, damping, dan collision), rigidBody akan bergerak keatas sebanyak 15 unit dalam 1 detik.

Hal yang sama juga berlaku untuk Initial Spin, kecuali bukan menggunakan unit, melainkan menggunakan derajat/detik (ini adalah konfigurasi default saya).

Lakukan simulasi, tekan tombol play, akan terlihat crownProxy bergerak diudara dan jatuh keatas meja, hingga akhirnya mencapai titik keseimbangan akhir. (kalau crownProxy belum mencapai keseimbangan pada saat mencapai End Time, naikanlah nilai End Time hingga ia bisa mencapai titik keseimbangan).

Tapi mengatur hasil akhir sebuah simulasi bukanlah hal yang mudah, sama halnya dengan menebak hasil "togel". crownProxy ternyata mencapai titik akhirnya disisi dari meja, bukan ditengah seperti yang diinginkan oleh client.

Solusi saya adalah , kalau gerak berputar dan jatuh dari crownProxy sudah baik, hanya posisi akhir yang tidak tepat, bake lah simulasi tersebut menjadi key-frames.

hanya pilih translate X,Y, Z dan rotate X, Y, Z dari channel box

Untuk melihat hasil dari baking simulasi tersebut dalam key-frames, bukalah graphEditor:

Dalam kasus ini kita hanya perlu memperbaiki attribute Translate X dan Translate Z, pilih kedua kurva tersebut, dan zoom sekitar key-frame terakhir dari animasi, tarik masing-masing kurva (tekan shift key pada saat menarik untuk melakukan constraint move pada value saja), hingga nilai key-frame terakhir mendekati 0 (Origin).

Yang terjadi dalam kasus ini, karena kita menarik seluruh kurva Translate-X dan Translate-Z, posisi awal juga bergeser. Tetapi itu bukan masalah dalam kasus saya, karena yang lebih penting bagi klien adalah posisi akhir, bukan posisi awalnya..

Lihatlah pada persp window, pastikan crownProxy sekarang jatuh dekat titik Origin pada akhir animasinya.

Mainkan animasi beberapa kali, pastikan tidak ada masalah yang muncul, akan kita lanjutkan dengan membangun tutup botol yang asli.

 

Building the crown model.

Buat 4 kurva untuk membangun sisi dari tutup botol, gunakan saja Create->NURBS primitive->Circle dengan 64 span. Pilih beberapa CVs pada curve1 dan curve2 lalu scale sedikit lebih kecil, sehingga didapatkan bentuk sebagai berikut.

Buat 4 buah kurva lagi untuk bagian atas dari tutup botol, pastikan semuanya berada pada satu bidang karena diinginkan permukaan yang rata.

Mungkin pada gambar diatas curve8 tidak terlihat. Hal ini disebabkan curve8 diskalakan menjadi 0 pada semua sumbu karena ia akan menjadi titik kutub dari permukaan atas tutup botol..

Pilih curve1, curve2, curve3 dan curve4, dan lakukan Modeling->Surface->Loft dengan opsi sebagai berikut:

Pilih curve5, curve6, curve7 dan curve8, ulangi proses loft. Jika sulit untuk memilih curve8 dalam viewport, bukalah Outliner dan pilih curve8 dari sana..

Urutan pemilihan kurva akan menentukan hasil akhir dari proses lofting, jadi pastikan memilih kurva dengan urutan yang benar.


Sekarang yang harus dilakukan adalah menyambung kedua permukaan tersebut menggunakan Modeling->Edit NURBS->Attach Surfaces dengan opsi sebagai berikut:

Blend digunakan karena diinginkan kedua permukaan disambung dengan menyisipkan blend diantara kedua permukaan tersebut, hasilnya dapat dilihat pada gambar berikut.

Karena saya tidak perlu menggunakan NURBS surface dan mengatur peletakan UV untuk texturing lebih mudah dilakukan dengan polygon, NURBS surface tersebut di konversikan menjadi polygon lalu hapuslah construction history

 

Texturing.

Karena sekarang objek sudah berupa polygonal objek, gunakan Edit Polygons>Planar Mapping untuk meletakan UV texture coordinate pada objek.

Mapping direction menggunakan sumbu-Y sehingga peta diletakan pada bidang XZ, dan opsi di set ke fit to Bounding Box.

Dalam UV texture editor (Windows->UV Texture Editor) aturlah UV hingga terlihat seperti dibawah ini

Demikian pula pada saat nanti kita meletakan sebuah image sebagai texture, pastikan posisi UV berada dengan baik dalam bidang image yang digunakan sebagaimana tampak seperti dibawah ini,

Karena tutorial ini tidak dimaksudkan untuk membahas texturing dan hypershade (akan dibahas pada tutorial lainnya kalau sempat 8:) ). Tetapi pada dasarnya material yang digunakan adalah Blinn dengan sebuah file texture..

 

Fitting the real model to the proxy and adjustment.

Untuk menempatkan tutup botol yang asli ke dalam proxy, gunakan saja hubungan parent child.

Pilih tutup yang asli, lalu tekan shift dan pilih proxynya. Lakukan Edit->Parent dengan opsi sebagai berikut

Tekan "f" key untuk frame selection, sehingga bisa dilihat tutup yang asli berada didalam proxy. Mungkin lebih baik proses ini dilakuakn pada frame terakhir dari animasi crownProxy, karena dalam kasus saya tutup botol yang asli kelihatan bawahnya pada saat dilakukan hal tersebut. Untuk memperbaikinya, pilih tutup botol yang asli (bukan proxynya), dan putar pada sumbu X 180 derajat, juga pindahkan (lebih baik dalam object space) sehingga ia berada tepat didalam proxy. Mungkin juga perlu diputar dalam sumbu Y sehingga label menghadap ke kamera.

Ini adalah contoh movie file untuk tutorial ini, flippingCrown.mov

Dan berikut adalah sample scenes (tanpa texture), flippingCrown.mb atau dalam zip file flippingCrown.zip

 

Beyond This Tutorial

Kalau dijumpai animasi terasa terlalu lamban dan perlu dipercepat, gunakan Trax Editor untuk memperbaikinya.

Pilihlah crownProxy dan create clip, taruhlah clip dalam Trax Editor, scale clip tersebut sehingga semuanya menjadi lebih cepat, atau pecah clip tersebut menjadi beberapa bagian, dan skalakan pada salah satu bagian menjadi lebih lambat dari lainnya sehingga didapat efek seperti speed ramp.

 

<<back>>