Pages

Saturday, November 30, 2013

Object Collision Modelling T1 kel 8 - 55411373 - Nurrita Nafidha Putri

BAB I
PENDAHULUAN

1.1  Latar Belakang
Object collision modeling(tabrakan) melibatkan banyak asumsi dan perkiraan, termasuk konsep suatu ‘impuls atau dorongan’ yang tidak terlalu jelas. Salah satu hal yang sulit pada collision modeling adalah memahami bagaimana suatu objek bekerja dengan objek lain yang memiliki gerakan rotasi dan linier. Metode utama yang akan kita gunakan untuk melakukan ini melibatkan beberapa tahap, antara lain :
1.      Menentukan titik tabrakan dan arah normal pada titik ini.
2.      Menghitung impuls atau dorongan minimum untuk mencegah objek berpotongan atau untuk membalik kecepatan, tergantung pada koefisien friksi.
3.      Menghitung efek impuls ini pada gerakan rotasi dan linier secara terpisah.

Untuk memastikan bahwa setiap area dari ruang tidak ditempati oleh lebih dari satu objek, maka kita memerlukan deteksi tubrukan berdasarkan susunan geometri suatu objek.
Hal yang perlu diperhatikan dari deteksi tubrukan adalah jumlah tes yang harus dibuat dan sumberdaya CPU yang digunakan.
Misalnya, jika kita memiliki ‘n’ objek, objek pertama dapat bertubrukan dengan objek ke n-1 (kita tidak memeriksa apakah suatu objek bertubrukan dengan dirinya sendiri), objek kedua dapat bertubrukan dengan objek tambahan ke n-2 tanpa memperhitungkan tubrukan-tubrukan yang telah kita hitung. Jika kita menggunakan konsep tersebut, kita dapat mengetahui banyak tubrukan yang mungkin terjadi dengan rumus:
(n-1) * (n-2) * (n-3) ... 1
Ini ekivalen dengan n! / 2!*(n-2)!
Dalam sebuah animasi, kita perlu memeriksa kemungkinan adanya tubrukan pada setiap frame sehingga diperlukan adanya deteksi tubrukan yang efisien. Oleh karena itu, kita perlu mempertimbangkan hal-hal berikut ini.

1.      Pembagian (Partisi) Ruang
Banyaknya proses yang dilakukan untuk mendeteksi tubrukan akan bergantung pada banyak objek. Banyak tubrukan yang mungkin terjadi akan bergantung pada permutasi antara dua objek yang bergerak. Ini secara kasar akan proporsional terhadap kuadrat dari banyak objek yang bergerak.
Salah satu cara mengurangi banyaknya tes yang harus dilakukan adalah dengan membagi ruang, misalnya kubus regular, voxel grid, octrees, k-d trees, BSP trees. Kemudian kita hanya perlu menguji tubrukan atas objek yang berada dalam ruang tersebut (atau ruang yang berdekatan). Asumsi bahwa objek tidak terlalu besar jika dibandingkan dengan ukuran ruang membuat kita perlu membuat pengaturan khusus untuk objek yang sangat besar seperti tanah.
Ini memungkinkan kita meningkatkan banyak objek yang bergerak dalam simulasi kita dan mempertahankan jumlah waktu pemrosesan yang lebih mirip dengan relasi linier daripada kuadrat dari banyak objek yang bergerak.

2.      Bulatan Pembatas
Sangat mudah mendeteksi tubrukan jika ada bulatan pembatas yang tumpang tindih, misalnya
Objek A memiliki pusat di ax, ay, az dan jari-jari ar
Objek B memiliki pusat di bx, by, bz dan jari-jari br.
Maka bulatan pembatas berpotongan jika:
(ax-bx)2 + (ay-by)2 + (az-bz)2 < (ar+br)2
Kelebihan metode ini adalah metode ini bersifat independen terhadap orientasi (ia dirotasi di sekitar pusat bulatan pembatas) sehingga metode ini tidak memiliki masalah seperti yang disebutkan pada kotak pembatas dimana sumbu harus disesuaikan.
Kekurangan dari bulatan pembatas adalah ia tidak cocok untuk objek yang kurus panjang dimana pada kasus tersebut mungkin terjadi kesalahan deteksi tubrukan. Namun, pada kasus tersebut kita dapat menggunakan pemeriksaan sekunder untuk menguji batasan dengan lebih akurat.


Trik Lain
Dalam mengimplementasikan deteksi tubrukan:
Jika terdapat banyak objek, pencarian tubrukan diantara setiap objek dan setiap objek lainnya merupakan suatu pekerjaan yang berat untuk dilakukan pada setiap frame.
Ada beberapa trik yang dapat digunakan untuk mengurangi proses yang diperlukan dalam deteksi tubrukan, misalnya
·         Hanya mempertimbangkan sepasang bentuk yang saling tumpang tindih.
·         Hanya mempertimbangkan bentuk-bentuk yang saling bergerak satu sama lain.
1.2  Rumusan Masalah
Berdasarkan latar belakang yang telah dipaparkan di atas, maka rumusan masalah dalam penulisan buku ini adalah menjelaskan tentang collision itu sendiri dan bagaimana membuat dan merancang suatu objek 3D menggunakan Blender.

1.3  Batasan Masalah
Batasan masalah dalam skripsi ini adalah:
1.      Penjelasan tentang Object Collision Modelling.
2.      Membuat dan merancang suatu objek 3D menggunakan Blender, model yang dibuat adalah model yang sederhana.
3.      Contoh kasus dalam penerapan object collision modeling.

1.4  Tujuan Penulisan
1.      Mengerti dan memahami tentang Object Collision Modelling.
2.      Membuat dan merancang suatu objek 3D menggunakan Blender, model yang dibuat adalah model yang sederhana.

1.5  Metode Penelitian
Penelitian dilakukan dengan cara menggunakan metode studi pustaka, yaitu dengan membaca buku dan artikel yang berkaitan dengan objek 3D. Hal ini dilakukan untuk pemahaman materi yang jelas mengenai masalah yang akan dibahas.


1.6  Sistematika Penulisan
Sebagai gambaran singkat tentang pokok pembahasan penulisan ini, Penulis akan menguraikannya dalam beberapa bab, dengan sistematika sebagai berikut:

BAB I    PENDAHULUAN
Pada bab ini dibahas latar belakang masalah, rumusan masalah,  batasan masalah, tujuan penulisan, metode penelitian dan sistematika   penulisan.

BAB II   LANDASAN TEORI
Bab ini berisi pembahasan teoritis tentang konsep dasar Object Collision Modelling dan penerapannya dalam aplikasi atau perangkat lunak.

BAB III  PERANCANGAN PERANGKAT LUNAK
Pada bab ini berisi pembahasan tentang langkah dari proses perancangan pemodelan objek 3D yang akan dibuat dengan Blender beserta implementasi perancangan tersebut kedalam komputer.

BAB IV IMPLEMENTASI PERANGKAT LUNAK  
 Pada bab ini akan dibahas tentang kasus/contoh pemanfaatan perangkat lunak menggunakan aplikasi Blender pada objek collision modelling.

BAB V   PENUTUP
Bab ini berisi kesimpulan dari pembahasan yang telah dikemukakan dalam bab-bab sebelumnya dan saran-saran yang sifatnya mengarah kepada penyempurnaan dari apa yang telah disajikan dalam tulisan ini



BAB II

Object Collision modeling in 3D
Object collision modeling (tabrakan) melibatkan banyak asumsi dan perkiraan, termasuk konsep suatu ‘impuls atau dorongan’ yang tidak terlalu jelas. Hal tersebut akan kami diskusikan pada materi 3D object collision modeling.
Hasil untuk kasus 3D ini kami rangkum sebagai berikut:
Keterangan :
ARAH
Ketika kita mengerjakan persamaan ini secara manual, terlihat cukup mudah untuk menentukan arah impuls dan tanda pada istilah-istilah di atas. Tapi karena ini bagian dari program komputer, maka sangatlah penting untuk memahami ketentuan yang kita asumsikan dan untuk mendapatkan tanda yang benar.
Pada diagram berikut ini, anak panah mengindikasikan arah positif, bukan kecepatan absolut yang mungkin saja arah negatif.


Dalam hal ini, vai> vbi sebelum tabrakan dan vaf<= vbf setelah tabrakan. Jadi, impuls mengurangi momentum dari objek a dan menambahkannya ke objek b sehingga kita mendapatkan rumusannya sebagai berikut:
vaf = vai - J/Ma
vbf =vbi + J/Mb

Sekarang kita membalik ukuran objek a dan objek b
Dalam kasus ini, vbi> vai sebelum tabrakan dan vbf <= vaf setelah tabrakan. Jadi, impuls mengurangi momentum dari objek b dan menambahkannya ke objek a sehingga kita mendapat rumusannya sebagai berikut:
vaf = vai + J/Ma
vbf =vbi - J/Mb
Sekarang tampaknya kurang efektif/kacau untuk mendapatkan program untuk menguji yang mana kecepatan tertinggi dan menentukan persamaan mana yang akan digunakan, sehingga akan lebih mudah menggunakan J negatif untuk mengindikasikan kasus kedua. Jika kamu melakukan ini, perhatikan bahwa J negatif tidak berarti ia menarik, bukan mendorong. Itu hanya berarti bahwa objek-objek bertabrakan pada arah yang lain.

Rotasi Arah
Hal tersebut akan menjadi lebih rumit dengan adanya rotasi dalam momentum angular(sudut) yang harus diukur relatif dahulu terhadap titik tertentu. Jika objek ‘a’ berputar searah jarum jam pada pusat massanya, mungkin ia memberikan momentum berlawanan arah jarum jam pada objek ‘b’ pada pusat massanya. Namun, hal ini tidak akan mengubah momentum angular dari keseluruhan sistem, bahkan untuk suatu sistem tertutup, dikarenakan   gerakan linier dari pusat massa yang berbeda.


Kecepatan pada titik tabrakan objek ‘a’ =  VPA = VCA + ωa × (r-pa)
Kecepatan pada titik tabrakan objek ‘b’ =  VPB = VCB + ωb × (r-pb)

Derivasi (Penurunan)
Pada kasus 1D, kita dapat memulai dengan definisi koefisien restitusi yang merupakan rasio kecepatan bertemu dan memencar.
Namun, dalam kasus ini, kecepatan bukanlah kecepatan dari pusat massa, melainkan kecepatan suatu titik (pada koordinat absolut) dari suatu benda padat. Inilah yang merupakan titik-titik pada suatu benda yang sebenarnya bertubrukan.
e = (vaf- vbf) / (vai - vbi)


Dimana
definisi lain
Simbol
Unit
Jenis
Unit
vcaf
kecepatan akhir titik tubrukan pada objek a
vektor
m/s
vcai
kecepatan awal titik tubrukan pada objek a
vektor
m/s
vcbf
kecepatan akhir titik tubrukan pada objek b
vektor
m/s
vcbi
kecepatan awal titik tubrukan pada objek a
vektor
m/s
e
koefisien restitusi yang bergantung pada natur dua materi yang bertubrukan
skalar
Tidak ada

Δvca = vcai - vcaf
Ini merupakan perubahan kecepatan titik tabrakan pada benda ‘a’ yang disebabkan oleh impuls.

Δvcb = vcbi - vcbf
Ini merupakan perubahan kecepatan titik tabrakan pada benda ‘b’ yang disebabkan oleh impuls.

Sehingga didapatkan :
e * (vcai - vcbi)= -(vcaf- vcbf)
(e+1) * (vcai - vcbi)= -(vcaf- vcbf)+(vcai - vcbi)
(e+1) * (vcai - vcbi)= Δvca + Δvcb

Dari relasi Δvca dan Δvcb dengan impuls (J)  maka kita mendapatkan:
ΔVp = J/M + ([I]-1(J × r)) × r
Dimana
definisi lain
simbol
deskripsi
jenis
Unit
Vp
Kecepatan linier suatu partikel pada benda padat (vektor)
vektor
m/s
J
Impulse
Vektor
I
skalar inersia seperti torsi = I * alpha (benar hanya jika objek simetris)
Skalar
[I]
inersia tensor
matriks 3×3
m
Massa
skalar
Kg
• = produk dot
×
× = produk cross
r
posisi partikel relatif terhadap pusat massa – NB: ini berada pada koordinat absolut, bukan koordinat benda lokalsehingga ini menjadi fungsi waktu jika benda berotasi.
Vektor

Sehingga kita mendapatkan:
(e+1) * (vai - vbi)= J/Ma +([Ia]-1(J × ra)) x ra + J/Mb +([Ib]-1(J × rb)) x rb

Kita ingin memecahkan persamaan di atas untuk mendapatkan J. Untuk melakukannya, kita perlu memisahkan J ke bagian kanan. Arah impuls akan bergantung pada natur material yang bertubrukan dan koefisien friksinya. Jika friksi tinggi, impuls akan berada di arah yang mendatangi titik tubrukan. Jika friksi rendah, impuls akan tegak lurus terhadap permukaan tubrukan. Tidak ada impuls yang parallel terhadap permukaan karena mereka dapat tergelincir di arah tersebut. Jadi, memisahkan impuls dalam besaran dan arah dapat membuat friksi diperhitungkan dan memungkinkan besaran impuls dikeluarkan dari sisi kanan sebagai istilah biasa.
J = n*|J|
Dimana
definisi lain
simbol
deskripsi
jenis
Unit

n
vektor normal yang memberikan arah impuls
Vektor

J
vektor impuls
Vektor

|J|
besaran impuls
Skalar


Dengan asumsi bahwa ada solusi yang perlu kita buat
([Ia]-1(J × ra)) × ra = |J| * ([Ia]-1(n × ra)) × ra

Maka Hasilnya adalah:
|J| = (e+1) * (vai - vbi) / (1/Ma +n•([Ia]-1(n × ra)) x ra + 1/Mb +n•([Ib]-1(n × rb)) × rb)
Kode
Metode Alternatif Menggunakan Matriks
Ide yang bagus untuk mengekspresikan semua istilah ialah dengan menggunakan jenis aljabar yang sama. Tidak mungkin mengekspresikan inersia tensor secara murni dalam istilah vektor atau quaternion. Dalam hal ini apakah mungkin kita bisa menghitung murni dalam term matriks?
Relasi antara impuls J dan perubahan kecepatan titik dimana J diterapkan, diperoleh di bawah ini:

Perubahan kecepatan linier suatu titik pada benda padat yang disebabkan
J = J/M + ([I]-1(J × r)) × r
dimana
definisi lain
simbol
deskripsi
jenis
Unit
ixx to izz
elemen dari inersia tensor (pada koordinat absolut)
rx,ry and rz

Maka  kita dapat menyimpulkan efek J terhadap kecepatan relatif benda A dan B:
Perubahan kecepatan relatif linier dari titik tabrakan yang disebabkan J = (e+1) * (vai – vbi)
Oleh karena itu, kita perlu menginvert maktriks ini untuk mendapatkan ekspresi J dalam term kecepatan approach.
Metode Lainnya
·         Solusi dengan impuls
·         tabrakan inelastis sempurna
·         tabrakan elastis sempurna
·         Solusi dengan konservasi momentum dan energi
Solusi dengan Impuls
Impuls yang ditransfer antarobjek = [NEMa]* (vaf - vai)= -[NEMb]*(vbf - vbi) dimana:
·         [NEMa] = Matriks Newton-Euler untuk objek a; ini merupakan matriks 6x6.
·         [NEMb] = Matriks Newton-Euler untuk objek b; ini merupakan matriks 6x6.
·         vaf= kecepatan akhir objek a. Ini merupakan vektor 6 dimensi yang mengandung komponen-komponen linier dan rotasi di semua 3 dimensi.
·         vai= kecepatan awal objek a. Ini merupakan vektor 6 dimensi yang mengandung komponen-komponen linier dan rotasi di semua 3 dimensi.
·         vbf= kecepatan akhir objek b. Ini merupakan vektor 6 dimensi yang mengandung komponen-komponen linier dan rotasi di semua 3 dimensi.
·         vbi= kecepatan awal objek b. Ini merupakan vektor 6 dimensi yang mengandung komponen-komponen linier dan rotasi di semua 3 dimensi.

Catatan : Kami mengasumsikan bahwa pada kasus elastis, hanya bagian linier impuls yang ditransfer antar objek. Oleh karena itu, torsi eksternal selalu nol sehingga persamaan di atas menjadi benar. Pada kasus inelastis,  mungkin ada impuls rotasi yang ditransfer.
Kami berpendapat bahwa impuls rotasi akan muncul adalah saat terjadi tubrukan dua massa yang berotasi pada ulir sekrup yang sama.

Tabrakan inelastis sempurna
Pertama-tama kita mengambil kasus tabrakan inelastis sempurna (dimana objek saling menempel setelah tabrakan) dan kecepatan akhir mereka sama. Jadi, 
vaf= vbf (ini tidak sepenuhnya benar karena ketika objek saling menempel, mereka akan mulai saling mengitari satu sama lain, tetapi mereka akan memiliki kecepatan rata-rata yang sama dimana kecepatan ini merupakan kecepatan pusat massa)
[NEMa]* (vaf - vai)= -[NEMb]*(vbf - vbi)
Bila vaf disubstitusi dengan vbf maka:
[NEMa]* (vaf - vai)= [NEMb]*(-vaf+vbi)

Kita ingin menemukan nilai dari vaf.Saat mengalikan maktriks suatu vektor, perkalian lebih distributif dibandingkan penambahan sehingga
[NEMa]* vaf- [NEMa]*vai=[NEMb]*vbi- [NEMb]*vaf

Kita dapat menyusun ulang vektor ini untuk mendapatkan:
[NEMa]* vaf+ [NEMb]*vaf = [NEMb]*vbi + [NEMa]*vai

Kami tidak tahu banyak tentang matriks aljabar untuk memprosesnya lebih jauh, sehingga kami akan menjabarkannya demikian:
Mungkin ada suatu jalan dimana kita dapat menggantikan dua matriks pada bagian kiri persamaan dengan suatu matriks tunggal yang merepresentasikan inersia atau massa dari objek yang bergabung. Ini juga merupakan masalah pada bagian awal dimana dua objek saling mengitari satu sama lain sehingga memiliki matriks inersia atau massa yang berbeda. Jadi, didapatkan :
[NEMcombined]* vaf = [NEMb]*vbi + [NEMa]*vai
Maka solusinya adalah:
vaf= vbf =[NEMcombined]inverse * ( [NEMb]*vbi + [NEMa]*vai )

Nilai dari impuls adalah:
impulse = [NEMa]* (vaf - vai)
impulse = [NEMa]* ([NEMcombined]inverse* ( [NEMb]*vbi + [NEMa]*vai ) - vai)



Tubrukan elastis sempurna
Pada kasus ini, diasumsikan bahwa persamaan impuls sama dengan kasus inelastis (tetapi nilainya menjadi dua kali lipat sebab objek-objek yang terpisah pada kecepatan yang sama). 
Kami tidak berpikir bahwa ini merupakan kasus yang tepat sebab pada kasus 3D tanpa friksi, impuls seharusnya normal terhadap permukaan tubrukan dan impuls rotasi seharusnya nol. Apakah ada yang dapat memberikan ide bagaimana menghitung nilai impuls ini?
impulse = 2 [NEMa]* ([NEMcombined]inverse * ( [NEMb]*vbi + [NEMa]*vai ) - vai)

Kecepatan akhir = kecepatan awal + impuls
vaf= vai + 2 [NEMa]* ([NEMcombined]inverse * ( [NEMb]*vbi + [NEMa]*vai ) - vai)

Solusi dengan konservasi momentum dan energy
Dengan konservasi momentum linier:
Dengan konservasi momentum angular:
dimana semua rotasi pada persamaan di atas hampir sama seperti pada kasus 2D. Jika kita ingin mengukur rotasi objek itu sendiri pada pusat massanya, kita perlu menerapkan teorema sumbu paralel dimana akan menambah variable lain pada persamaan di atas.




Dengan konservasi energi
Ini menghasilkan 7 persamaan dengan 12 variabel yang tidak diketahui sehingga kita membutuhkan informasi tambahan untuk memecahkannya:
·         kecepatan a : vafx, vafy, dan vafz
·         kecepatan b : vbfx, vbfy, dan vbfz
·         rotasi a terhadap sumbu x : wax
·         rotasi a terhadap sumby y : way
·         rotasi a terhadap sumbu z : waz
·         rotasi b terhadap sumbu x : wbx
·         rotasi b terhadap sumby y : wby
·         rotasi b terhadap sumbu z : wbz
Jadi, ada ketidakcukupan informasi untuk memecahkan persamaan ini sehingga kita perlu menambah informasi tambahan seperti batasan-batasan yang dapat diterapkan atau penerapan ‘sudut insidensi = sudut pencerminan’.
Walaupun kita memiliki informasi yang cukup untuk memecahkan kasus umum, persamaan tersebut masih sangat rumit untuk dapat dipecahkan dalam kasus umum. Khususnya karena kita tidak bekerja dalam frame-of-reference dari bentuk-bentuk individual, maka secara umum variabel I (Inersia) merupakan suatu fungsi sudut-sudut objek. Gerakan rotasi objek membuat persamaan tersebut menjadi semakin rumit sehingga kita perlu menggunakan pendekatan yang berbeda seperti berikut:
Asumsikan bahwa kita bergerak ke frame referensi bentuk 1, maka bentuk 1 akan selalu muncul stasioner pada frame ini. Pergerakan bentuk 2 akan lebih mudah dihitung pada frame ini, misalnya jika kita mengasumsikan bahwa impuls berada pada arah normal saja (tidak ada pergeseran). Oleh karena itu, pergerakan paralelnya terhadap bidang datar akan konstan dan pergerakan normalnya terhadap bidang datar akan terbalik selama tabrakan. Mungkin ada energi yang ditransfer antara pergerakan linier dan angular, bergantung pada  posisi relatif pusat massa bentuk 2 dan titik tabrakan, namun sebagai perkiraan pertama, apakah mungkin kita mengabaikan hal tersebut?
Kita masih harus menghitung bagaimana pergerakan frame-of-reference telah berubah selama tabrakan, tetapi ini relatif mudah menggunakan konservasi momentum.
Jadi, bagaimana memindahkan bentuk 1 ke ­frame-of-reference? Yang harus kita lakukan adalah memindahkan bentuk 2 di bawah bentuk 1 pada scene graph, jangan lupa terjemahkan semua parameter yang terkait dengan bentuk.
Jadi, transform [T8] memberikan posisi bentuk 2 relatif terhadap bentuk 1 dimana dalam kasus ini:
[T8] = [T7][T3][inverse T2][inverse T5]
Jangan lupa kita harus mentransform semua parameter kinematis dan dinamis untuk bentuk 2.

Komponen Rotasi untuk contoh 3D di atas
Jika kita mengasumsikan bahwa kedua objek menjelajahi ruang bebas (tidak ada torsi eksternal), ketika mereka bertabrakan maka mereka akan menjelajahi ruang bebas lagi.
Seperti dijelaskan di atas, rotasi awal diketahui dan kita ingin menentukan rotasi akhir. Pada saat tubrukan, energi dapat ditransfer antara objek-objek yang bertabrakan dan antara energi linier dan rotasi.
Hukum konservasi momentum dan energi di atas tidak cukup untuk menentukan kecepatan akhir. Kita perlu mencari faktor lain yang ditentukan oleh geometri objek.
Salah satu faktor adalah objek-objek hanya dapat berotasi pada sumbu tertentu (tidak ada torsi). Jika objek merupakan suatu bulatan sempurna (atau minimal variable inersianya sama di semua arah), objek dapat berotasi pada semua arah, namun minimal kita adapat menggunakan bentuk simetrisnya untuk menyederhanakan persamaan. Jika objek tidak simetris, mereka hanya dapat berotasi pada sumbu tertentu dimana ini akan membatasi hasil yang diharapkan. Faktor lainnya adalah posisi titik dampak relatif terhadap pusat massa dua objek.

Jika ini terlalu rumit, maka anda dapat mempertimbangkan pendekatan numeris lainnya terkait dengan tabrakan(collision).

0 komentar:

Post a Comment