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
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
Post a Comment