Part I Konsep
1 Kata Pengantar
Alhamdulillah, segala puji bagi Tuhan yang senantiasa memberikan kemudahan dalam menyelesaikan segala urusan hingga kami mampu menyelesaikan buku POLYGON MODELLING yang diberikan tugas kepada kami Oleh Bapak I Made Wiryana.
Terima kasih yang sedalam-dalamnya kepada seluruh anggota kelompok kami dan partisipasi yang dengan sabar dan ikhlas 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.
2 Bentuk Sederhana dari Grafik Komputer
1. 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 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 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
1. Penetapan ruang model.
2. Transformasi model adalah untuk menempatkan model pada sistem koordinat umum yang disebut ruang dunia (wordl space).
3. Semua objek, sumber cahaya dan sudut pandang pengat, berada pada ruang dunia.
4. Penolakan dilakukan terhadap bagian - bagian yang ridak perlu dalam upaya optimisasi.
5. Cahaya menyebabkan suatu objek dapat terilhat.
6. Warna objek ditentukan dari properti material objek itu sendiri dan sumber cahaya pada tampilan tersebut.
7. Algoritma illuminasi tergantung pada model bayangan (shading model) dan model permukaan (surface model).
8. Transformasi pengamatan adalah bentuk lain dari koordinasi sistem.
9. Memetakan titik - titik yang ada pada ruang dunia ke ruang mata.
10. Posisi pengamat ditransformasikan ke asalnya.
11. Arah pengamatan diorientasikan ke asalnya.
12. Arah pengamatan diorientasikan sepanjang axis.
13. Mendefinisikan pengamatan volume.
14. Selanjutnya dilakukan kliping pada tampilan objek dalam gambaran volume 3D yang disebut viewing frustu.
15. Pada tahap ini dilakukan eliminasi total pada objek (dan bagian objek) yang tidak visible bagi citra.
16. Objek selanjutnya diproyeksikan ke dalam 2D.
17. Transformasikan dari tuang mata keruang tampilan (screen space).
18. Transformasi akhir, dari ruang koordinat tampilan (screen-space coordinate) ke viewport coordinate.
19. Tahap rasterasasi melakukan scan objek dan mengkonversinya ke dalam pixel.
20. Melakukan interpolasi parameter.
21. Melakukan beragam operasi 2D.
3.2.4 Pengamatan 3D
Bagaimana menetapkan :
• Dari sudut mana kita memandang objek tersebut?
• Dimana kita melihat objek tersebut?
• Dengan cara seperti apa kita melihat objek tersebut?
pengamatan 3D menyerupai proses.
pengambilan gambar melalui fotografi.
Analogi Kamera dan Transformasi : Transformasi Proyeksi Menyesuaikan lensa pada kamera sudut pandang Paralel atau Proyeksi
Transformasi Pandangan Tripod : mendefinisikan posisi dan orientasi volume pandangan di dunia nyata Transformasi Model, menggerakan model ransformasi Viewport Memperbesar atau memperkecil fisik foto.
3.2.5 Hidden Surface Removal
• Bagaimana cara kita menampilkan objek 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 ?
• gambar pandang area bewarna abu-abu menunjukan view area .
• warna merah menunjukan fully visible area warna kuning menunjukan partiality visible area .
• putih menunjukan area not visible at all.
4 Illuminasi
• Illuminasi : Perpindahan energi (khususnya luminous flux dari cahaya yang terlihat) dari sumber cahaya ke permukaan dan titik - titik.
• Bagaimana kita memodelkan cahaya/sinar?
• Bagaimana kita memodelkan pantulan dari permukaan yang dikenai cahaya.
• komponen Illuminasi :
• Sumber Cahay
• 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 menggunakan model illuminasi.
• Metodenya melliputi : Penentuan permukaan 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 maksisum 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.
dari 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.
7.1.4 Kesimpulan.
Dari semua algoritma yang telah dibahas di atas, dapat disimpulkan bahwa ide dasar dalam proses clipping adalah dengan menyembunyikan sementara bagian dari objek yang berada di luar viewport. hal tersebut bermanfaat untuk mengurangi kerja CPU dalam melakukan komputasi gambar, sehingga CPU akan bekerja dengan lebih efisien. Saat ini penelitian mengenai algoritma clipping masih terus dikembangkan untuk mencari cara yang paling efisien dalam melakukan proses tersebut.
Part II Implementasi Permodelan Poligon
Dewasa ini, indonesia sedang menggencarkan program "go open source" terhadap masyarakat dalam rangka untuk menghindari pembajakan terhadap berbagai program berbayar. Untuk mendukung program tersebut, program aplikasi yang cocok untuk menerapkan konsep permodelan poligonal adalah sebuah aplikasi bernama Blender. Blender adalah sebuah aplikasi pemroses atau pemanipulasian grafik 3d yang berbasis open source dan gratis. Blender dapat digunakan di berbagai platform, misalnya windows atau pun unix. Blender umunmnya digunakan untuk membuat film animasi, visual efek, 3d aplikasi, ataupun video game. Fitur - fitur yang ada pada blender mendukung dalam permodelan 3d, UV unwrapping, texturing, rigging and skinning, fluid and smoke simulation, particle simulation, soft body simulation, animating, match moving, camera tracking, rendering, video editing and compositing. Blender juga memiliki sebuah fitur khusus yaitu sudah terdapat game engine di dalamnya. Sejarah Blender. Blender dikembangkan sebagai aplikasi in-house, yaitu aplikasi yang awalnya digunakan oleh beberapa orang saja untuk tujuan tertentu oleh studio animasi Belanda Neo Geo dan Not A Number Technologies (NaN). Blender diciptakan pertama kali oleh Ton Roosendaal, yang sebelumnya mengerjakan sebuah proyek sebuah pelacak sinar disebut "Traces for Amiga" pada tahun 1989. Nama "Blender" terinspirasi oleh sebuah lagu oleh Yello, dari album yang berjudul "Baby". Roosendaal mendirikan NaN pada tahun 1998 untuk lebih mengembangkan dan mendistribusikan program tersebut. Program ini awalnya didistribusikan sebagai shareware sampai NaN bangkrut pada tahun 2002. Para kreditur setuju untuk melepaskan Blender dibawah ketentuan dari GNU General Public License, untuk pembayaran satu kali sebesar € 100.000 (US $ 100.670 pada saat itu). Pada tanggal 18 Juli 2002, kampanye pendanaan Blender dimulai oleh Roosendaal dalam rangka untuk mengumpulkan sumbangan dan pada tanggal 7 September 2002 diumumkan bahwa dana yang cukup telah dikumpulkan dan bahwa kode sumber Blender akan digratiskan. Sekarang, penggunaan Blender adalah gratis, softwarenya telah menjadi open-source dan, terlepas dari dua karyawan part-time dan dua karyawan full-time dari Institut Blender, Blender dikembangkan oleh masyarakat luas. The Blender Foundation awalnya memiliki hak untuk menggunakan lisensi ganda, sehingga, selain GNU GPL, Blender memiliki "Blender Lisensi", yang tidak mempunyai source-code, berbentuk shareware, memerlukan pembayaran, tetapi pembayaran untuk source-code tersebut diperlukan untuk pengembangan di Blender Foundation itu sendiri. Namun, pilihan ini tidak pernah dilakukan dan dihentikan tanpa batas pada tahun 2005. Saat ini, Blender semata-mata tersedia di bawah GNU GPL dan merupakan open-source.
Pada bulan Januari-Februari 2002, saat itu cukup jelas bahwa NaN tidak bisa bertahan dan akan "gulung-tikar" pada bulan Maret. Namun demikian, mereka menemukan energi, sebuah gagasan untuk melakukan setidaknya satu rilis lagi: yaitu blender versi 2,25. Akhirnya para pengembang blender memutuskan untuk menambahkan model 3D dari simpanse. Hal tersebut diciptakan oleh Willem-Paul van Overbruggen (SLiD3), yang menamainya Suzanne. Suzanne adalah fitur alternatif Blender untuk membuat model seperti Utah Teapot (teko Utah) dan Stanford Bunny. Kelinci Stanford. Sebuah model low-poligon dengan hanya 500 permukaan poligon, Suzanne sering digunakan sebagai cara cepat dan mudah untuk menguji materi, animasi, rig, tekstur, dan setup pencahayaan, dan juga sering digunakan dalam gambar lelucon. Suzanne masih termasuk dalam Blender. Semacam maskot dalam Blender, Suzanne telah menjadi darah daging di dalm Blender. Sehingga kontes terbesar Blender pun memberikan penghargaan yang disebut Suzanne Awards.
Fitur Blender Blender memiliki ukuran instalasi yang relatif kecil, sekitar 70 megabyte dan 115 megabyte untuk rilis resminya. Versi resmi dari perangkat lunak yang dirilis untuk Linux, Mac OS X, Microsoft Windows, dan FreeBSD di kedua 32 dan 64 bit. Meskipun sering didistribusikan tanpa sample (preview),Blender adalah sebuah perangkat lunak yang berisi berbagai fitur ciri khas dari software high-end 3D grafik yang diantara nya adalah:
• Dukungan untuk berbagai primitif geometris, termasuk polygon, pemodelan subdivisi, permukaan cepat, kurva Bezier, NURBS permukaan, metaballs, dan lain - lain.
• Render mesin dilakukan internal, perenderan dilakukan dengan Blender itu sendiri, tidak membutuhkan aplikasi tambahan. Perenderan tersebut dapat dilakukan dengan berbagai macam algoritma, dengan scanline ray tracing, pencahayaan tidak langsung, dan oklusi ambien dan perenderan tersebut dapat mengekspor dalam berbagai format.
• Integrasi dengan sejumlah mesin render eksternal melalui plugin. Perenderan dapat dilakukan jika user ingin melakukan perenderan tanpa mesin render yang ada pada blender, hanya dengan menginstall plugin yang dibutuhkan.
• Simulasi alat untuk dinamika tubuh lembut termasuk tabrakan mesh, dinamika fluida, simulasi asap, dinamika benda tegar, generator laut dengan gelombang, dan berbagai simulasi lain terdapat dalam blender yang biasanya dibutuhkan dalam pembuatan animasi yang "real".
• Sebuah sistem partikel yang meliputi dukungan untuk partikel berbasis rambut.
• Python scripting untuk pembuatan alat dan prototyping, logika permainan, mengimpor dan / atau mengekspor dari format lain, otomatisasi tugas dan alat kustom.
• Dasar non-linear video / editing audio.
• Permainan Blender, sub-proyek, menawarkan fitur interaktivitas seperti deteksi tabrakan, mesin dinamika, dan programmable logic. Hal ini juga memungkinkan penciptaan berdiri sendiri, real-time aplikasi mulai dari visualisasi arsitektur untuk pembangunan video game.
• Prosedural dan simpul berbasis tekstur, serta lukisan tekstur, lukisan proyektif, lukisan titik, lukisan berat dan lukisan dinamis.
• Realtime kontrol selama simulasi fisika dan rendering.
• Kamera dan objek tracking.
User interface User Interface dalam penggunaan Blender mengalami perkembangan yang signifikan selama seri 2.5x.
Blender telah memiliki reputasi yang sangat sulit dalam penggunaan untuk belajar bagi pengguna yang terbiasa dengan software grafis 3D lainnya. Hampir setiap fungsi memiliki short-cut langsung dan bisa ada cara pintas yang berbeda per tombol. Sejak Blender menjadi perangkat lunak bebas, telah ada upaya untuk menambah menu kontekstual yang komprehensif serta membuat semua penggunaan fitur yang ada menjadi lebih efisien. Ada juga perkembangan yang telah meningkatkan upaya untuk visual user interface, dengan pengenalan tema warna, widget mengambang transparan, gambaran objek pohon baru dan lebih baik, dan perbaikan kecil lainnya (seperti widget color picker). Interface pengguna Blender menggabungkan konsep-konsep berikut:
• Edit Mode
Dua mode utama kerja adalah Obyek Mode dan Edit Mode, yang dapat difungsionalkan dengan tombol Tab. Modus objek digunakan untuk memanipulasi objek individu sebagai satu unit, sementara Edit Mode digunakan untuk memanipulasi data objek yang sebenarnya. Misalnya, Object Mode dapat digunakan untuk menggerakkan objek, membesar kecilkan objek, dan memutar polygon keseluruhan, sedangkan Edit Mode dapat digunakan untuk memanipulasi simpul individu mesh tunggal, yaitu mesh yang dipilih sebagai satu kesatuan. Ada juga modus lain beberapa, seperti Vertex Paint, Weight Paint, and Sculpt Mode. Untuk versi yang release 2.45 juga memiliki UV Mapping Mode, tetapi hal itu sudah termasuk ke dalam Edit Mode di versi 2.46.
• Pemanfaatan Hotkey (shortcut)
Sebagian besar perintah dapat diakses melalui hotkeys. Sampai versi 2.x, terutama pada versi 2.3x, ini sebenarnya satu-satunya cara untuk memberikan perintah yang memudahkan pengguna dalam penggunaan aplikasi Blender itu sendiri, dan ini berguna untuk menciptakan reputasi Blender sebagai sebuah program yang mudah-untuk-digunakan. Terlebih lagi, versi yang terbaru memiliki menu GUI yang lebih komprehensif dan efisien.
• Numeric Input
Tombol angka dapat "diseret" untuk mengubah nilai mereka secara langsung tanpa perlu untuk tujuan di sebuah widget tertentu, sehingga menghemat waktu. Kedua slider dan tombol angka dapat dibatasi untuk ukuran berbagai langkah dengan pengubah seperti Ctrl dan tombol Shift. Ekspresi python juga dapat mengetik langsung ke kolom entri nomor, memungkinkan ekspresi matematika yang akan digunakan untuk menentukan nilai. Jadi semisal ketika user ingin mengubah sesuatu yang memiliki unsur angka pada Blender, user tidak perlu mengklik keyboard atas dan bawah untuk mengubah nominalnya, cukup dengan "memblok" angka yang ingin dirubah, dan ketikkan nominal yang ingin dimasukkan pada tombol numerik yang ada pada keyboard user.
• Workspace manajemen
GUI Blender terdiri dari satu atau lebih layar, masing-masing dapat dibagi menjadi beberapa bagian dan subbagian yang dapat dari setiap jenis pandangan Blender. Tiap - tiap jendela GUI tersebut dapat dikontrol dengan alat yang sama yang memanipulasi tampilan 3D. Sebagai contoh, seseorang dapat memperbesar dan keluar dari GUI-tombol dengan cara yang sama yang memperbesar dan keluar di viewport 3D. Viewport GUI dan tata letak layar sepenuhnya disesuaikan sedemekian sehingga dapat memudahkan pengguna. Hal ini dimungkinkan untuk mengatur interface untuk tugas-tugas tertentu seperti editing video atau texturing dengan menyembunyikan fitur yang tidak digunakan.
Format file
Blender memiliki fitur sistem file internal yang memungkinkan seseorang untuk menyimpan hasil karya nya ke dalam beberapa sketsa ke dalam satu file (yang disebut "blend." File). Semua file yang berekstensi .blend adalah file yang dapat dimanipulasi, yang cross-platform (dapat di gunakan di hampir semua sistem operasi) yang kompatibel dengan blender versi - versi sebelumnya dengan pengecualian untuk versi setelah 2.5 tidak bisa dibuka oleh versi sebelum 2.5 (ini karena perubahan ulang sistem animasi yang diperkenalkan di Blender 2,5 menjadi inheren dan tidak kompatibel dengan versi lama). Snapshot ".blend" file dapat otomatis disimpan secara berkala oleh program, sehingga lebih mudah untuk menyimpan file, seandainya terjadi program crash. Semua adegan, benda, bahan, tekstur, suara, gambar, pasca-produksi efek untuk seluruh animasi dapat disimpan dalam satu file ".blend". Data diambil dari sumber-sumber eksternal, seperti gambar dan suara, juga dapat disimpan secara eksternal dan direferensikan baik melalui nama path absolut atau relatif. Konfigurasi interface disimpan pula menjadi satu dalam file ".blend", Sehingga apa yang Anda simpan adalah apa yang Anda dapatkan pada penggunaannya. File ini dapat disimpan sebagai "user- default" jadi ini konfigurasi layar, serta semua benda yang tersimpan di dalamnya, digunakan setiap kali Anda memuat Blender. Jadi misal seandainya anda bekerja di lebih dari satu komputer, sebut saja rumah dan kantor, konfigurasi file .blend yang anda buat dirumah, dalam kondisi apapun, dan berapapun jendela yang anda buka melalui program blender dirumah, ketika file tersebut disimpan dan kemudian anda buka kembali di kantor, seluruh konfigurasi atau "settingan" file anda, sama dengan konfigurasi program blender seperti yang anda buat dirumah. Namun, ketika anda membuat file .blend, misalnya anda membuat sebuah animasi orang bergerak, dan anda menamai nya "a.blend", ketika anda mengedit grafik tersebut, dan menekan tombol save untuk yang kedua kali, nama file tersebut akan berubah, menjadi "a.blend1","a.blend2" bergantung dari berapa kali anda melakukan perubahan pada file tersebut. Mengapa nama file nya berubah? Jelas, karena Blender menyimpan seluruh file, dan konfigurasi blender, jadi format ekstensi file tersebut juga seperti DNA. Sehingga tiap kali anda melakukan perubahan, format file tersebut berubah secara default. Untuk mencegah hal tersebut, anda dapat mengubah nya secara manual dengan menu "save as" dan melakukan pengubahan pada nama file di depan .blend nya. misal dari "a.blend" anda ubah menjadi "b.blend".
Perbandingan Blender dengan software 3D lainnya
Sebuah artikel 2007 menyatakan bahwa antarmuka Blender tidak sampai ke standar industri, tapi tetap cocok untuk alur kerja cepat dan kadang-kadang lebih intuitif. Penilaian tersebut merupakan kritikan untuk industri Blender dalam skala besar. Sehingga Blender dinilai lebih cocok untuk industri perkembangan animasi dalam skala kecil. Walaupun begitu, Blender adalah produk open-source yang dominan dengan berbagai fitur sebanding dengan perangkat lunak komersial kelas menengah hingga kelas tinggi sampai eksklusif. Pada tahun 2010, CGenie menilai Blender sebagai produk pemula dengan mayoritas yang tadinya pengguna telah menjadi "penggemar" dari pengguna mahasiswa sampai profesional dengan standar yang tinggi meningkat setiap tahun. Mereka juga melaporkan bahwa pengguna berpikir jika Blender diperlukan pengembangan yang lebih dan kompatibilitas yang lebih dibutuhkan dengan program lain. Hal ini membuktikan bahwa Blender tidak kalah jauh dengan produk pemrosesan grafik 3d yang berbayar. Pada tahun 2011, Blender 2,5 dirilis. Menampilkan interface pengguna yang sepenuhnya didesain ulang, hal ini bertujuan untuk meningkatkan alur kerja dan kemudahan penggunaan. Selama beta-testing, sistem pada Blender versi 2,5 animasi dianggap oleh animator Sintel untuk menjadi sama baiknya atau lebih baik dari beberapa paket produk komersial lain.
Media dan Komersil
Blender dimulai sebagai alat inhouse untuk sebuah perusahaan animasi Belanda komersial, NeoGeo. Blender telah digunakan untuk iklan televisi di beberapa bagian dunia, termasuk Australia, Islandia, Brasil, Rusia dan Swedia. Proyek profesional pertama besar yang digunakan Blender adalah Spider-Man 2, di mana ia terutama digunakan untuk membuat animatics dan pra-visualisasi untuk bagian storyboard. "Sebagai seorang seniman animatic bekerja di departemen storyboard of Spider-Man 2, saya menggunakan pemodelan 3D Blender dan alat karakter animasi untuk meningkatkan storyboard, menciptakan kembali set dan alat peraga, dan menempatkan ke dalam tindakan gerak dan kamera bergerak dalam ruang 3D untuk membantu membuat visi yang departemen lain jelas tak mungkin dapat melakukannya" Anthony Zierhut, Seniman Animator, Los Angeles.
Dalam penggunaan lain, Blender digunakan untuk pembuatan beberapa produk, misalnya :
• -Elephants Dream HD DVD cover
• -Big Buck Bunny poster
• -Sintel promotional poster
• -Tears of Steel promotional poster
pembuatan produk industri yang paling baru adalah pembuatan Tears of Steel, Pada 2 Oktober 2011, proyek film keempat terbuka, dengan nama kode "Mango", diumumkan oleh The Blender Foundation. Sebuah tim seniman itu harus dirakit dengan menggunakan panggilan yang familiar, Mango. Ini adalah film pertama blender terbuka untuk menggunakan live action serta CG.
Syuting untuk Mango dimulai pada tanggal 7 Mei 2012, dan film ini dirilis pada tanggal 26 September 2012. Seperti film sebelumnya, semua rekaman, adegan dan model dibuat tersedia di bawah lisensi isi bebas sesuai Creative Commons.
Tema film ini adalah tentang sekelompok prajurit dan ilmuwan, yang berkumpul di "Oude Kerk" di Amsterdam untuk menggelar acara penting dari masa lalu, dalam sebuah upaya putus asa untuk menyelamatkan dunia dari robot yang merusak. Film ini mengundang antusiasme berbagai kalangan, disamping karena temanya, dan juga dalam pembuatan animasi nya berbasis GNU.
Part III Program Aplikasi Yang di Gunakan
Implementasi Permodelan Poligon Pada bab – bab sebelumnya sudah dijelaskan tentang teori permodelan polygon, dan algoritma yang akan digunakan dalam permodelan polygon tersebut. Implementasi tentang polygon tersebut juga sudah dijelaskan pada bab dua, yaitu menggunakan aplikasi Blender. Untuk contoh permodelan polygon yang sederhana, kita dapat membuat contoh model pesawat. Mengapa pesawat? Permodelan polygon adalah permodelan yang memiliki dasar – dasar polygonal, dalam hal ini pesawat mewakili proses pembentukan dan manipulasi objek dasar polygon tersebut. Hasil yang akan tampak adalah seperti berikut.
Bagaimana ?
Terlihat bagus dan nyata, bukan? 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, terbentuk dalam bangun ruang bola yang telah dihasilkan dari proses Hidden Surface Removal. Pertama – tama, kita harus memiki aplikasi blender itu sendiri yang sudah terisntall di computer yang akan dipakai. Jika belum, maka bisa di download di www.blender.org/download . Setelah didownload, dan diinstall, jalankan program tersebut. Pada saat dijalankan, ada mesh kubus yang otomatis ada pada world.
Untuk membuat pesawat seperti hasil diatas, kita bisa menggunakan dua cara, yaitu dengan cara permodelan grafik user interface, atau dengan menggunakan source code pemrograman python itu sendiri. Memang, pada dasarnya semua permodelan grafis pasti memiliki bahasa pemrograman khusus untuk membentuk seluruh unsur didalamnya. Blender pun demikian, aplikasi blender ini – seperti yang telah dijelaskan di bab 2 – memiliki bahasa pemrograman penyusun, yaitu bahasa pemrograman python. Okay, untuk penjelasan awalnya, kita akan menggunakan permodelan berbasis user interface, yaitu dimana kita hanya cukup menggunakan tools - tools dan shortcut yang sudah disedikan oleh aplikasi blender. Untuk membuat model pesawat, bisa menggunakan mesh apapun, bergantung dari imaginasi sang animator, namun disini kita akan menggunakan mesh UV Sphere, maka kita hapus kubus yang sudah ada tersdebut, dengan menekan tombol delete pada keyboard, atau dengan menggunakan shortcut X. Kemudian, untuk menamnbahkan mesh, kita dapat menggunakan Toolbar Add dan kemudian pilih UV Sphere. Sedikit informasi tentang UV Sphere dan hubungan UV Sphere dengan permodelan polygon, pada aplikasi blender 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, kemudian pilih UV Sphere. Setelah ditambahkan, UV Sphere tersebut akan muncul ke dalam world blender. Seperti gambar di bawah.
Setelah itu, pesawat adalah sebuah objek yang memiliki bentuk memanjang, sehingga untuk menerapkan hal tersebut, dapat dengan menggunakan shortcut S+X/S+Y/S+Z bergantung dengan koordinat yang diinginkan. Namun, kita disini menggunakan shortcut S+Y. Kemudian, kita masuk ke dalam edit mode, untuk meng-edit mesh tersebut. Caranya, dengan mengklik tombol yang ada di sebelah kiri bawah atau dengan menekan shortcut tab.
Klik tombol tersebut sehingga kita masuk ke dalam keadaan edit mode, kemudian dengan menggunakan shortcut z, kita membuat objek tersebut hanya tampak edgenya saja.
Kemudian, sebuah pesawat pasti memiliki bentuk yang simetris, maka dari itu, cara agar objek tersebut simetris adalah dengan menggunakan konsep mirroring dalam blender. Konsep tersebut dapat diterapkan dengan cara membelah UV Sphere tersebut menjadi dua bagian yang sama. Cara membelah bola tersebut, masuk ke dalam tampak depan, lalu dengan menekan shortcut b, blok setengah bola tersebut, dan klik shortcut x untuk menghilangkan surface nya. Blender sudah mempersiapkan konsep mirroring , yaitu dengan cara meng-klik panel yang ada di sebelah kanan world yang bertuliskan modifier. Setelah itu klik add modifier dan pilih mirror, seperti tampak gambar di bawah ini.
Kemudian semuanya akan tampak seperti semula, namun ada perbedaan pada konsep mirroring tersebut, yaitu daerah yang sudah 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. Sebuah pesawat pasti memiliki sayap, untuk membuat sayap tersebut, dengan cara memblok surface yang ingin dijadikan sayap, lalu menekan shortcut e. Kemudian tarik hingga dicapai bentuk seperti sayap di bawah.
Untuk membuat sayap tersebut terlihat realistis, maka klik ujung depan vertexnya, kemudian tarik berdasarkan sumbu y (yang berwarna hijau).
Lakukan hal yang sama untuk membuat ekor pesawat.
Untuk menambahkan bentuk real dari motor pesawat tersebut, harus dibuat penyangga untuk menggantungkan motor tersebut dengan cara, memblok bagian yang ingin dibuat, kemudian menekan shortcut e , tarik ke bawah dan shortcut s untuk menguncupkan bentuk tersebut.
Buat roda pesawat tersebut, dengan silinder, klik shift+a, kemudian pilih cylinder. Atur ketebalan dan bentuk roda dengan menggunakan shortcut s (scale), dan untuk merotasikan nya dengan shortcut R. Kemudian untuk membuat lebih realistis, hilangkan tutup dan alas silinder tersebut.
Kemudian masuk ke dalam edit mode, pilih edge mode
Dan pilih bagian tepi dan alasnya kemudian alt+klik dan tekan shift untuk memblok kedua bagian tepi dan alasnya. Tekan shortcut e , tarik ke bawah dan shortcut s untuk menguncupkan bentuk tersebut, sehingga timbul bidang baru ke arah luar. Untuk membuat sebuah bidang baru di dalam bidang, dapat menambahkan bidang dengan menekan tombol ctrl+r.
Kemudian setelah kerangka roda tersebut telah jadi, duplikat kan roda tersebut dengan menekan tombol shift+d. kemudian pasang di kedua sisi penyangga roda yang telah dibuat sebelumnya sehingga masing – masing penyangga memiliki 2 buah roda di sisi nya. Kemudian untuk lebih membuat bentuk pesawat lebih aerodinamis dan tampak nyata, dapat ditambahkan subdivision surface dengan cara mengklik panel modifier dan menambahkan modifier subdivision surface.
Kemudian untuk menjadikan roda nya sebagai kesatuan dari objek pesawat, dapat menggunakan metode join, yaitu dengan memblok kedua buah objek kemudian menekan shortcut ctrl+j . Setelah roda selesai, maka tambahkan motor sebagai pelengkap model pesawat tersebut. Cara membuat nya cukup mudah, dengan metode yang sama seperti membuat roda, namun ditambahkan beberapa imajinasi kita, tambahkan beberapa perubahan di edit mode di beberapa vertex dan edge nya dengan menarik sumbu x, dan mengatur besar kecilnya motor tersebut. Kemudian setelah itu di duplikasikan seperti membuat roda sebelum ini. Jangan lupa untuk menjoin motor tersebut sehingga menjadi satu bagian dengan objek.
Kemudian tambahkan beberapa perubahan dengan metode yang telah diberitahukan tadi, 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.
Setelah semuanya selesai, tahap akhir dari pembuatan model grafik ini adalah dengan cara memberikan cahaya, dan pengaturan kamera
Implementasi Munggunakan Bahasa Pemograman Phyton
Setelah mengetahui tata cara mengimplementasikan penggunaan polygon modelling pada blender dengan menggunakan gui, ada satu cara lagi untuk mengimplementasikan nya, yaitu dengan menggunakan konsol pada blender. Tahap pengkodean konsol pada permodelan grafis dalam blender, tidak seperti pada permodelan grafis lainnya (contoh : GLUT). Pada permodelan ini, blender sudah 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))
Pertama – tama, buat UV Sphere, dengan rusuk yang vertical (segment) sebanyak 32 buah, kemudian rusuk horizontal (ring_count) sebanyak 16, size normal nya 1, view_align=False, enter_editmode=False – memasukkan uv sphere langsung ke dalam edit mode, sedangkan untuk code setelahnya adalah default untuk pengaturan tambahan lokasi, rotasi, dan layer di blender nya.
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)
pada saat memasuki edit mode, konsol ini digunakan untuk mengatur skala perbesar, dan memperkecil koordinat dari objek tersebut, dan jenis perbesaran axis dengan default (x,y,z).
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)
Kode diatas digunakan untuk mengubah ukuran objek dan mengubah sudut perspektif dari pengguna.
bpy.ops.object.editmode_toggle()
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')
kemudian setelah itu dilanjutkan dengan 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 tersebut.
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 value nya 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)
untuk 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 value nya 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})
ini syntax 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.
Part IV 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.
Part V Daftar Pustaka
Thabrani, Ir. Suryanto., dan Adjie, Ir. Bayu,. 2002. UNLIMITED MODELING ANIMASI MAYA 4.0. Jakarta : Salemba Infotek,
Santosa, Insap. 1994. GRAFIKA KOMPUTER DAN ANTARMUKA GRAFIS. YOGYAKARTA : ANDI OFFSET
Harrington, Steven. COMPUTER GRAPHICS : A PROGRAMMING APPROACH. New York : McGraw-Hill Book Company
http://www.wikipedia.com/blender tanggal akses : 21 Desember http://www.blender.org/documentation/blender_python_api_2_60_3/contents.html tanggal akses : 2 Januari 2013
Pangajow, Frank Albert. Serial GRAFIK dari FRANK. Jakarta : Dinastindo.
Part VI Kelompok 1
M Ridwan Dwi Septian
I Made Reza Divasa
Kunto Aris Nurcahyo
Parlin Erwin Gunawan
Nur Fadly Muhammad
Recent Comments