Pages

Tuesday, April 15, 2014

Polygon Modeling




Kata Pengantar

Segala puji kami panjatkan kepada Tuhan yang Maha Esa yang telah senantiasa memberikan kemudahan dalam menyelesaikan segala urusan hingga kami mampu menyelesaikan buku POLYGON MODELLING tugas yang diberikan kepada kami Oleh Bapak I Made Wiryana.
Terima kasih kepada seluruh anggota kelompok atas partisipasi dalam memberi dukungan moril dalam setiap tahapan proses pembuatan buku ini.
Buku yang berada di tangan anda ini merupakan buku panduan materi bagi siswa/mahasiswa dan merupakan panduan dalam mempelajari dalam bidang desain khususnya mengenalkan konsep-konsep awal desain. Dalam buku pertama materi yang dirangkumkan mulai grammatikal dasar hingga pembentukan kalimat-kalimat kompleks secara garis besar.
Akhirnya kami mengucapkan selamat membaca dan berpandang mesra dengan dunia desain yang telah kami sajikan. Dan tentu tidak lupa kami harapkan kritik dan saran agar kami senantiasa rajin berbenah untuk memperbaiki yang belum sempurna.

Depok, 23 Maret 2014
Penyusun
Maulana Ruswa, dkk




Bab I
PENDAHULUAN

1.1   Latar Belakang

Ilmu pengetahuan dan teknologi sekarang ini sangat berkembang, sehingga manusia dituntut agar dapat mengikuti perkembangannya. Terlihat dengan banyaknya bermunculan perangkat lunak untuk membuat suatu objek 2D atau 3D. Perangkat lunak yang sedang berkembang pada saat ini adalah aplikasi Blender. Blender menawarkan sesuatu yang menarik yaitu dengan menambahkan fitur-fitur pencahayaan. Versi blender rilis stabil saat ini yaitu 2.64a, versi sebelumnya adalah 2.63a yang di rilis pada mei 2012. Pada saat ini banyak sekali film animasi yang semakin memperlihatkan resolusi yang tinggi yang menciptakan karya yang begitu realistic.

Film-film animasi yang menggunakan perangkat lunak Blender ini yaitu Big Buck Bunny, Sintel, Tears Of Steel dan masih banyak lagi. Grafik komputer 3 dimensi biasa disebut 3D atau adalah bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu x(datar), sumbu y(tegak), dan sumbu z(miring).Representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Tiga Dimensi, biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer. Film tersebut menunjukan bahwa film animasi sekarang semakin berkembang, sehingga muncul banyak sekali perangkat lunak 3D lainnya.

1.2   Tujuan Penulisan

Adapun tujuan dari pembuatan e-book polygonal Modelling ini adalah :
1. Melengkapi salah satu syarat tugas yang diberikan dalam mata kuliah Desain Pemodelan Grafis.
2. Melatih kemampuan penalaran dan kerjasama tim dalam memecahkan sebuah kasus.
3. Melatih kemampuan meriset suatu permasalahan dalam study kasus.

1.3   Batasan Masalah

Dalam penyusunan e-book Polygonal Modelling ini kami membatasi ruang lingkup yang akan kami bahas. Kami hanya akan membahas bagaimana proses pembuatan lightmodeling yaitu membuat bagaimana penggunaan model pencahayaan dalam pengimplementasian dalam software yang digunakan. Hasil yang nantinya dicapai akan membuat sedikit animasi/gambaran bagaimana Polygonal Modelling itu sehingga terlihat nyata.

1.4   Sistematika Penulisan

Dalam penulisan e-book Polygonal Modeling ini dibagi menjadi 5 bab yaitu:
BAB I : Pendahuluan.
Bab ini berisi pendahuluan yang menerangkan tentang latar belakang, tujuan penulisan, metode penulisan, batasan masalah,
BAB II: Konsep Polygonal Modelling.
Bab ini berisi tentang Penjelasan tentang konsep tersebut. Dapat berupa penjelasan matematika, algoritma, contoh ataupun juga sejarah dikembangkannya konsep ini termasuk orang yang mengembangkannya.
BAB III: Software dan perangkat bantu yang menerapkan konsep Polygonal.
Didalam bab ini, kami menjelaskan software apa yang dipakai dalam Polygonal Modelling, sejarah software tersebut, versi software tersebut, fitur, serta perbandingan dengan software lainnya.
BAB IV: Kasus/contoh pemanfaatan perangkat lunak untuk konsep Polygonal Modelling.
Didalam bab ini, membahas tentang Kasus/contoh pemanfaatan perangkat lunak tersebut untuk konsep Polygonal Modelling .
BAB V: Penutup.
Bab ini berisi saran dan kesimpulan dari pembuatan Polygonal Modelling serta daftar pustaka yang menjadi referensi kami dalam menyusun e-book Polygonal Modelling ini.



Bab II

Landasan Teori

Dasar Metode Modeling 3D Ada beberapa metode yang digunakan untuk pemodelan 3D. Ada jenis metode pemodelan obyek yang disesuaikan dengan kebutuhannya seperti dengan nurbs dan polygon ataupun subdivision. Modeling polygon merupakan bentuk segitiga dan segiempat yang menentukan area dari permukaan sebuah karakter. Setiap polygon menentukan sebuah bidang datar dengan meletakkan sebuah jajaran polygon sehingga kita bisa menciptakan bentuk-bentuk permukaan. Untuk mendapatkan permukaan yang halus, dibutuhkan banyak bidang polygon. Bila hanya menggunakan sedikit polygon, maka object yang didapat akan terbagi sejumlah pecahan polygon. Sedangkan Modeling dengan NURBS (Non-Uniform Rational Bezier Spline) merupakan metode paling populer untuk membangun sebuah model organik. Kurva pada Nurbs dapat dibentuk dengan hanya tiga titik saja. Dibandingkan dengan kurva polygon yang membutuhkan banyak titik (verteks) metode ini lebih memudahkan untuk dikontrol. Satu titik CV (Control verteks) dapat mengendalikan satu area untuk proses tekstur.

Ada Beberapa Metode Yang Digunakan Untuk Pemodelan 3D Metode pemodelan obyek disesuaikan dengan kebutuhannya seperti dengan nurbs dan polygon ataupun subdivision. Modeling polygon merupakan bentuk segitiga dan segiempat yang menentukan area dari permukaan sebuah karakter. Setiap polygon menentukan sebuah bidang datar dengan meletakkan sebuah jajaran polygon sehingga kita bisa menciptakan bentuk-bentuk permukaan. Untuk mendapatkan permukaan yang halus, dibutuhkan banyak bidang polygon. Bila hanya digunakan sedikit polygon, maka object yang didapatkan akan terbagi menjadi pecahan-pecahan polygon. Sedangkan Modeling dengan Nurbs (Non-Uniform Rational Bezier Spline) adalah metode paling populer untuk membangun sebuah model organik. Hal ini dikarenakan kurva pada Nurbs dapat dibentuk dengan hanya tiga titik saja. Dibandingkan dengan kurva polygon yang membutuhkan banyak titik (verteks) metode ini lebih memudahkan untuk dikontrol. Satu titik CV (Control verteks) dapat mengendalikan satu area untuk proses tekstur.

Pembangunan jerat poligonal

Dalam geometri Euclidean , setiap tiga poin non - collinear menentukan pesawat. Untuk alasan ini , segitiga selalu menghuni satu pesawat . Hal ini tidak selalu benar poligon lebih kompleks , namun. Sifat datar segitiga memudahkan untuk menentukan permukaan mereka normal, vektor tegak lurus tiga dimensi ke permukaan segitiga . Normals permukaan berguna untuk menentukan transportasi cahaya dalam ray tracing , dan merupakan komponen kunci dari model shading Phong populer . Beberapa sistem render menggunakan normals simpul bukan normals wajah untuk menciptakan sistem pencahayaan yang lebih baik - melihat biaya lebih pengolahan. Perhatikan bahwa setiap segitiga memiliki dua normals wajah , yang berada di garis yang sama tetapi berlawanan satu sama lain . Dalam banyak sistem hanya salah satu dari normals ini dianggap sah - sisi lain dari poligon disebut sebagai backface , dan dapat dibuat terlihat atau tidak terlihat tergantung pada keinginan programmer .

Banyak program pemodelan tidak benar-benar menegakkan teori geometris , misalnya , adalah mungkin untuk dua simpul untuk memiliki dua sisi yang berbeda menghubungkan mereka , menempati persis lokasi spasial yang sama . Hal ini juga mungkin untuk dua simpul untuk ada pada koordinat ruang yang sama , atau dua wajah untuk ada di lokasi yang sama . Situasi seperti ini biasanya tidak diinginkan dan banyak paket mendukung fungsi auto - pembersihan . Jika auto - pembersihan tidak hadir, namun, mereka harus dihapus secara manual .

Sekelompok poligon yang dihubungkan oleh shared simpul disebut sebagai mesh . Dalam rangka untuk mesh untuk tampil menarik ketika diberikan , diharapkan bahwa itu non-self - memotong , yang berarti bahwa tidak ada tepi melewati poligon . Cara lain untuk melihat hal ini adalah bahwa mesh tidak bisa menembus sendiri . Hal ini juga diharapkan bahwa mesh tidak mengandung kesalahan seperti simpul dua kali lipat , tepi, atau wajah . Untuk beberapa tujuan penting bahwa mesh menjadi berjenis - yaitu , bahwa itu tidak mengandung lubang atau singularitas ( lokasi di mana dua bagian yang berbeda dari mesh dihubungkan dengan simpul tunggal) .

operasi

Ada jumlah yang sangat besar operasi yang dapat dilakukan pada jerat poligonal . Beberapa kira-kira sesuai dengan manipulasi dunia nyata objek 3D , sementara yang lainnya tidak .

Operasi poligonal mesh :
Creations - Membuat geometri baru dari beberapa objek matematika lainnya
Loft - menghasilkan mesh dengan menyapu bentuk sepanjang jalan
Extrude - sama seperti loteng , kecuali jalan selalu garis
Revolve - menghasilkan mesh oleh revolving ( berputar ) bentuk sekitar sebuah sumbu
Marching kubus - algoritma untuk membangun mesh dari fungsi implisit

Binary Creations - Membuat mesh baru dari operasi biner dua jerat lainnya
Add - Selain boolean dua jerat
Kurangi - boolean pengurangan dua jerat
Perpotongan - boolean persimpangan
Union - boolean penyatuan dua jerat
Lampirkan - melampirkan satu jala yang lain ( menghapus permukaan interior )
Talang - membuat permukaan miring yang mulus menghubungkan dua permukaan

Deformasi - Pindahkan hanya verticies dari mesh
Cacad - verticies bergerak sistematis ( sesuai dengan fungsi atau aturan tertentu )
Tertimbang Deform - verticies bergerak berdasarkan bobot lokal per vertex
Morph - bergerak verticies lancar antara sumber dan target jala
Bend - verticies pindah ke " menekuk " objek
Putar - verticies pindah ke " memutar " objek

Manipulasi - Memodifikasi geometri mesh , tetapi belum tentu topologi
Menggantikan - memperkenalkan geometri tambahan berdasarkan "peta perpindahan " dari permukaan
Sederhanakan - verticies sistematis hapus dan rata-rata
Membagi - halus mesh kursus dengan pengelompokan mesh ( Catmull - Clark , dll )
Convex Hull - menghasilkan jala lain yang minimal membungkus mesh diberikan (berpikir shrink -wrap )
Potong - membuat lubang di permukaan jala
Stitch - menutup lubang di permukaan jala

Pengukuran - Hitung beberapa nilai mesh
Volume - menghitung volume 3D mesh ( diskrit volumetrik integral)
Luas Permukaan - menghitung luas permukaan mesh (permukaan diskrit integral)
Collision Detection - menentukan apakah dua jerat kompleks dalam gerak telah bertabrakan
Fitting - membangun permukaan parametrik ( NURBS , bicubic spline ) dengan pas ke mesh yang diberikan
Point- Permukaan Jarak - menghitung jarak dari titik untuk mesh
Line- Permukaan Jarak - menghitung jarak dari baris ke mesh
Line- Permukaan Intersection - menghitung perpotongan garis dan mesh
Lintas Bagian - menghitung kurva diciptakan oleh penampang pesawat melalui mesh
Centroid - menghitung massa , geometris pusat , mesh
Center- of -Mass - menghitung pusat massa , titik keseimbangan , mesh
Circumcenter - menghitung pusat lingkaran atau bola melampirkan unsur mesh
Incenter - menghitung pusat lingkaran atau bola tertutup oleh unsur mesh

Blender

Sejarah Blender 3D berwal dari ciptaannya Ton Roosendaal, Tahun 1988 ia merupakan pendiri the Dutch animation studio NeoGeo. Studio ini berpusat terhadap pembuatan animasi 3D yang bermarkas di Belanda. Pada awal perkembangannya studio ini mengalami pertumbuhan yang sangat cepat dan menjadi perusahaan animasi 3D terbesar di Belanda. Di tahun 1995 Ton Roosendal menulis ulang projectnya sehimgga diberi judul Blender, nama yang digunakan sampai saat ini.

Dalam perkembangannya, Blender sempat mengalami kebangkrutan di tahun 2002 dikarenakan investor menutup kontribusinnya dalam pengembangan software ini. Disaat itu juga para komunitas pengguna di bulan mei 2002 tidak menyetujui jika software berbasis 3D tersebut menghilang begitu saja. Dalam mencegah kebangkrutan itu Ton membentuk "Blender Foundation" Yayasan Nirlaba dengan tujuan mempromosikan Blender sebagai proyek Open Source.

Pada Oktober 2002, Blender untuk pertama kalinya dirilis dengan ketentuan GNU (General Public License), sejak saat itu juga bermunculan investor dalam pengembangan Blender 3D sehingga menjadi sofware pembentuk animasi 3D yang handal hingga saat sekarang ini. Adapun mega proyek yang pernah dibuat dengan Blender 3D yaitu : Pembuatan Movie "Elephant Dream", Pembuatan Peach "Big Buck Bunny", Pembuatan Game "YoFrankie!" 2008, Film Pendek "Sintel" 2010.

Ekstensi

Setelah mesh poligonal telah dibangun , langkah lebih lanjut harus dilakukan sebelum itu berguna untuk game , animasi , dll Model harus dipetakan tekstur untuk menambah warna dan tekstur ke permukaan dan itu harus diberi kerangka untuk animasi . Jerat juga dapat diberikan bobot dan pusat gravitasi untuk digunakan dalam simulasi fisik .

Untuk menampilkan model di layar komputer di luar lingkungan pemodelan , perlu untuk menyimpan model yang di salah satu format file yang tercantum di bawah ini , dan kemudian menggunakan atau menulis sebuah program yang mampu memuat dari format tersebut. Dua metode utama menampilkan model poligon 3d OpenGL dan Direct3D . Kedua metode ini dapat digunakan dengan atau tanpa dipercepat kartu grafis 3d .

Kemampuan Pada Blender

Blender dapat digunakan untuk membuat animasi 3dimensi . Perangkat lunak ini juga memiliki fitur untuk membuat permainan. Blender tersedia untuk berbagai sistem operasi, seperti: Microsoft Windows, Linux, Mac OS X pun bisa. Fitur Blender tidak kalah dengan aplikasi-aplikasi desain berbayar seperti 3d Studio Max, dan lainnya. Kemampuannya menciptakan modeling, compositing sampai animating tergolong sangat baik. Kelemahan software ini adalah interface dan logika tools yang berbeda dengan commercial 3D software umumnya. Blender memiliki beberapa fitur yang menjanjikan sebagai aplikasi gratis :

1. Sudah termasuk user friendly, mudah digunakan.

2. Tool meliputi modeling, UV mapping, texturing, rigging, skinning, animasi, particle dan simulasi lainnya, scripting, rendering, compositing, post production dan game creation.

3. Cross Platform, dapat digunakan hampir disemua sistem operasi.

4. Kualitas grafis dan rendering sangat bagus, mudah dikerjakan, dan efisien.

5. Karena gratis, banyak dukungan di forum-forum sesama desainer yang menggunakan blender.

Panel Pada Blender

Blender terdapat 3 panel utama :

1. Menu

Ada beberapa fungsi dari jendela blender yaitu :

a. Header : merupakan menu utama blender (terdiri dari file, add, render, help)

b. 3D view : tampilan objek secara 3 dimensi

c. outlines : outliner adalah struktur suatu objek atau data

d. Properties : Panel modifikasi/parameter suatu objek

e. Timeline : Untuk playback animasi/video

Fungsi menu 3D view:

1. Toolbar : Toolbar bersifat dinamis sesuai kontek dari objek atau perintah.

2. Perspektif/ortho : Keterangan tampilan perspektif/ortho

3. Properties : Panel properties untuk fungsi tertentu dari 3D view/objek

4. Camera : Objek kamera untuk sudut pandang

5. Cube : Objek mesh (kubus)

6. 3D Manipulator : Manipulator 3D untuk geser, putar, dan skala objek

7. Lamp : Objek lampu untuk memberi penerangan

8. Operator : Untuk menampilkan opsi yang sedang aktif

9. Editor Type : Tipe editor window untuk memilih fungi

10. 3D Widget : 3D manipulator widget

11. Mode : Mode objek untuk memperlakukan objek dalam fungsi khusus

12. Viewport Shading : Untuk display objek

13. Pivot Point : Digunakan untuk memilih pivot point

14. Orientation : Untuk orintasi transformasi objek

15. Proportional Editing : Mengolah objek secara proporsional dalam mode edit

16. Snap Element : Fungsi snapping dalam transformasi

17. Layar : Menempatkan objek dalam lapisan tertentu

18. Render Preview : Rendel openGL gambar/animasi

Shortcut-shortcut pada blender, Manipulasi Tampilan Numpad :

1. Tampilan dari depan Numpad

2. Merotasi tampilan ke bawah Numpad

3. Tampilan dari samping Numpad

4. Merotasi tampilan ke samping kiri Numpad

5. Tampilan perspektif/orthogonal Numpad

6. Merotasi tampilan ke samping kanan Numpad

7. Tampilan dari atas Numpad

8. Merotasi tampilan ke atas Shift+MMB : Menggeser tampilan (pan) Ctrl+MMB : Zoom in/zoom out MMB : Rotasi tampilan C : Menempatkan tampilan ke tengah D : Menu tampilan bounding box, shaded atau wire mode Z : Solid/wire view

Manipulasi Objek Space : Membuka menu toolbox Shift+S : Snap to Tab : Masuk ke edit mode/objek mode RMB : Seleksi objek G : Meng “grap” objek A : Seleksi/melepas seluruh objek/elemen R : Merotasi Objek S : Scale objek/elemen Shift+D : Copy objek/elemen X/Del : Menghapus pilihan M : Memindahkan objek pada layer pilihan Ctrl+LMB: Membuat vertex baru(editing mode) F : Membuat face baru(editing mode) E : Extrude(editing mode) Shift+O : Sharp/smooth falloff W : Operasi-operasi special B : Seleksi kotak, tahan/tekan 2 kali untuk seleksi lingkaran U : Undo Ctrl+P : Sharp corner (untuk curve/NURBS editing) Ctrl+P : memparent sebuah objek pada objek objek lainnya(objek mode) Alt+P : Menghilangkan parent dari sebuah objek Ctrl+N : Recalculate normal, memperkirakan arah face yang benar

Animasi I : Menampilkan menu insert key Alt+A : Menampilkan preview animasi Ctrl+P : Sharp corner(untuk keyframe editing pada IPO window)

2. View Port

Fungsi menu 3D view: Toolbar :

1. Toolbar bersifat dinamis sesuai kontek dari objek atau perintah.

2. Perspektif/ortho : Keterangan tampilan perspektif/ortho Properties : Panel properties untuk fungsi tertentu dari 3D view/objek Camera : Objek kamera untuk sudut pandang Cube : Objek mesh (kubus) 3D Manipulator : Manipulator 3D untuk geser, putar, dan skala objek Lamp : Objek lampu untuk memberi penerangan Operator : Untuk menampilkan opsi yang sedang aktif Editor Type : Tipe editor window untuk memilih fungi 3D Widget : 3D manipulator widget Mode : Mode objek untuk memperlakukan objek dalam fungsi khusus Viewport Shading : Untuk display objek Pivot Point : Digunakan untuk memilih pivot point Orientation : Untuk orintasi transformasi objek Proportional Editing : Mengolah objek secara proporsional dalam mode edit Snap Element : Fungsi snapping dalam transformasi Layar : Menempatkan objek dalam lapisan tertentu Render Preview : Rendel openGL gambar/animasi

3. Tool Button

Berikut beberapa tools button yang biasa digunakan pada Blender :

1. Translate manipulator Mode berfungsi untuk mengambil objek.

2. Disimbolkan segitiga merah, bila menggunakan keyboard bisa secara langsung menekan Ctrl+Alt+G.

3. Rotate manipulator mode berfungsi untuk memutar objek.

4. Disimbolkan berupa lingkaran hijau, bila menggunakan keyboard bisa secara langsung menekan Ctrl+Alt+R.

5. Scale manipulator mode berfungsi untuk memperbesar dan memperkecil objek.

6. Disimbolkan berupa persegi biru, bila menggunakan keyboard bisa secara langsung menekan Ctrl+Alt+S.

7. Transform Orientation berfungsi untuk mengabungkan beberapa objek.

8. Rotating/ Scaling pivot berfungsi memutar dan memperbesar atau memperkecil pada areapivot, pivot merupakan titik pusat suatu objek.

9. Disimbolkan berupa titik hitam dengan tanda panah. Pivot adalah titik pusat dari suatu objek, secara default pada blender kita menggunakan Median Point

10. Modeling berfungsi untuk membuat model 3D awal.

11. UV Maping berfungsi untuk memindahkan objek berdasarkan vertex.

12. Texturing Adalah pembuatan textur pada objek bisa dengan meload gambar dari kita sendiri, ataupun dari bawaan blender.

13. Rigging berfungsi untuk pembuatan tulang atau bones pada objek.

14. Skinning berfungsi untuk pembuatan kulit pada objek atau model.

15. Animasi berfungsi untuk pembuatan animasi atau objek bergerak secara timeline/ waktu.

16. Particle berfungsi untuk pembuatan particle pada objek atau model.

Hotkey

Hotkey merupakan tombol shortcut pada keyboard yang biasa digunakan pada Blender. Yang perlu diketahui, pada keyboard terdapat dua kelompok angka yaitu angka yang terdapat pada Main Keyboard dan angka pada Numpad. Berikut penjelasannya :

1. Angka 0 sampai 1 pada main keyboard menunjukkan urutan layer pada Blender.

2. Objek yang ada pada layer aktiflah yang akan di render. Sedangkan angka pada numpad memiliki fungsi yang berbeda.

3. Angka-angka pada numpad akan membawa perubahan pada view scene. Keterangan fungsi angka pada numpad, sebagai berikut: 1= Front 2= Memutar view ke depan 3= Right 4= Memutar view ke kiri 5= View persp/ortho. Untuk menampilkan view secara perspektif atau ortografi 6= Memutar view ke kanan 7= Top 8= Memutar view ke belakang 0= Camera

- Penambahan Objek Kedalam Scene

Dalam pembahasan kali ini, diberikan penjelasan tentang bagaimana membuat sebuah obyek sederhana pada Blender. Berikut adalah langkah-langkah untuk membuat sebuah obyek. Letakkan kursor pada area kerja blender, kemudian tekan spasi untuk menampilkan menu. Kemudian pilih “Add” lalu “Mesh” dan pilih “UV Sphere”.

- Manipulasi Objek

Sebelum memasuki modifier, perlu diketahui bahwa didalam blender terdapat 2 mode yang sering digunakan dalam pengolahan sebuah obyek, yaitu : “edit mode” dan “object mode”. Untuk bisa berpindah-pindah diantara kedua mode tersebut, cukup menggunakan TAB. “edit mode” berfungsi untuk melakukan pengolahan terhadap tiap-tiap vertices yang terdapat pada sebuah obyek, sedangkan “object mode” berfungsi untuk melakukan pengolahan terhadap obyek secara keseluruhan.

- Sebelum melakukan perubahan bentuk pada sebuah obyek, ada baiknya untuk mempelajari bagaimana melakukan perpindahan, perputaran, dan perskalaan pada sebuah obyek. Tiga modifier utama pada “object mode” adalah :

- “G” key , berfungsi untuk memindahkan sebuah obyek. “S” key , berfungsi untuk mengatur ukuran sebuah obyek. “R” key , berfungsi untuk merotasi sebuah obyek. Selain itu, bisa juga menggunakan “transform widget menu” untuk melakukan perpindahan, rotasi dan pengaturan ukuran pada sebuah obyek.

- Edit Mode

Setelah membuat sebuah obyek melalui “object mode”, dengan menekan TAB, maka akan berubah menjadi “edit mode”. Disinilah sebuah obyek dapat diubah bentuknya sesuai yang diinginkan.

Pada “edit mode”, vertex lah yang berperan penting dalam pengolahan sebuah bentuk obyek. Untuk memilih vertex yang diinginkan cukup dengan meng-Klik kanan vertex yang diinginkan. Sedangkan jika ingin memilih beberapa vertex sekaligus dapat dilakukan dengan cara menekan tombol Shift diikuti dengan meng-Klik kanan beberapa vertex. Bisa juga dengan menekan tombol “B” lalu drag sesuai dengan keinginan sambil menahan klik kiri mouse.

- Blender juga memiliki beberapa jenis pemilihan pada “edit mode” : yaitu pemilihan berdasarkan vertex, pemilihan berdasarkan edge dan pemilihan berdasarkan face.

- Pemecahan Area Window

Tampilan standar blender terbagi dalam 3 area , user preference window di bagian atas, 3d window dibagian tengah dan button window di bagian bawah. Satu hal yang sangat menarik dari blender adalah interfacenya yang bisa diubah-ubah sesuai dengan keinginan kita. Anda bisa mengubah ukuran dari tiap area ini dengan menggunakan klik kiri kursor dan menggeser batas antar window sesuai keinginan kita. Anda juga bisa memecah area ini menjadi beberapa bagian dengan menempatkan kursor pada batas window, tekan klik kanan kursor kemudian pilih “split area”. Dengan cara yang sama, pilih “join area” untuk menggabungkan dua window yang terpisah.

Tools Pada Blender

Sekarang kita bahas beberapa tools buton tools untuk membuat animasi pada Blender :

1. Translate manipulator Mode : berfungsi untuk mengambil objek

2. Rotate manipulator mode : berfungsi untuk memutar objek.

3. Scale manipulator mode : berfungsi untuk memperbesar dan memperkecil objek.

4. Transform Orientation : berfungsi untuk mengabungkan beberapa objek.

5. Rotating/ Scaling pivot : berfungsi memutar dan memperbesar atau memperkecil pada area pivot, pivot merupakan titik pusat suatu objek.

6. Modeling : berfungsi untuk membuat model 3D awal.

7. UV Maping : berfungsi untuk memindahkan objek berdasarkan vertex.

8. Terxturing: pembuatan texture pada objek.

9. Rigging : pembuatan tulang atau bones pada objek.

10. Skinning : pembuatan kulit pada objek.

11. Animasi : pembuatan animasi atau objek bergerak secara timeline/ waktu.

Kelebihan Blender

Blender adalah salah satu software open source yang digunakan untuk membuat konten multimedia khusunya 3Dimensi, ada beberapa kelebihan yang dimiliki Blender dibandingkan software sejenis. Berikut beberapa kelebihannya:
Open Source Blender merupakan salah satu software open source, dimana kita bisa bebas memodifikasi source codenya untuk keperluan pribadi maupun komersial, asal tidak melanggar GNU General Public License yang digunakan Blender.
Multi Platform Karena sifatnya yang open source, Blender tersedia untuk berbagai macam operasi sistem seperti Linux, Mac dan Windows. Sehingga file yang dibuat menggunakan Blender versi Linux tak akan berubah ketika dibuka di Blender versi Mac maupun Windows. Update Dengan status yang Open Source, Blender bisa dikembangkan oleh siapapun. Sehingga update software ini jauh lebih cepat dibandingkan software sejenis lainnya. Bahkan dalam hitungan jam, terkadang software ini sudah ada update annya. Update an tersebut tak tersedia di situs resmi blender.org melainkan di graphicall.org Free Blender merupakan sebuah software yang Gratis Blender gratis bukan karena tidak laku, melainkan karena luar biasanya fitur yang mungkin tak dapat dibeli dengan uang, selain itu dengan digratiskannya software ini, siapapun bisa berpartisipasi dalam mengembangkannya untuk menjadi lebih baik. Gratisnya Blender mendunia bukan seperti 3DMAX/ Lainnya yang di Indonesia Gratis membajak . Tak perlu membayar untuk mendapatkan cap LEGAL. Karena Blender GRATIS dan LEGAL Lengkap Blender memiliki fitur yang lebih lengkap dari software 3D lainnya. Coba cari software 3D selain Blender yang di dalamnya tersedia fitur Video editing, Game Engine, Node Compositing, Sculpting. Bukan plugin, tapi sudah include atau di bundling seperti Blender. Ringan Blender relatif ringan jika dibandingkan software sejenis. Hal ini terbuti dengan sistem minimal untuk menjalankan Blender. Hanya dengan RAM 512 dan prosesor Pentium 4 / sepantaran dan VGA on board, Blender sudah dapat berjalan dengan baik namun tidak bisa digunakan secara maksimal. Misal untuk membuat highpolly akan sedikit lebih lambat. Komunitas Terbuka Tidak perlu membayar untuk bergabung dengan komunitas Blender yang sudah tersebar di dunia. Dari yang newbie sampai yang sudah advance terbuka untuk menerima masukan dari siapapun, selain itu mereka juga saling berbagi tutorial dan file secara terbuka. Salah satu contoh nyatanya adalah OPEN MOVIE garapan Blender Institute.



BAB III
Bentuk Sederhana dari Grafik Komputer

1. Grafik Komputer Dua Dimensi
Grafik komputer 2 dimensi biasa disebut dengan 2D atau bidang adalah bentuk dari benda yang memiliki panjang dan lebar. Grafik 2 Dimensi merupakan teknik penggambaran yang berpatokan pada titik koordinat sumbu x (datar) dan sumbu y (tegak). Agar dapat tampil dengan sempurna, gambar yang akan ditampilkan dengan teknik ini harus memiliki nilai koordinat x dan y minimum 0 dan maksimum sebesar resolusi yang digunakan.

2. Grafik Komputer Tiga Dimensi
Grafik komputer 3 dimensi biasa disebut 3D atau adalah bentuk dari benda yang memiliki panjang, lebar, dan tinggi. Grafik 3 Dimensi merupakan teknik penggambaran yg berpatokan pada titik koordinat sumbu x(datar), sumbu y(tegak), dan sumbu z(miring).Representasi dari data geometrik 3 dimensi sebagai hasil dari pemrosesan dan pemberian efek cahaya terhadap grafika komputer 2D. Tiga Dimensi, biasanya digunakan dalam penanganan grafis. 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer.

3. 2D dan 3D dalam Komputer Grafik
3.1. Komputer Grafik 2D
Grafik komputer 2D adalah sebuah generasi gambar digital berbasis komputer, yang kebanyakan mengambil objek-objek dua dimensi (2D). Model Grafik 2D merupakan kombinasi dari model geometri (juga disebut sebagai grafik vektor), gambar digital (raster graphics), fungsi matematika, dan sebagainya. Komponen-komponen ini dapat dimodifikasi dan dimanipulasi oleh transformasi geometri dua dimensi, seperti translasi, rotasi, dan dilatasi.
Cara yang paling mudah untuk membuat sebuah gambar 2D kompleks yaitu dimulai dengan sebuah "canvas" kosong yang diisi dengan warna latar tertentu, yang kemudian kita "draw", "paint", atau "paste" suatu warna kedalamnya, dengan urutan-urutan tertentu. Intinya, kanvas tersebut merupakan "frame buffer" atau bayangan dari layar komputer.
Model-model yang digunakan pada disain grafis 2D biasanya tidak mendukung bentuk-bentuk tiga-dimensi, atau fenomena yang bersifat tiga dimensi, seperti pencahayaan, bayangan, pantulan, refraksi, dan sebagainya. Namun demikian, mereka dapat membuat model berlapis-lapis (layer); nyata, translusen, dan transparan, yang dapat ditumpuk dalam urutan tertentu. Urutan tersebut biasanya didefinisikan dengan angka (kedalaman lapisan, atau jarak dari si penglihat).
Banyak antarmuka grafis atau yang kita kenal dengan GUI (Grapical User Interface) yang berbasiskan model grafis 2D. Software-software yang mendukung GUI dapat menciptakan "keadaan visual" dalam berinteraksi dengan komputer, sehingga para pengguna tidak selalu harus melihat tulisan. Grafik 2D juga penting bagi kendali peralatan-peralatan semacam printer, plotter, shredder, dan sebagainya. Mereka juga digunakan pada beberapa video dan games sederhana seperti solitaire, chess, atau mahjong. Namun, Grafika 2D memiliki kekurangan, yaitu : ketidakmampuannya untuk merepresentasikan objek 3D. Kekurangan ini sangat dirasakan terutama dalam bidang desain, dimana kebanyakan desainer membuat barang yang ada dalam dunia nyata yang berdimensi 3. Pada Grafik 2D ini tidak dibahas lebih lanjut karena permodelan poligon akan dibahas dalam komputer grafik 3D.

3.2. Komputer Grafik 3D
Grafik 3D merupakan perkembangan dari grafik 2D. Didalam grafika komputer, 3D merupakan bentuk grafik yang menggunakan representasi data geometri tiga dimensi. Suatu objek rangka 3D apabila disinari dari arah tertentu akan membentuk bayangan pada permukaan gambar. Proses pembuatan grafik komputer 3D dapat dibagi ke dalam tiga fase, yaitu 3D modeling yang mendeskripsikan bentuk dari sebuah objek, layout dan animation yang mendeskripsikan gerakan dan tata letak sebuah objek, dan 3D rendering yang memproduksi image dari objek tersebut.
Istilah atau Pengertian Grafik 3D adalah sebuah gambar,garis,lengkungan,dan sebagainya yang memiliki titik-titik yang menghubungkan menjadi sebuah bentuk 3D Di dalam dunia game, 3D secara umum merujuk pada kemampuan dari sebuah video card (link). Saat ini video card menggunakan variasi dari instruksi-instruksi yang ditanamkan dalam video card itu sendiri (bukan berasal dari software) untuk mencapai hasil grafik yang lebih realistis dalam memainkan game komputer. Rendering adalah proses untuk menghasilkan sebuah citra 2D dari data 3D. Prose ini bertujuan untuk untuk memberikan visualisasi pada user mengenai data 3D tersebut melalui monitor atau pencetak yang hanya dapat menampilkan data 2D .Dibandingkan dengan definisi dan kegunaan nya, penerapan grafik tiga dimensi dalam bidang komputer ini lebih sulit dibandingkan dengan grafik dua dimensi.
Polygon sebelum masuk pada permodelan tiga dimensi, ada beberapa hal yang harus dijelaskan secara mendasar, terutama pada poligon itu sendiri Poligon secara literal berarti banyak sudut. Dapat didefinisikan sebagai bangun datar yang terdiri dari susunan garis - garis yang yang membentuk sebuah sirkuit yang memiliki banyak sudut.

3.2.1 Macam-macam Poligon :
Poligon bias di bagi ke dalam empat kategori, yaitu:
• Poligon Terbuka. Poligon terbuka adalah poligon yang titik awal dan titik akhirnya merupakan titik yang berlainan (tidak bertemu pada satu titik).


• Poligon Tertutup. Poligon tertutup atau kring adalah poligon yang titik awal dan titik akhirnya bertemu pada satu titik yang sama.



• Poligon Bercabang. Poligon cabang adalah suatu poligon yang dapat mempunyai satu atau lebih titik simpul, yaitu titik dimana cabang itu terjadi.



• Poligon Kombinasi. Bentuk poligon kombinasi merupakan gabungan dua atau tiga dari bentuk-bentuk poligon yang ada.



Dalam pembuatan grafis tiga dimensi, pemodelan poligonal adalah metode untuk menciptakan model 3D dengan menghubungkan segmen garis melalui titik-titik dalam ruang 3D. Model poligonal sangat fleksibel dan dapat ditampilkan oleh komputer dengan sangat cepat. Kekurangannya polygonal modeling adalah tidak dapat membuat permukaan melengkung secara akurat sesuai dengan ukuran geometris yang tepat. Permukaan melengkung biasanya dibentuk melalui metode penghalusan (smoothing) yang dibentuk dari satu garis ke garis lainnya, atau dari satu poligon ke poligon lainnya. Oleh karena itu, polygonal modeling biasa dipergunakan untuk membuat model-model 3 Dimensi objek non geometris, seperti pada kartun, mahluk hidup, dan lain-lain.
Sebelum masuk lebih dalam ke dalam model poligonal tiga dimensi, ada beberapa istilah yang penting dalam permodelan poligonal ini, diantaranya :
• Vertex
Vertex adalah representasi sebuah titik ke dalam bidang tiga dimensi. Vertex tunggal disebut juga vertices. Vertex maupun vertices jika dalam bahasa sehari hari sering disebut sebagai simpul.
• Edge
Edge dalam bahasa inggris berarti tepi. Tepi atau edge dalam permodelan grafik ini merujuk pada garis yang menghubungkan dua vertices.
• Segitiga
Tiga buah vertex yang saling berhubungan satu sama lain membentuk sebuah bidang datar (plane) segitiga, inilah yang merupakan objek dasar dalam permodelan poligonal.
• Poligon
Seperti yang sudah dibahas diatas, poligon merupakan sebuah bangun datar yang memiliki banyak sudut. Namun dalam permodelan tiga dimensi, poligon merujuk pada kumpulan dari segitiga - segitiga yang membentuk bangun datar lain, atau bahkan bangun ruang yang kasar. Poligon yang lebih kompleks dapat membuat objek yang terdiri lebih dari 3 simpul. Sekelompok poligon, terhubung satu sama lain dengan simpul bersama, umumnya disebut sebagai elemen. Setiap poligon yang membentuk elemen disebut wajah (face) atau permukaan. Poligon adalah kumpulan dari wajah atau permukaan tersebut.
• Mesh atau wireframe
Mesh atau wireframe (jala) adalah kumpulan kumpulan dari poligon yang tersusun dan terhubung sedemikian sehingga membentuk sebuah objek tiga dimensi.
Permodelan poligon dalam grafik tiga dimensi merupakan sebuah cara yang sederhana. Dalam permodelan poligon ini, sebuah bangun ruang, atau objek tiga dimensi yang akan dibangun dapat dengan leluasa dibuat karena bagaimanapun juga, prinsip dari permodelan ini adalah menyusun sedemikian vertex dan tepi - tepi dengan bebas, tergantung dari pikiran si pembuat tersebut.

3.2.2 Teori Geometris dari Poligon
Seperti yang telah dibahas sebelumnya, obyek dasar yang digunakan dalam pemodelan poligon ini adalah simpul (vertices), titik dalam ruang tiga dimensi. Dua simpul dihubungkan oleh sebuah garis lurus menjadi tepi (edge). Tiga simpul, terhubung satu sama lain dengan tiga tepi, mendefinisikan sebuah segitiga, yang merupakan poligon sederhana dalam ruang Euclidean.
Ruang Euclidean adalah sebuah ruang tiga dimensi dimana setiap titik yang berada di dalam ruang tersebut memiliki alamat - alamat berdasarkan koordinat - koordinat.
Seperti yang telah dibahas sebelumnya, obyek dasar yang digunakan dalam pemodelan poligon ini adalah simpul (vertices), titik dalam ruang tiga dimensi. Dua simpul dihubungkan oleh sebuah garis lurus menjadi tepi (edge). Tiga simpul, terhubung satu sama lain dengan tiga tepi, mendefinisikan sebuah segitiga, yang merupakan poligon sederhana dalam ruang Euclidean.
Ruang Euclidean adalah sebuah ruang tiga dimensi dimana setiap titik yang berada di dalam ruang tersebut memiliki alamat - alamat berdasarkan koordinat - koordinat.

3.2.3 Alur Proses Grafik Komputer 3D
• Menetapkan ruang model.
• Melakukan transformasi model yang berguna untukmenempatkan model pada sistem koordinat umum yang disebut ruang dunia (world space).
• Semua objek, sumber cahaya dan sudut pandang pengamat berada pada ruang dunia.
• Melakukan penolakan terhadap bagian - bagian yang tidak perlu dalam upaya optimisasi.
• Sumber cahaya dapat menyebabkan suatu objek dapat terlihat.
• Warna objek ditentukan dari properti material objek itu sendiri dan sumber cahaya pada tampilan tersebut.
• Algoritma illuminasi tergantung pada model bayangan ( shading model ) dan model permukaan (surface model).
• Transformasi pengamat merupakan bentuk lain dari koordinasi sistem tersebut.
• Memetakan titik - titik yang ada pada ruang dunia ke ruang mata.
• Posisi pengamat dapat ditransformasikan ke asal mulanya.
• Arah pengamat dapat diorientasikan sepanjang axis.
• Mendefinisikan suatu pengamatan volume.
• Membuat kliping pada tampilan object dalam gambaran volume 3D yang disebut viewing frustum.
• Selanjutnya mengeliminasi total pada object ( dan bagian object ) yang tidak visible bagi citra.
• Selanjutnya memproyeksikan ke dalam 2D.
• Mentransformasikan dari tuang mata ke ruang tampilan ( screen space ).
• Transformasi akhir, dari ruang koordinat tampilan ( screen - spce coordinate ) ke viewport coordinate.
• Tahap rasterasasi melakukan scan object dan mengkonversinya ke dalam pixel.
• Melakukan interpolasi ke dalam parameter.
• Melakukan beragam operasi 2D.

3.2.4 Pengamatan 3D
Bagaimana cara menetapkannya :
1. Dari sudut pandang mana kita memandang suatu object tersebut ?
2. Dimana kita dapat melihat object tersebut ?
3. Dengan cara seperti apa kita dapat melihat object tersebut ?
Pengamatan 3D dapat menyerupai suatu proses.
Pengambilan gambar dapat dilakukan melalui fotografi.
Analogi Kamera dan Transformasi adalah Transformasi Proyeksi yang menyesuaikan lensa kamera terhadap sudut pandang pararel atau proyeksi.
Transformasi Pandangan Tripod adalah posisi dan orientasi volume pandangan di dunia nyata dan Transformasi Model adalah menggerakkan model ransformasi terhadap Viewport yang berguna untuk memperbesar atau memperkecil fisik foto.

3.2.5 Hidden Surface Removal
• Bagaimana cara kita menampilkan suatu object yang saling bertumpang tindih sehingga pada akhirnya hanya bagian depan dengan pixel yang berkontribusi saja yang tampil ?
• Dapatkah kita melanjutkannya (memperbesar/memperkecil area yang bertumpang tindih) dan menghindari rasterisasi yang tidak diperlukan ?
• Dapatkah kita menangani objek yang transparant dan semi-transparant ?
Keterangan :
1. Gambar area berwarna abu - abu menunjukkan view area.
2. Gambar area berwarna merah menunjukkan fully visible area.
3. Gambar area berwarna kuning menunjukkan partiality visible area.
4. Gambar area berwarna putih menunjukkan area not visible at all
4. lluminasi
Illuminasi adalah perpindahan suatu energi (khususnya luminous flux dari cahaya yang terlihat) dari sumber cahaya ke suatu permukaan dari sebuah titik - titik. Bagaimana cara kita memodelkan suatu cahaya atau sinar? Bagaimana cara kita memodelkan pantulan dari permukaan yang dikenai oleh cahaya. Komponen Illuminasi :
• Sumber Cahaya
• Spektrum Daya Pancar/Emittance Spectrum (warna)
• Geometry (posisi dan arah)
• Pelemahan Arah/Directional Attenuation
• Properti Permukaan/Surface Properies
• Spektrum Pantulan/Reflectance Spectrum (warna) untuk beragam aspek illuminasi.
• Geometry (posisi,orientasi, dan struktur mikro)
• Penyerapan
5. Bayangan
Bayangan adalah proses penentuan warna dari semua pixel yang menutupi permukaan dengan menggunakan suatu model illuminasi.
Metodenya melliputi : Penentuan permukaan yang tampak pada setiap pixel, Perhitungan normal pada permukaan, dan Mengevaluasi intensitas cahaya dan warna menggunakan model illuminasi.
Metode pembuatan bayangan cukup mahal, untuk membuatnya lebih efisien dilakukan melalui kustomisasi untuk merepresentasikan permukaan yang spesifik.
Jaring poligon secara umum sering digunakan untuk merepresentasikan permukaan yang kompleks.
Informasi geometri yang tersedia hanyalah vertice dari poligon.
Interpolasi dari model bayangan dapat digunakan untuk meningkatkan substansi secara lebih efisien.
6. Ragam Teknik Bayangan
• Constant Shading
• Gouraud Shading
• Phong Shading

7. Clipping
7.1. Definisi Clipping
Dalam kehidupan sehari-hari saat kita ingin menggambar sesuatu pada sebuah bidang, tentunya kita tidak akan bisa menggambar melebihi bidang tersebut. Dengan kata lain suatu bidang gambar pasti memiliki batas wilayah maksisum.
Seperti halnya komputer, untuk melakukan proses penggambaran suatu objek di monitor, komputer tidak akan bisa menampilkan gambar melebihi batas maksimum yang telah ditentukan. Untuk dapat melakukan hal tersebut, maka digunakanlah proses clipping.
Clipping berasal dari kata clip, yang secara umum memiliki arti memotong. Dalam ilmu grafika komputer, clipping merupakan proses pemotongan objek sehingga hanya bagian objek yang berada di dalam area tampil(viewport) yang dapat dilihat oleh user, sedangkan bagian objek yang berada di luar area tampil akan disembunyikan.
Hal tersebut dilakukan agar proses perhitungan koordinat pixel pada layar tidak terlalu rumit. Tetapi sebelum melakukan proses clipping terlebih dahulu harus ditentukan bentuk dan ukuran clipping window, yaitu area dimana suatu objek dapat diproses dan ditampilkan. Clipping window dapat berupa segi empat, segi tiga, lingkaran, elips, poligon, dan lain-lain.
Proses clipping dapat digunakan untuk membuat aplikasi-aplikasi sebagai berikut :
• Identifikasi permukaan yang dapat dilihat dalam pandangan 3 Dimensi.
• Antialiasing segmen garis atau bagian suatu objek.
• Membuat objek dengan prosedur solid modelling.
• Menampilkan beberapa window.
• Membuat gambar dengan kemampuan memindahkan dan menghapus sebagian .
Ada beberapa teknik yang dapat digunakan untuk melakukan proses clipping, diantaranya adalah sebagai berikut :
• Vertex Clipping
• Line Clipping
• Polygon Clipping

7.1.1. Vertex Clipping (Clipping Titik)
Teknik yang digunakan untuk mengimplementasikan Vertex Clipping cukup sederhana yaitu dengan menggunakan rumus umum sebagai berikut :
Xmin \leq
x\leq
Xmax
Ymin \leq
y \leq
Ymax
Xmin, Xmax, Ymin, dan Ymax merupakan batas maksumum untuk clipping window yang berbentuk persegi empat dengan posisi standar. Agar teknik ini dapat di jalankan, kedia kondisi di atas harus terpenuhi. Jika ada sebuah titik yang tidak memenuhi kedua kondisi tersebut, maka titik tersebut tidak akan muncul pada viewport.

Contoh Kasus :
Terdapat 2 buah titik yaitu P1(2,2) dan P2(3,6) dengan Xmin = 1, Xmax = 5, Ymin = 1, dan Ymax=5.
Gambar di atas dapat dilihat bahwa titik P2 tidak memenuhi kedia kondisi umum dari vertex clipping berada sehingga titik P2 tidak akan di tampilkan. Clipping tidak dapat diaplikasikan pada scene yang menampilkan ledakan atau percikan air pada gelombang laut yang dibuat dengan mendistribusikan beberapa partikel.

7.1.2. Line Clipping (Clipping Garis)
Line Clipping diproses dengan melakukan inside - outside test, yaitu memeriksa kedua titik ujung dari garis tersebut. Berdasarkan tes tersebut garis dapat dikategorikan menjadi 4 jenis, yaitu :
1. Invisible : garis yang tidak terlihat sepenuhnya/berada diluar clipping window.
2. Half-partial : garis yang terpotong sebagian clipping window.
3. Full-partial : garis yang terpotong penuh clipping window dan melintasi clipping window.
4. Visible : garis yang terletak di dalam clipping window.
Proses clipping tidak berlaku pada garis dengan kondisi invisible dan visible, karena kedua kondisi tersebut tidak memotong clipping window.
Secara umum algoritma line clipping dapat digambarkan sebagai berikut :
Dalam melakukan teknik line clipping dapat menggunakan beberapa algoritma seperti : Cohen Sutherland, Liang - Barsky, Cyrus - Beck, dan Nicholl - Lee - Nicholl. Algoritma yang paling terkenal adalah algoritma Cohen - Sutherland. Pada algoritma ini setiap titik ujung (endpoint) dari garis direpresentasikan ke dalam 4 digit angkat biner yang disebut region code. Masing - masing digit tersebut akan menentukan posisi titik relatif terhadap batas clipping yang berbentuk segiempat. Untuk lebih jelas dapat dilihat pada bagan dan tabel di bawah ini.

Bit ke-1 : region kiri(L)

Bit ke-2 : region kanan(R)

Bit ke-3 : region bawah(B)

Bit ke-4 :region atas(T)

Bit dengan nilai 1 menandakan bahwa titik berada pada region yang bersangkutan. Jika tidak maka akan diset dengan nilai 0.

contoh kasus :

Diketahui dua buah garis yaitu garis AB dengan titik A(2,2) dan titik B(3,5). Kemudian garis CD dengan titik C(2,7) dan titik D(5,7). Lalu titik E(0,-1) dan titik F(7,7). Clipping window dengan Xmin =1, Xmax = 6, Ymin = 1, Ymax = 6.

Langkah penyelesaian :

Lakukan pengecekan pada setiap titik terhadap window

• Garis AB

Titik A(2,2)

Titik B(3,5)

Dari kedua tabel di atas terlihat bahwa garis AB berada pada region 0000, yaitu terletak di dalam clipping window dan bersifat visible. Oleh karena itu garis AB dapat dilihat sepenuhnya tanpa melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis AB, yaitu 0000 AND 0000 = 0000.

• Garis CD

Titik C(2,7)

Titik D(5,7)

dari kedua tabel diatas terlihat bahwa garis CD berada pada region 1000, yaitu terletak disebelah atas clipping window dan bersifat invisble. Oleh karena itu garis CD tidak dapat dilihat sepenuhnya dan tidak melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis CD, yaitu 1000 AND 1000 = 1000.

• Garis EF

Titik E(2,-1)

Titik F(3,7)

Dari kedua tabel di atas terlihat bahwa garis EF memiliki titik yang berada di luar clipping window namun kedua titik tersebut dihubungkan dengan sebuah garis yang melalui clipping window, sehingga garis EF bersifat Full - partial dan harus melalui proses clipping. Hal tersebut dapat dibuktikan dengan menggunakan operator logika AND terhadap kedua titik yang menyusun garis EF, yaitu 0100 AND 1000 = 0000. untuk melakukan proses clipping dapat mengikuti langkah - langkah berikut ini :

1. Menentukan titik potong yang dihitung berdasarkan bit yang bernilai 1 dari region code dengan menggunakan panduan tabel berikut ini :

dengan nilai xp1, xp2, yp2 yang dapat dihitung dengan menggunakan persamaan :

xp1 = x1 + (Ymin - y1)/m

xp2 = x1 + (Ymax-y1)/m

yp1 = y1 + m * (Xmin - X1)

dimana nilai m sebagai berikut :

m = (y2 - y1) / (x2 - x1)

Sehingga untuk garis EF (2,-1) dan (3,7) dapat dilakukan perhitungan :

m = 7 - (-1) / 3 - 2 = 8/1 = 8

Region code untuk titik E(2, -1) adalah 0100, maka R = 1. Pada titik ini akan dicari xp1.

xp1 = x1 + (Ymin - y1) / m

= 2 + (1 - (-1)) / 8 = 2.25

Maka titik potongnya adalah (2.25 ; 1)

Region code untuk titik F(3,7) adalah 1000, maka T = 1. Pada titik ini akan dicari xp1.

E(2.25 ; 1) dan titik F(2.875 ; 6)



7.1.3. Polygon Clipping
Polygon merupakan bidang yang tersusu dari verteks (titik sudut) dan edge (garis penghubung setiap verteks). Untuk dapat melakukan proses clipping pada polygon diperlukan algoritma yang lebih kompleks dari kedua teknik clipping yang telah di bahas sebelumnya. Salah satunya adalah algoritma Sutherland - Hodgman. Ide dasarnya adalah memperhatikan edge pada setiap arah pandang, lalu clipping polygon dengan persamaan edge, kemudian lakukan clipping tersebut pada semua edge sehingga polygon terpotong sepenuhnya. Berikut ini ketentuan dari algoritma Sutherland - Hodgman :
• Polygon dapat dipotong dengan setiap edge dari window sekali pada satu waktu.
• Vertex yang telah terpotong akan disimpan untuk kemudian digunakan untuk memotong edge yang masih ada.
• Perhatinkan bahwa jumlah vertex biasanya berubah - ubah dan sering bertambah.
Pada saat mengimplementasikan algoritma akan dilakukan tahap interseksi pada setiap sisi window, yaitu sebagai berikut :
• Asumsikan bahwa kita akan memotong edge pada titik (x1, y1) dan (x2, y2) dengan clipping window pada titik (Xmin, Ymin) dan (Xmax, Ymax).
• Tentukan nilai slope = (y2 - y1) / (x2 - x1) pada setiap interseksi.
• Lokasi (IX, IY) dari interseksi edge dengan sisi kiri window adalah

IX = Xmin

IY = slope * (Xmin - x1) + y1

Lokasi (IX, IY) dari interseksi edge dengan sisi kanan window adalah :

IX = Xmax

IY = slope * (Xmax - x1) + y1

Lokasi (IX, IY) dari interseksi edge dengan sisi atas window adalah :

IX = x1 + (Ymax - y1)/slope

IY = Ymax

Lokasi (IX, IY) dari interseksi edge dengan sisi bawah window adalah :

IX = x1 + (Ymin - y1) / slope

IY = Ymin

Contoh Kasus :
Diketahui sebuah polygon ABC dengan titik A (4,7), B(10,4), dan C(2,0). Clipping window memiliki nilai Xmin = 1, Xmax = 8, Ymin = 1, dan Ymax = 6.

Dari gambar di atas dapat dilihat bahwa terdapat 6 buah titik potong yang akan dicari. Pada bagian atas clipping window terdapat 2 buah titik potong, yaitu perpotongan garis AC dengan Ymax dan garis AB dengan Ymax. Lalu pada bagian kanan clipping window terdapat 2 buah titik potong, yaitu perpotongan garis BA dengan Xmax dan garis BC dengan Xmax. Kemudian pada bagian bawah window clipping juga terdapat 2 buah titik potong, yaitu perpotongan garis CA denga Ymin dan garis CB dengan Ymin. Oleh karena itu akan dilakukan 3 kali intersekse.



BAB IV

Program Aplikasi Yang di Gunakan

Pada bab - bab yang telah dibahas, implementasi permodelan polygon dijelaskan dengan teori permodelan polygon dan algoritma yang akan digunakan dalam permodelan polygon tersebut. Pada bab dua telah menjelaskan implementasi tentang polygon, yaitu menggunakan aplikasi Blender.

Contoh permodelan polygon yang sederhana, kita dapat membuat contoh model pesawat. Alasan memilih model pesawat adalah karena model pesawat yang memiliki dasar - dasar polygonal, dalam hal ini pesawat mewakili proses pembentukan dan manipulasi objek dasar polygon. Model pesawat pada Gambar 1 terlihat bagus dan nyata. Model yang digunakan ini berasal dari sebuah UV Sphere. UV Sphere adalah sebuah objek multi polygon, yaitu objek yang tersusun atas surface - surface, dan vertex yang berhubungan.

Gambar 1
Langkah awal pembuatan model, memiliki aplikasi blender yang sudah terinstall di computer yang akan dipakai. Untuk mendapatkan software tersebut bisa di download di www.blender.org/download. Jalankan program tersebut, pada layer secara default terdapat sebuah objek kubus.



Gambar 2

Cara membuat model pesawat dapat dilakukan dengan menggunakan dua cara, yaitu menggunakan permodelan grafik user interface atau menggunakan source code pemrograman python. Aplikasi blender memiliki bahasa pemrograman penyusun, yaitu bahasa pemrograman python. Penjelasan, menggunakan permodelan berbasis user interface, dimana kita hanya cukup menggunakan tools - tools dan shortcut yang sudah disedikan oleh aplikasi blender. Membuat model pesawat, bisa menggunakan mesh apapun bergantung dari imaginasi sang animator.

Pada langkah ini kita akan menggunakan mesh UV Sphere, maka kita hapus kubus yang sudah ada pada layer default, dengan menekan tombol delete pada keyboard atau menggunakan shortcut X. Menambahkan mesh, dapat menggunakan Toolbar Add dan kemudian pilih UV Sphere. Aplikasi blender dirancang dengan semua tools atau peralatan yang mendukung permodelan grafis sudah disediakan dengan praktis, sehingga kita tidak perlu bersusah payah untuk membentuk sebuah model 3d dengan memakai syntax - syntax programming. Bisa juga dengan menggunakan shortcut Shift+A, pilih UV Sphere.



Gambar 3

Pesawat memiliki bentuk memanjang, sehingga untuk menerapkannya dapat dengan menggunakan shortcut S+X/S+Y/S+Z bergantung dengan koordinat yang diinginkan. Pada pembuatan model seperti gambar diatas menggunakan shortcut S+Y. Masuk ke dalam edit mode untuk mengubah mesh, dengan mengklik tombol yang ada di sebelah kiri bawah atau dengan menekan shortcut tab. Klik tombol edit mode sehingga dapat masuk ke dalam keadaan edit mode, menggunakan shortcut z untuk membuat objek tersebut hanya tampak edgenya saja.


Gambar 4

Pesawat memiliki bentuk yang simetris, konsep mirroring dapat membuat objek terlihat simetris. Konsep tersebut dapat diterapkan dengan cara membelah UV Sphere tersebut menjadi dua bagian yang sama. Untuk membelah menggunakan cara masuk ke dalam tampak depan dengan menekan shortcut b, blok setengah bola dan klik shortcut x untuk menghilangkan surface. Blender telah mempersiapkan konsep mirroring dengan cara meng-klik panel yang ada di sebelah kanan world dengan keterangan modifier, klik add modifier dan pilih mirror.



Gambar 4

Semua bagian objek akan tampak seperti semula, perbedaannya pada konsep mirroring dengan daerah yang telah dijadikan mirror tidak akan dapat diubah kembali. Seluruh daerah mirror hanya akan berubah ketika daerah yang tidak di mirror diubah. Blok bagian depan pesawat dan delete sedikit bagian nya di edit mode untuk membuat desain jendelanya. Pesawat memiliki sayap agar badan pesawat dapat berfungsi secara seimbang untuk membuat sayap dengan memblok surface yang ingin dijadikan sayap. Tekan shortcut e(extrude), tarik hingga dicapai bentuk seperti sayap.



Gambar 5

Untuk membuat sayap dan ekor pesawa terlihat lebih realistis atau nyata, klik ujung depan vertex, tarik berdasarkan sumbu y (yang berwarna hijau).


Gambar 6


Gambar 7

Menambahkan bentuk real dari motor pesawat dengan membuat sebuah penyangga untuk menggantungkan motor. Untuk pembuatan penyannga dapat dilakukan dengan cara memblok bagian yang ingin dibuat, tekan shortcut e(extrude), tarik ke bawah dan shortcut s sehingga akan menguncupkan bentuk.



Gambar 8

Pembuatan roda pesawat dengan menggunakan objek silinder, klik shift+a pilih cylinder. Ketebalan dapat diatur dan bentuk roda dengan menggunakan shortcut s (scale) serta untuk merotasikannya dengan shortcut R. Supaya terlihat lebih realistis, hilangkan tutup dan alas silinder.



Gambar 9

Masuk ke dalam tampilan edit mode, pilih edge mode.

Seleksi bagian tepi dan alasnya dengan alt+klik dan tekan shift untuk memblok kedua bagian tepi dan alasnya. Tekan shortcut e , tarik ke bawah dan shortcut s untuk menguncupkan bentuk, sehingga timbul bidang baru ke arah luar. Membuat sebuah bidang baru di dalam bidang dapat menambahkan bidang dengan menekan tombol ctrl+r.


Gambar 10


Gambar 11

Kerangka roda telah selesai, duplikat roda tersebut dengan menekan tombol shift+d. Pasang dikedua sisi penyangga roda yang telah dibuat sehingga masing-masing penyangga memiliki 2 buah roda di sisinya. Untuk membuat bentuk pesawat lebih aerodinamis dan tampak nyata dapat ditambahkan subdivision surface. Klik panel modifier dan menambahkan modifier subdivision surface.

Penambahan yang terjadi selalu dilakukan di dalam edit mode. Namun, jika penambahan tersebut sifatnya membuat model tampak tidak realistis, maka perintah membatalkan tindakan dapat dilakukan dengan cara menekan tombol shortcut ctrl+z. Tahap akhir dari pembuatan model grafik ini adalah dengan cara memberikan cahaya dan pengaturan kamera.


Gambar 12


Menggunakan konsol pada blender merupakan cara lain untuk peng-implementasian permodelan polygon. Tahap pengkodean konsol pada permodelan grafis dalam blender tidak seperti pada permodelan grafis lainnya (contoh : GLUT). Pada permodelan ini, blender telah menyiapkan package sendiri yang otomatis ter-include pada saat program blender di jalankan karena blender adalah program aplikasi 3d berbasis GUI. Pendefinisian syntax-syntax program di bawah ini adalah contoh prosedural untuk menambah dan memanipulasi tahap per tahap.

bpy.ops.mesh.primitive_uv_sphere_add(segments=32, ring_count=16, size=1, view_align=False, enter_editmode=False, location=(0, 0, 0), rotation=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

Tahap awal, buat UV Sphere dengan rusuk yang vertical (segment) sebanyak 32 buah, rusuk horizontal (ring_count) sebanyak 16, size normalnya 1, view_align=False, enter_editmode=False. Memasukkan uv sphere ke dalam edit mode, sedangkan untuk code setelahnya adalah default untuk pengaturan tambahan lokasi, rotasi dan layer di blendernya.

bpy.ops.transform.resize(value=(5.00724,5.00724,5.00724),constraint_axis=(False,True,False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

Memasuki edit mode, konsol ini digunakan untuk mengatur skala perbesar, dan memperkecil koordinat dari objek, jenis perbesaran axis dengan default (x,y,z). Kode ini digunakan untuk mengubah ukuran objek dan mengubah sudut perspektif dari pengguna.

bpy.ops.transform.resize(value=(-1.59431,-1.59431,-1.59431),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.object.editmode_toggle()

Kode ini adalah penggalan code untuk memasuki edit mode. Syntax seperti ini pastinya banyak dijumpai sebelum syntax-syntax untuk mengedit objek secara internal.

bpy.ops.mesh.delete(type='FACE')

Syntax diatas berfungsi untuk menghapus face pada objek. Syntax ini harus dijalankan setelah mencapai edit mode.

bpy.ops.object.modifier_add(type='MIRROR')

Kode untuk metode mirroring.

bpy.ops.mesh.delete(type='FACE')

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False},TRANSFORM_OT_translate={"value":(0,0,0),"constraint_axis":(False,False,True), "constraint_orientation":'NORMAL',"mirror":False,"proportional":'DISABLED',"proportional_edit_falloff":'SMOOTH',"proportional_size":1,"snap":False,"snap_target":'CLOSEST',"snap_point":(0,0,0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

Syntax diatas berguna untuk membuat konsep extrude. Extrude adalah konsep dimana sebuah edge baru dari vertex dan face dari sebuah edge dengan cara menarik vertex/edge.

bpy.ops.transform.translate(value=(7.78807,0,0),constraint_axis=(True,False,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST',

snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

Syntax diatas adalah penggalan cara untuk mentranslasikan objek sehingga objek tersebut berpindah posisi koordinatnya berdasarkan sumbu x.

bpy.ops.transform.translate(value=(-3.51585,0,0),constraint_axis=(True,False,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

Metode diatas dapat dipakai berulang kali bergantung dari koordinat yang diinginkan, atur batas axisnya dan atur valuenya berdasarkan constraint yang digunakan constraint_axis=(True, False, False), berarti sumbu x yang digunakan untuk memindahkan objek, ataupun bagian-bagian penyusun objek selama masih di dalam edit-mode.

bpy.ops.transform.resize(value=(0.211628,0.211628,0.211628),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

Kode diatas berfungsi untuk me-resize skala objek. Jika koordinat yang dimasukkan bernilai positif, maka resize yang dihasilkan akan memperbesar objek. Begitupun sebaliknya. Perlu diperhatikan bahwa dalam pemanggilan method bpy.ops.transform.resize(value=(0.211628, 0.211628, 0.211628) nilai di dalam value tersebut harus bernilai sama jika ingin memperbesar skala secara global.

bpy.ops.transform.translate(value=(0,2.92546,0),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST',

snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

Atur batas axisnya dan atur valuenya berdasarkan constraint yang digunakan berarti sumbu y yang digunakan constraint_axis=(False,True,False), dengan nilai =(0, 2.92546, 0).

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False},TRANSFORM_OT_translate={"value":(0,0,0),"constraint_axis":(False,False,True), "constraint_orientation":'NORMAL',"mirror":False,"proportional":'DISABLED',"proportional_edit_falloff":'SMOOTH',"proportional_size":1,"snap":False,"snap_target":'CLOSEST',"snap_point":(0,0,0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(0,0,2.19938),constraint_axis=(False,False,True),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.210621,0.210621,0.210621),constraint_axis=(False,False,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.resize(value=(0.057464,0.057464,0.057464),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0,0.815846,0),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0,0,0.270727),constraint_axis=(False,False,True),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False,snap_target='CLOSEST',snap_point=(0,0,0),snap_align=False,snap_normal=(0,0,0),texture_space=False,release_confirm=True) bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False},TRANSFORM_OT_translate={"value":(0,0,0),"constraint_axis":(False,False,True), "constraint_orientation":'NORMAL',"mirror":False,"proportional":'DISABLED',"proportional_edit_falloff":'SMOOTH',"proportional_size":1,"snap":False,"snap_target":'CLOSEST',"snap_point":(0,0, 0),"snap_align":False,"snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(1.46453,0,0),constraint_axis=(True,False,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0),snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.346454,0.346454,0.346454),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False,snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0,1.39013,0),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.0949305,0.0949305,0.0949305),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False, proportional='DISABLED',proportional_edit_falloff='SMOOTH',proportional_size=1, snap=False,snap_target='CLOSEST',snap_point=(0,0,0),snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0,2.84429,0),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST',snap_point=(0, 0, 0),snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-1.76963,0,0),constraint_axis=(True,False,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH',proportional_size=1,snap=False, snap_target='CLOSEST',snap_point=(0, 0, 0),snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False},TRANSFORM_OT_translate={"value":(0,0,0),"constraint_axis":(False,False,True), "constraint_orientation":'NORMAL',"mirror":False,"proportional":'DISABLED',"proportional_edit_falloff":'SMOOTH',"proportional_size":1,"snap":False,"snap_target":'CLOSEST',"snap_point":(0,0,0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(0, 0, 3.43828), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.254359,0.254359,0.254359),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0,2.255,0),constraint_axis=(False,True,False),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED',proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False,snap_normal=(0,0,0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0,0,-1.41223),constraint_axis=(False,False,True),constraint_orientation='GLOBAL',mirror=False,proportional='DISABLED',proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, -1.21345, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.427135, 0.427135, 0.427135), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0, 0.75672, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(1.60913, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.311296, 0.311296, 0.311296), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(1.09147, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 1.36684, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(0, 0, -0.345638), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.286462, 0.286462, 0.286462), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.object.editmode_toggle() bpy.ops.transform.translate(value=(0, 0, 3.0769), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.editmode_toggle() bpy.ops.mesh.primitive_cylinder_add(vertices=32, radius=1, depth=2, end_fill_type='NGON', view_align=False, enter_editmode=False, location=(4.88822, 3.62501, -0.858164), rotation=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

bpy.ops.transform.rotate(value=-1.56969, axis=(0, 1, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), release_confirm=False)

bpy.ops.object.editmode_toggle() bpy.ops.mesh.delete(type='FACE') bpy.ops.mesh.delete(type='FACE') bpy.ops.mesh.select_all(action='TOGGLE')

syntax diatas untuk menyeleksi objek - objek, jika di dalam GUI mode, di representasikan dengan shortcut alt-klik. Method ini hanya dapat dilaksanakan setelah memasuki edit mode.

bpy.ops.mesh.select_all(action='TOGGLE')

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.resize(value=(0.379863, 0.379863, 0.379863), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False) bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST',

"snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

ini syntax untuk menambahkan rusuk, atau jika dibuat dalam tahap GUI nya, di representasikan dalam shortcut ctrl+R sebanyak 1 buah rusuk.

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.transform.resize(value=(1.73979, 1.73979, 1.73979), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(1.00228, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-0.734313, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-0.279148, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True) bpy.ops.object.editmode_toggle()

bpy.ops.transform.resize(value=(0.35844, 0.35844, 0.35844), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.object.editmode_toggle() bpy.ops.transform.translate(value=(0, 0, 1.878), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-6.34507, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True) bpy.ops.transform.translate(value=(0, -3.76148, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(7.91232, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True) bpy.ops.object.editmode_toggle()

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

Syntax ini untuk menambahkan rusuk, atau jika dibuat dalam tahap GUI nya, di representasikan dalam shortcut ctrl+R.

bpy.ops.mesh.loopcut_slide(MESH_OT_loopcut={"number_cuts":1, "smoothness":0}, TRANSFORM_OT_edge_slide={"value":0, "mirror":False, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "correct_uv":False, "release_confirm":False})

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(0, 0, -0.69952), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.mesh.extrude_region_move(MESH_OT_extrude_region={"mirror":False}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, True), "constraint_orientation":'NORMAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(0, 0, -0.273946), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0, -0.429182), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0, -0.191762), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0.290232, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0.277573, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True) bpy.ops.object.editmode_toggle()

bpy.ops.transform.translate(value=(-5.99606, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.300046, 0.300046, 0.300046), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0, 0, 0.71006), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(1.08876, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

Syntax diatas untuk menduplikasikan objek yang telah dibuat, objek polygon semuanya bias diduplikasikan, kemudian ditranslasikan (vertex,edge, maupun facenya).

bpy.ops.transform.translate(value=(-0.504931, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(-1.97239, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(-0.583827, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(1.95661, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, -4.35249, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.duplicate_move(OBJECT_OT_duplicate={"linked":False, "mode":'TRANSLATION'}, TRANSFORM_OT_translate={"value":(0, 0, 0), "constraint_axis":(False, False, False), "constraint_orientation":'GLOBAL', "mirror":False, "proportional":'DISABLED', "proportional_edit_falloff":'SMOOTH', "proportional_size":1, "snap":False, "snap_target":'CLOSEST', "snap_point":(0, 0, 0), "snap_align":False, "snap_normal":(0, 0, 0), "texture_space":False, "release_confirm":False})

bpy.ops.transform.translate(value=(-0.894869, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0.301333, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-0.246546, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True) bpy.ops.object.editmode_toggle() bpy.ops.object.modifier_apply(apply_as='DATA', modifier="Mirror")

Syntax di atas untuk mengaplikasikan konsep mirroring. Konsep mirroring adalah sebuah metode untuk menduplikasikan sebagian atau seluruh objek, terhadap bagian yang hilang, atau yang berlubang.

bpy.ops.object.modifier_add(type='SUBSURF')

Syntax diatas berfungsi untuk menambahkan polygon - polygon di permukaan objek, sehingga permukaan tersebut terlihat lebih halus.

bpy.ops.object.modifier_apply(apply_as='DATA', modifier="Subsurf")

Setelah kedua modifier itu ditambahkan, maka modifier tersebut harus di appy, dengan syntax di atas.

bpy.ops.object.editmode_toggle() bpy.ops.transform.translate(value=(0, 0, 1.986), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0, 1.89143), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.object.shade_smooth()

Jika masih terlihat kurang halus dan real, maka bias digunakan syntax diatas, atau menambahkan subdivision surface lagi.

bpy.ops.object.editmode_toggle() bpy.ops.mesh.primitive_ico_sphere_add(subdivisions=2, size=1, view_align=False, enter_editmode=False, location=(-4.20909, 3.73119, 4.84451), rotation=(0, 0, 0), layers=(False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

Syntax diatas adalah syntax tambahan untuk merelasitiskan pesawat tersebut, dengan menambahkan ico sphere ke dalam motor pesawat, sehingga bagian belakang pesawat terlihat timbul.

bpy.ops.mesh.primitive_cone_add(vertices=32, radius1=1, radius2=0, depth=2, end_fill_type='NGON', view_align=False, enter_editmode=False, location=(-4.20909, 3.73119, 4.84451), rotation=(0, 0, 0), layers=(False, False, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False))

Untuk perealisasian nya lagi, dapat menambahkan cone, untuk tubo pesawat.

bpy.ops.transform.translate(value=(7.9757, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0, 0.15742), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0, -2.29834), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.276116, 0.276116, 0.276116), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0, 0, 0.375248), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0.634566, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.rotate(value=1.59356, axis=(-1, -2.22045e-016, -0), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), release_confirm=False)

bpy.ops.transform.translate(value=(0, 0, 0.00915241), constraint_axis=(False, False, True), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(0, 0.00915241, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-2.12295, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.resize(value=(0.632707, 0.632707, 0.632707), constraint_axis=(False, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.resize(value=(3.07536, 3.07536, 3.07536), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=False)

bpy.ops.transform.translate(value=(0, 0.0180225, 0), constraint_axis=(False, True, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

bpy.ops.transform.translate(value=(-0.0446869, 0, 0), constraint_axis=(True, False, False), constraint_orientation='GLOBAL', mirror=False, proportional='DISABLED', proportional_edit_falloff='SMOOTH', proportional_size=1, snap=False, snap_target='CLOSEST', snap_point=(0, 0, 0), snap_align=False, snap_normal=(0, 0, 0), texture_space=False, release_confirm=True)

Pindahkan cone tersebut dan atur perbesaran nya, kemudian sesuaikan bentuknya dengan motor pesawat.

bpy.ops.object.shade_smooth()

Tambahkan efek halus kembali pada objek smooth.

bpy.ops.object.join()

Gabungkan semua nya menjadi satu kesatuan objek.. Sehingga jika dipindahkan, objek tersebut akan pindah bersama semua penambahan mesh yang telah dibuat.



BAB V

Penutup

Kesimpulan dari pembuatan polygon modelling ini adalah untuk memberikan instruksi bagaimana langkah-langkah pembuatan modelling polygon. Tujuan dari pembuatan ini adalah untuk edukasi dibidang grafis.

Dalam pembuatan ini dengan menggunakan aplikasi open source mengunakan aplikasi blender dapat menampilkan objek polygon dan pembuatannya dilihat dari fleksibilitas waktunya cukup memakan waktu lama. Saran untuk memperindah polygon ini dengan cara menggunakan pewarnaan yang terdapat pada editing di dalam blender dan dapat menggunakan texturing.

Dalam modelling ini kita membuat program yang cukup sederhana tetapi tingkat kompleksitasnya cukup tinggi dan diharapkan para pembaca dapat memahami dan mengembangkan objek yang lebih bagus dan kalau bias se kompleks mungkin. Aplikasi yang kita gunakan adalah blender yang dapat di import dan di eksport ke program aplikasi designer lain seperti 3dmax.

Program blender juga didasarkan aplikasi phyton yang bias anda lihat pada codingang phyton diatas. Demikian hasil laporan dan pembuatan buku ini, mohon maaf jika ada kesalahan dalam penulisan, sekian dan terimakasih.



Daftar Pustaka






No comments:

Post a Comment