65
Display.setFullscreenfalse; Display.setTitleTugas 2 Dimensi;
Display.create; OpenGL
initGL; resizeGL;
} void initGL {
glClearColor0.0f, 1.0f, 1.0f, 1.0f; glDisableGL_DEPTH_TEST;
glDisableGL_LIGHTING; }
public void resizeGL { glViewport0, 0, DISPLAY_WIDTH, DISPLAY_HEIGHT;
glMatrixModeGL_PROJECTION; glLoadIdentity;
gluOrtho2D0.0f, DISPLAY_WIDTH, 0.0f, DISPLAY_HEIGHT; glPushMatrix;
glMatrixModeGL_MODELVIEW; glLoadIdentity;
glPushMatrix; }
public void run { while Display.isCloseRequested
Keyboard.isKeyDownKeyboard.KEY_ESCAPE { if Display.isVisible {
update; render;
} else { if Display.isDirty {
render; }
try { Thread.sleep100;
} catch InterruptedException ex { }
}
66
Display.update; Display.sync60;
} }
private void update { }
public void destroy { Mouse.destroy;
Keyboard.destroy; Display.destroy;
} public static void mainString[] args {
Tugas2D b1 = new Tugas2D; try {
b1.create; b1.run;
} catch LWJGLException ex { Logger.getLoggerTugas2D.class.getName.logLevel.SEVERE,
null, ex; }
} }
67
68
69
PEMODELAN OBJEK 3 DIMENSI
Pembuatan Objek 3 Dimensi
Setelah mengikuti kegiatan belajar 5 ini peserta diklat diharapkan dapat : 1.
Melalui diskusi peserta diklat dapat menganalisis sistem koordinat 3 dimensi dan pembuatan objek 3 dimensi
2. Melalui praktikum peserta diklat dapat membuat kode program untuk
melakukakan operasi transformasi pada objek 3 dimensi.
1. Memahami sistem koordinat dan struktur objek 3 dimensi
2. Menulis kode program untuk memodelkan objek 3 dimensi melalui proses
translasi, penskalaan, dan rotasi.
Pembeda objek 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan sebagai jarak antara viewer terhadap benda yang dia lihat.
Ini berarti berbeda dengan 2 dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi menggunakan 3 ukuran, yaitu
panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut disimbolkan dengan sumbu x, y, dan z.
1. Sistem Koordinat
Salah satu sistem koordinat yang dikenal adalah sistem koordinat kartesian yang digunakan untuk membedakan lokasi atau posisi
sembarang titik atau objek dengan titik atau objek yang lain. Sistem koordinat kartesian terdiri atas sistem koordinat kartesian 2 dimensi dan
sistem koordinat kartesian 3 dimensi.Dalam sistem koordinat 3 dimensi terdapat satu sumbu lain selain sumbu x dan sumbu y, yaitu sumbu z yang
arahnya tegak lurus terhadap sumbu x dan sumbu y. Hadirnya sumbu z
A. Tujuan Pembelajaran
B. Indikator Pencapaian Kompetensi
C. Uraian Materi
70 menyebabkan sistem koordinat ini menjadi lebih hidup karena efek jauh
dekat. Untuk lebih jelasnya, lihat pada gambar di bawah ini :
Gambar 6 Koordinat
2. Pemodelan Objek 3 Dimensi
Benda tiga dimensi disusun dari sekumpulan surface. Gambar di bawah memberikan contoh bagaimana surface digunakan untuk menyusun benda
tiga dimensi.
Gambar 7 Surface Surface dapat dibuat dari rangkaian Polygon. Polygon adalah bentuk yang
disusun dari serangkaian garis yang terhubung satu dengan yang lain dan berbentuk kurva tertutup sehingga membentuk sebuah objek gambar.
Titik sudut dari Polygon disebut vertex sedangkan garis penyusun Polygon disebut edge.
Gambar 8 Vertex dan Edge
71 Polygon digambar dengan menggambar masing-masing edge dengan
setiap edge merupakan pasangan dari vertex – vertex kecuali
untuk edge terakhir merupakan pasangan dari vertex – vertex . Bentuk polygon yang paling tepat digunakan untuk membuat
permukaan benda tiga dimensii adalah polygon segitiga triangle. Hal ini disebabkan polygon segitiga akan selalu berada dalam keadaan
planar datar sementara polygon dengan vertex lebih dari 3 dapat berada dalam kondisi non-planar karena salah satu vertex tidak berada
di lokasi yang sejajar. Satu hal yang harus diperhatikan pada saat menggunakan polygon segitiga adalah winding. Winding adalah urutan
dan arah vertex-vertex penyusun polygon. Winding menganggap bahwa arah vertex berlawanan jarum jam sebagai tampak depan
sedangkan arah vertex searah jarum jam dianggap sebagai bagian belakang benda.
Pembuatan kode program untuk pembuatan objek 3 dimensi dirancang dengan melibatkan beberapa file java untuk memudahkan dalam pengaturan dan operasi
transformasi geometri. Beberapa file pendukung akan disertakan dalam lampiran.
Kegiatan Praktikum 5.1
Keluaran Program
D. Aktivitas Pembelajaran
72 Perancangan class diagram
73 CfgApplication.java
import static org.lwjgl.opengl.GL11.; import static org.lwjgl.util.glu.GLU.;
import java.awt.Font; import org.lwjgl.LWJGLException;
import org.lwjgl.Sys; import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode;
public abstract class CfgApplication { protected long lastFrame;
protected int fps; protected long last;
protected String windowTitle = ; protected int width;
protected int height; protected boolean fullscreen;
protected boolean vsync; public final int DEFAULT_FONT_SIZE = 14;
protected boolean showFPS; protected int oldfps;
protected int activeFontTextureId; public void startint width, int height, boolean fullscreen,
boolean vsync, boolean showFPS, String windowTitle {
this.windowTitle = windowTitle; this.height = height;
this.width = width; this.fullscreen = fullscreen;
this.vsync = vsync; this.showFPS = showFPS;
try {
74
createWindow; init;
while Display.isCloseRequested Keyboard.isKeyDownKeyboard.KEY_ESCAPE
{ render;
Display.update; }
deinit; Display.destroy;
} catch Exception e { e.printStackTrace;
System.exit0; }
} public abstract void render;
public abstract void deinit; private void createWindow throws LWJGLException {
Display.setTitlewindowTitle; Display.setFullscreenfullscreen;
Display.setVSyncEnabledvsync; DisplayMode displayMode = null;
DisplayMode d[] = Display.getAvailableDisplayModes; for int i = 0; i d.length; i++ {
if d[i].getWidth == width d[i].getHeight == height d[i].getBitsPerPixel == 32 {
displayMode = d[i]; break;
} }
Display.setDisplayModedisplayMode; Display.create;
} private void setOrthoMode {
glViewport0, 0, width, height; glMatrixModeGL_PROJECTION;
glPushMatrix; glLoadIdentity;
gluOrtho2D0, width, height, 0; glMatrixModeGL_MODELVIEW;
glPushMatrix; glLoadIdentity;
} private void unsetOrthoMode {
glPopMatrix; glMatrixModeGL_PROJECTION;
glPopMatrix; glMatrixModeGL_MODELVIEW;
} public abstract void init;
}
PrimitiveDrawing3D.java
import static org.lwjgl.opengl.GL11.; import static org.lwjgl.util.glu.GLU.;
import org.lwjgl.input.Keyboard;
75
import setting.CGApplication; public class PrimitiveDrawing3D extends CGApplication {
private boolean wireframe = false; private boolean pressed = false;
Override public void init {
} Override
public void updateint delta {
toggleWireframe; }
public void toggleWireframe { if Keyboard.isKeyDownKeyboard.KEY_R {
if pressed { wireframe = wireframe;
pressed = true; }
} else { pressed = false;
} }
Override public void render {
glViewport0, 0, width, height; glMatrixModeGL_PROJECTION;
glLoadIdentity; gluPerspective45.0f, width height, 1.0f, 100.0f;
glClearGL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT; glClearColor0.0f, 0.0f, 0.0f, 0.0f;
if wireframe { glPolygonModeGL_FRONT_AND_BACK, GL_LINE;
} else { glPolygonModeGL_FRONT_AND_BACK, GL_FILL;
} glBeginGL_TRIANGLES;
4-side of pyramid glColor3f0.0f, 1.0f, 0.0f;
glVertex3f-2, -2, -10; glVertex3f2, -2, -10;
glVertex3f0, 4, -12;
glColor3f0.0f, 1.0f, 1.0f; glVertex3f2, -2, -10;
glVertex3f2, -2, -14; glVertex3f0, 4, -12;
glColor3f1.0f, 1.0f, 0.0f; glVertex3f2, -2, -14;
glVertex3f-2, -2, -14; glVertex3f0, 4, -12;
glColor3f0.0f, 0.0f, 1.0f;
76
glVertex3f-2, -2, -10; glVertex3f-2, -2, -14;
glVertex3f0, 4, -12;
Bottom of pyramid glColor3f1.0f, 0.0f, 0.0f;
glVertex3f-2, -2, -10; glVertex3f2, -2, -10;
glVertex3f-2, -2, -14;
glColor3f1.0f, 0.0f, 0.5f; glVertex3f2, -2, -10;
glVertex3f2, -2, -14; glVertex3f-2, -2, -14;
glEnd; renderText;
} private void renderText {
drawString180, height - 25 , Primitive Drawing : 4-Sisi Piramid Triangles.;
drawString200,height-35 getDefaultFont.getLineHeight,
Tekann R untuk Gambar Rangka;
} Override
public void deinit { }
public static void mainString[] args { PrimitiveDrawing3D app = new PrimitiveDrawing3D;
app.start800, 600, false, false, true, 3D Primitives;
} }
1. Untuk menggambarkan translasi suatu objek berupa segitiga dengan koordinat A3,4 B2,1 dan C4,1 dengan tx,ty2,5, tentukan koordinat yang
barunya ?
E. Latihan Tugas
77 2. Untuk menggambarkan skala suatu objek berupa segempat dengan
koordinat A5,2 B2,2 C2,4 dan D5,4 dengan skala faktor 1,2 tentukan koordinat yang barunya ?
Pembeda objek 2 dimensi dan 3 dimensi adalah kedalaman. Kedalaman didefinisikan sebagai jarak antara viewer terhadap benda yang dia lihat. Ini
berarti berbeda dengan 2 dimensi yang hanya menggunakan 2 ukuran, yaitu panjang dan lebar, maka 3 dimensi menggunakan 3 ukuran, yaitu
panjang, lebar dan kedalaman. Secara geometri ketiga ukuran tersebut disimbolkan dengan sumbu x, y, dan z.
Sebuah benda tiga dimensi dapat disusun dengan menghubungkan sejumlah vertex. Kumpulan vertex yang saling terhubung tersebut disebut sebagai
wireframe atau kerangka, sedangkan benda yang disusun dari kumpulan titik dan permukaan tersebut disebut sebagai mesh.
Transformasi pada dunia 3 dimensi, pada dasarnya sama dengan transformasi pada 2 dimensi, hanya pada 3 dimensi kita juga memperhitungkan sumbu
F. Rangkuman
78 Z. Sama seperti pada 2 dimensi, ada tiga transformasi dasar yang dapat
dilakukan yaitu translasi, penskalaan, rotasi. Perbedaannya adalah pada objek 3 dimensi proses transformasinya dilakukan dengan
mempertimbangkan koordinat yang merupakan besarnya kedalaman dari objek.
Jawaban no 1
A = 3,4 B = 2,1
C = 2,5 Vektor V = 2,5
Rumus : x’ = x + tx
ta y’ = y + ty
A = 3,4 V = 2,5
X’ = x + tx = 3 + 2 = 5
Y’ = y + ty = 4 + 5 = 9
A’ = 5,9 B = 2,1
V = 2,5 X’ = x + tx
= 2 + 2 = 4 Y’ = y + ty
= 1 + 5 = 6 B’ = 4,6
C = 4,1 V = 2,5
X’ = x + tx = 4 + 2 = 6
Y’ = y + ty = 1 + 5 = 6
C’ = 6,6 Dengan demikian hasil translasi
segitiga dengan
koordinat A’5,9 B’4,6
C’6,6. Segitiga yang baru sama bentuknya dengan
segitiga yang lama. Berikut gambar translasi setelah perhitungan
G. Kunci Jawaban
79
Jawaban no 2
A = 5,2 B = 2,2
C = 2,4 D = 5,4
Skala faktor = 1,2 Rumus: x’ = x . sx
y’ = y . sy
A = 5,2 Skala faktor = 1,2
X’ = X . Sx = 5 . 1 = 5
Y’ = Y. Sy = 2 . 2 = 4
A’ = 5,4 C = 2,4
Skala faktor = 1,2 X’ = X . Sx
= 2 . 1 = 2 Y’ = Y. Sy
= 4 . 2 = 8 C’ = 2,8
B = 2,2 Skala faktor = 1,2
X’ = X . Sx = 2 . 1 = 2
Y’ = Y. Sy = 2 . 2 = 4
B’ = 2,4 D = 5,4
Skala faktor = 1,2 X’ = X . Sx
= 5 . 1 = 5 Y’ = Y. Sy
= 4 . 2 = 8 D’ = 5,8
Dengan demikian hasil skala persegi panjang dengan koordinat A’ = 5,4, B’ = 2,4, C = 2,8, D = 5,8. Persegi panjang yang baru sama bentuknya dengan
persegi panjang yang lama.Berikut gamabar koordinat setelah proses rotasi.