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