Skip to main content

Membuat Obyek Rumah

Tugas Grafika Komputer kali ini adalah membuat gambar rumah menggunakan OpenGL di python. Gambarnya seperti berikut:


Disini saya akan menjelaskan sedikit tentang apasih Grafika Komputer itu.
Grafika Komputer adalah bagian ilmu komputer yang berkaita dengan pembuatan dan manipulasi gambar (visual) secara digital. Bentuk sederhana dari grafika komputer adalah grafika komputer 2D yang kemudian berkembang menjadi grafika komputer 3D, pemrosesan citra(image processing), dan pengenalan pola dengan istilah visualisasi data.
OpenGL(Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah lintas-bahasa, lintas platform API untuk mengembangkan aplikasi yang menghasilkan grafis komputer 2D maupun 3D.Dalam meletakkan suatu objek pada layer diperlukan pengetahuan tentang sistem koordinat.
Software yang diperlukan:
1. IDLE Python 3.8.2(IDLE)
Download Library Phyton:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl
Library Pyhton Yang Digunakan :

1. PyOpenGL_accelerate-3.1.5-cp38-cp38-win32.whl

2. PyOpenGL-3.1.5-cp38-cp38-win32.whl

(Jika Pyhton yang digunakan adalah pyhton 32 bit, maka Download library yang sesuai dengan bit python pada perangkat masing- masing. Begitu juga sebaliknya jika Pyhton 64 bit).
Fungsi-fungsi source coude menggunakan OpenGL:
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
->fungsi diatas digunakan untuk mengaktifkan fungsi fungsi grafik yang telah disediakan oleh OpenGL
glClear(GL_COLOR_BUFFER_BIT) -> digunakan untuk membersihkan layer latar belakang
glColor3f(1, 1, 1) -> digunakan untuk menentukan warna garis/titik
glutInitWindowSize(500x500) -> digunakan untuk mengatur ukuran kanvas
glutCrateWindow("Rumah") -> digunakan untuk memberi nama windows jika program di RUN
glutOrtho2D(-18.0, 18.0, -18.0, 18.0) -> digunakan untuk mengukur sistem kordinat
glutDisplayFunc(display) -> digunakan untuk menampilkan semua perintah grafis yang ada di fungsi.
glEnd() -> digunakan untuk menentukan titik akhir
glFlush() -> digunakan untuk menggambar ke layar
Berikut ini SOURCECODE membuat gambar rumah:
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def init():
    glClearColor(0.0, 0.0, 0.0, 0.0)
    gluOrtho2D(-18.0, 18.0, -18.0, 18.0)
def ploting():
    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-1.0, 11.5)
    glVertex2f(1.0, 11.5)
    glVertex2f(1.0, 12.0)
    glVertex2f(-1.0, 12.0)
    glVertex2f(-1.0,11.5)
    glEnd()
    glFlush()
#pintu
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-3.0, 2.0)
    glVertex2f(3.0, 2.0)
    glVertex2f(3.0, -2.0)
    glVertex2f(-3.0, -2.0)
    glVertex2f(-3.0, 2.0)
    glEnd()
    glFlush()
#lanjutan pintu
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-3.0, 3.0)
    glVertex2f(-3.0, 4.0)
    glVertex2f(3.0, 4.0)
    glVertex2f(3.0, 3.0)
    glVertex2f(-3.0,3.0)
    glEnd()
    glFlush()
#tralis
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-4.0, 3.0)
    glVertex2f(4.0, 3.0)
    glVertex2f(4.0, 2.0)
    glVertex2f(-4.0, 2.0)
    glVertex2f(-4.0,3.0)
    glEnd()
    glFlush()
#tembok
    glColor3f(0.5, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-10.0, 7.0)
    glVertex2f(10.0, 7.0)
    glVertex2f(10.0, -2.0)
    glVertex2f(-10.0, -2.0)
    glVertex2f(-10.0,7.0)
    glEnd()
    glFlush()
 #pondasi
    glColor3f(0.5, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-12, -2.0)
    glVertex2f(12.0, -2.0)
    glVertex2f(12.0, -5.0)
    glVertex2f(-12.0, -5.0)
    glVertex2f(-12.0,-2.0)
    glEnd()
    glFlush()

#tangga 1   
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(4.0, -2.0)
    glVertex2f(4.0, -3.0)
    glVertex2f(-4.0, -3.0)
    glVertex2f(-4.0, -2.0)
    glVertex2f(4.0,-2.0)
    glEnd()
    glFlush()

#tangga 2
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(5, -3.0)
    glVertex2f(5.0, -4.0)
    glVertex2f(-5.0, -4.0)
    glVertex2f(-5.0, -3.0)
    glVertex2f(5.0,-3.0)
    glEnd()
    glFlush()

#tangga 3
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(6, -4.0)
    glVertex2f(6.0, -5.0)
    glVertex2f(-6.0, -5.0)
    glVertex2f(-6.0, -4.0)
    glVertex2f(6.0,-4.0)
    glEnd()
    glFlush()

#atap
    glColor3f(0.5, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-8, 7.0)
    glVertex2f(-12, 7.0)
    glVertex2f(-11.0, 12.0)
    glVertex2f(-3.0, 12.0)
    glVertex2f(-8.0, 7.0)
    glVertex2f(8.0,7.0)
    glVertex2f(3.0, 12.0)
    glVertex2f(11, 12.0)
    glVertex2f(12, 7.0)
    glVertex2f(8.0, 7.0)
    glEnd()
    glFlush()

#segitiga atap
    glColor3f(0.5, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(3.0, 12.0)
    glVertex2f(0.0, 15.0)
    glVertex2f(-3.0, 12.0)
    glEnd()
    glFlush()    
#Atap
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-1.0, 11.0)
    glVertex2f(1.0, 11.0)
    glVertex2f(1.0, 8.0)
    glVertex2f(-1.0, 8.0)
    glVertex2f(-1.0,11.0)
    glEnd()
    glFlush()

    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-1.0, 9.5)
    glVertex2f(-0.5, 9.5)
    glVertex2f(-0.5, 8.0)
    glVertex2f(-1.0, 8.0)
    glVertex2f(-1.0,9.5)
    glEnd()
    glFlush()

    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-1.0, 11)
    glVertex2f(-0.5, 11)
    glVertex2f(-0.5, 9.5)
    glVertex2f(-1.0, 9.5)
    glVertex2f(-1.0,11)
    glEnd()
    glFlush()

    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(1.0, 9.5)
    glVertex2f(0.5, 9.5)
    glVertex2f(0.5, 8.0)
    glVertex2f(1.0, 8.0)
    glVertex2f(1.0,9.5)
    glEnd()
    glFlush()

    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(1.0, 11)
    glVertex2f(0.5, 11)
    glVertex2f(0.5, 9.5)
    glVertex2f(1.0, 9.5)
    glVertex2f(1.0,11)
    glEnd()
    glFlush()

#kotak jendela kanan
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(6.0, 4.0)
    glVertex2f(9.0, 4.0)
    glVertex2f(9.0, 0.0)
    glVertex2f(6.0, 0.0)
    glVertex2f(6.0,4.0)
    glEnd()
    glFlush()
#isi jendela kanan 1
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(6.0, 4.0)
    glVertex2f(7.0, 4.0)
    glVertex2f(7.0, 2.0)
    glVertex2f(6.0, 2.0)
    glVertex2f(6.0,4.0)
    glEnd()
    glFlush()

#isi jendela kanan 2
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(6.0, 0.0)
    glVertex2f(7.0, 0.0)
    glVertex2f(7.0, 2.0)
    glVertex2f(6.0, 2.0)
    glVertex2f(6.0,0.0)
    glEnd()
    glFlush()

#isi jendela 3
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(8.0, 2.0)
    glVertex2f(9.0, 2.0)
    glVertex2f(9.0, 0.0)
    glVertex2f(8.0, 0.0)
    glVertex2f(8.0,2.0)
    glEnd()
    glFlush()

#isi jendela kanan 4
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(8.0, 4.0)
    glVertex2f(9.0, 4.0)
    glVertex2f(9.0, 2.0)
    glVertex2f(8.0, 2.0)
    glVertex2f(8.0,4.0)
    glEnd()
    glFlush()

#kotak jendela kiri
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-6.0, 4.0)
    glVertex2f(-9.0, 4.0)
    glVertex2f(-9.0, 0.0)
    glVertex2f(-6.0, 0.0)
    glVertex2f(-6.0,4.0)
    glEnd()
    glFlush()
#isi jendela kiri 1
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-6.0, 4.0)
    glVertex2f(-7.0, 4.0)
    glVertex2f(-7.0, 2.0)
    glVertex2f(-6.0, 2.0)
    glVertex2f(-6.0,4.0)
    glEnd()
    glFlush()

#isi jendela kiri 2
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-6.0, 0.0)
    glVertex2f(-7.0, 0.0)
    glVertex2f(-7.0, 2.0)
    glVertex2f(-6.0, 2.0)
    glVertex2f(-6.0,0.0)
    glEnd()
    glFlush()

#isi jendela kiri 3
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-8.0, 2.0)
    glVertex2f(-9.0, 2.0)
    glVertex2f(-9.0, 0.0)
    glVertex2f(-8.0, 0.0)
    glVertex2f(-8.0,2.0)
    glEnd()
    glFlush()

#isi jendela kiri 4
    glColor3f(0.0, 0.5, 0.5)
    glBegin(GL_LINE_STRIP)
    glVertex2f(-8.0, 4.0)
    glVertex2f(-9.0, 4.0)
    glVertex2f(-9.0, 2.0)
    glVertex2f(-8.0, 2.0)
    glVertex2f(-8.0,4.0)
    glEnd()
    glFlush()
def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB)
    glutInitWindowSize(800,800)
    glutInitWindowPosition(10,10)
    glutCreateWindow("Rumah")
    glutDisplayFunc(ploting)
    

    init()
    glutMainLoop()
main()

Ketika program dijalankan maka akan menghasilkan keluaran objek seperti dibawah ini.



semoga bermanfaat bagi yang sedang belajar OpenGL ataupun yang mengerjakan tugas OpenGL. Terimakasih :)

Comments

Popular posts from this blog

Membentuk bentuk Piramida 3D menggunakan PyOpenGL

Pada postingan ini saya akan membuat bentuk piramida 3D menggunakan PyOpenGL Source Code: 1. Buat fungsi import modul from OpenGL.GL import* from OpenGL.GLU import:* from OpenGL.GLUT import* 2. Membuat variabel untuk mengatur sisi piramida_a dan sisi piramida_b. Kemudian mengatur latar belakang warna dan membuat ordo 2D piramida_a = 0 piramida_b = 0       def init():     glClearColor(0.,0.,0.,0.)     glEnable(GL_DEPTH_TEST)     gluOrtho2D(-20.0, 20.0, -20.0, 20.0) 3. Membuat fungsi myDisplay untuk membuat beberapa bagian piramid yaitu bagian bawah, bagian depan, bagian kiri, bagian kanan dan bagian belakang def myDisplay():     global piramida_a, piramida_b     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)     glMatrixMode(GL_MODELVIEW)     glLoadIdentity()     glTranslatef(0, 0, -5.0);     glRotatef( piramida_a, 1.0, 0.0, 0.0 )   ...

Membuat bentuk Matahari dengan PyOpenGL

Software yang digunakan: IDLE Pyhton 3.8.2 (IDLE) 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(-500.0, 500.0, -500.0, 500.0) # untuk membuat matahari kita akan gunakan bentuk segitiga yang di rotaasi sebanyak 18 kali dengan jarak sudut tiap rotasi sebanyak 20 derajat. def plotpoints():     glColor3f(1.,1.0,0.)     for i in range(0,19):         s = 20         glRotatef(s, 0.0, 0.0,1.0)         segitiga()            glFlush() # fungsi untuk membuat bentuk segitiga def segitiga():     glBegin(GL_TRIANGLES)     glVertex2f(-50.0,0.0)     glVertex2f(50.0,0.0)     glVertex2f(0.0,200.0)     glEnd() NOTE: Jika ingin bentuk segitiga bergaris gunakan GL_LINE_LOOP Jika ingin bentuk segitiga yang ada isi...

Membuat Lingkaran Dengan Algoritma Bresenham

                      Lingkaran adalah kumpulan dari titik-titik yang memiliki jarak dari titik  pusat yang sama untuk semua titik.   Lingkaran dibuat dengan  menggambarkan seperempat lingkaran, karena bagian lain dapat dibuat  sebagai bagian yang simetris. Penambahan x dapat dilakukan dari 0 ke r  sebesar unit step, yaitu menambahkan ± y untuk setiap step.  Pada dasarnya, mirip dengan penggambaran garis, algoritma  penggambaran lingkaran pun berusaha mencari solusi optimal sedemikian  rupa sehingga lingkaran yang dibentuk adalah sesempurna mungkin. Software yang diperlukan : 1. IDLE Pyhton 3.7  (IDLE) Dibawah ini Import Library Pada Python 3.7  : from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * Link Download Library Python : https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl Pilih Library Pyhton Yang Di bawah ini : 1. PyOpe...