Langsung ke konten utama

Menggambar Rumah Menggunakan Python OpenGL

Halo semua, di postingan pertama ini, saya akan menjelaskan tentang bagaimana membuat gambar Rumah Sederhana menggunakan Python OpenGL. Disini perangkat yang digunakan adalah Python versi 3.7.1 dan Visual Studio Code.
Berikut codenya :

1. Import Modul OpenGL

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

2. Menyiapkan Lembar Kerja


def init():
    glClearColor(0.0, 0.0, 0.0, 0.0)
    gluOrtho2D(-100.0, 100.0, -100.0, 100.0)
    

3. Menuliskan Titik Koordinat Gambar

def ploting():
    glClear(GL_COLOR_BUFFER_BIT)

# jendela 1
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(60, 10)
    glVertex(45, 10)
    glVertex(45, 40)
    glVertex(60, 40)
    
    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(61, 10)
    glVertex(44, 10)
    glVertex(44, 41)
    glVertex(61, 41)
    
    glEnd()
    glFlush()

# jendela 2
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(-30, 20)
    glVertex(-20, 20)
    glVertex(-20, 35)
    glVertex(-30, 35)
    
    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(-31, 20)
    glVertex(-19, 20)
    glVertex(-19, 36)
    glVertex(-31, 36)
    
    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINES)
    glVertex(-25.0, 20.0)
    glVertex(-25.0, 35)
    glVertex(-20.0, 27.5)
    glVertex(-30, 27.5)
    
    glEnd()
    glFlush()


 # Kotak Rumah
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(-50, 0)
    glVertex(70, 0)
    glVertex(70, 50)
    glVertex(-50, 50)
    
    glEnd()
    glFlush()

# pintu
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(0, 2)
    glVertex(15, 2)
    glVertex(15, 40)
    glVertex(0, 40)
    
    glEnd()
    glFlush()

# modif
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(2, 12)
    glVertex(13, 12)
    glVertex(13, 38)
    glVertex(2, 38)
    
    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(2, 4)
    glVertex(6, 4)
    glVertex(6, 10)
    glVertex(2, 10)
    
    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINE_LOOP)
    glVertex(9, 4)
    glVertex(13, 4)
    glVertex(13, 10)
    glVertex(9, 10)
    
    glEnd()
    glFlush()

# samping rumah
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_POLYGON)
    glVertex(-60, 10)
    glVertex(-50, 0)
    glVertex(-50, 50)
    glVertex(-60, 50)
    
    glEnd()
    glFlush()

# Atap
    glColor3f(1, 0, 0)
    glBegin(GL_POLYGON)
    glVertex(-65, 50)
    glVertex(75, 50)
    glVertex(30, 80)
    glVertex(-20, 80)
    
    glEnd()
    glFlush()

# tangga
    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINES)
    glVertex(-50.0, 2)
    glVertex(0, 2)

    glEnd()
    glFlush()

    glColor3f(1, 0.7, 0.2)
    glBegin(GL_LINES)
    glVertex(15, 2)
    glVertex(70, 2)
    
    glEnd()
    glFlush()
    

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(800,800)
    glutInitWindowPosition(10,10)
    glutCreateWindow("Rumah")
    glutDisplayFunc(ploting)
    
Ket :
def rumah() berisikan syntax untuk menggambar bagian-bagian rumah.
glClear() = digunakan untuk membersihkan layar.
glColor3f() = digunakan untuk memberi warna pada objek.
glBegin() = digunakan untuk memulai menggambar sebuah objek seperti persegi, titik, garis, poligon, dll.
glVertex() = digunakan untuk menunjukkan di titik koordinat yang mana objek dalam gambar.
glEnd() = digunakan untuk mengakhiri gambar sebuah objek.

4. Deklarasi Syntax


def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(800,800)
    glutInitWindowPosition(10,10)
    glutCreateWindow("Rumah fadlan")
    glutDisplayFunc(ploting)
    

    init()
    glutMainLoop()
main()
Ket : 
glutInit() = untuk membuat windows
glutInitDisplayMode() = untuk inisalisasi window OpenGL
glutInitWindowSize() = untuk mengatur ukuran window
glutInitWindowPosition() = untuk mengatur posisi window muncul
glutCreateWindow() = untuk memberi nama pada window
glutDisplayFunc(rumah) = untuk memanggil perintah yang sudah kita buat yaitu rumah
glutMainLoop() = untuk melakukan Looping
Dan berikut adalah tampilan output dari code-code diatas :

Sekian dan Terima Kasih.






Komentar

Postingan populer dari blog ini

Membuat Lingkaran Menggunakan Algoritma Bresenham

Hai semua, kembali lagi dengan saya, kali ini saya akan memberitahu tentang bagaimana cara membuat lingkaran menggunakan algoritma Bresenham. Nah disini saya beri langkah-langkah beserta contoh source code. Langkah-langkah : 1. Menetapkan titik tengah (x_center, y_center) 2. Menetapkan jari-jari r 3. Menetapkan nilai x = 0, y = r 4. Menetepkan nilai parameter keputusan d = 3 – (2 * r) 5. Gambar titik awal dengan koordinat (x_center+x, y_center+y) 6. x = x+1 7. Jika d < 0, maka nilai d baru d = d + (4*x) + 6, jika tidak nilai d baru d =     d + 4 * (x – y) + 10 dan y = y-1 8. Gambar titik berikutnya dengan koordinat (x_center+x, y_center+y) 9. Jika x < = y ulangi langkah 6 sampai 8 Contoh Source Code : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def init(): glClearColor(0.0, 0.0, 0.0, 0.0) gluOrtho2D(-100.0, 100.0, -100.0, 100.0) glBegin(GL_POINTS) glPointSize(5) def plot(x, y): glV...

Event Handling Mouse dan Keyboard pada PyOpenGL

Hai teman-teman, kali ini saya akan memberi contoh penerapan Event Handling pada Mouse dan Keyboard. Langsung simak saja ya. OpenGL menyediakan fungsi yang didefinisikan oleh user dan dipanggil pada saat ada event yang bersesuaian. OpenGL memonitor peralatan input, ketika ada sesuatu yang terjadi,misalkan saat mouse down , key press , dan lain-lain. Pada OpenGL terdapat fungsi Callback GLUT, yaitu fungsi yang berjalan saat ada kejadian (event-driven). Program-program yang menggunakan window untuk input/output,menunggu sampai ada kejadian dan kemudian mengeksekusi beberapa fungsi yang didefinisikan sebelumnya berdasarkan input dari user. Kejadian yang dimaksud : key press, mouse button press dan release, window resize , dan lain-lain. Program OpenGL yang dibuat akan berjalan tak terbatas ( infinite loop ). EVENT KEYBOARD glutKeyboardFunc(nama_fungsi) def nama_fungsi(key, x, y) Fungsi ini mencatat apa yang terjadi ketika sebuah tombol keyboard di tekan. Parameter key me...

Event Handling pada Mouse & Keyboard dengan Font & Text pada PyOpenGL

Hai semua, kembali lagi bersama saya, kali ini saya akan memberikan contoh penerapan  Event Handling pada Mouse & Keyboard dengan Font & Text pada PyOpenGL.  Untuk menjalankan program font & text, diperlukan Library OpenGLContext, PyVRML97, dan Pillow. Ketiga library ini harus sudah ter- install sebelumnya. Simak penjelasan berikut. 1. Tambahkan library OpenGLContext from OpenGLContext import testingcontext from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * 2.  Buat variable public # Koordinat x dan y untuk posisi kotak pos_x = 0 pos_y = 0 # Warna Kotak merah = 0 hijau = 0 biru = 0 # Teks Warna Objek warna_objek = "Hitam" # Teks Warna Background warna_background = "Hitam" 3.  Buat fungsi drawBitmapText(), reshape(), dan drawText untuk memproyeksikan teks pada window def drawBitmapText(string,x,y,z) : glRasterPos3f(x,y,z) for c in string : glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24,ord(c)) de...