Sangat disayangkan, materi yang diberikan oleh dosen sangat terbatas.
Mulai dari proses instalasi openGL, cara membuat objek, operasi-operasi matrix, textures, pencahayaan semua harus di’ulik’ sendiri.
Untungnya ada ‘mbah gugel’, akhirnya jadi juga, walau tampangnya agak “horor” karena full menggunakan wireframe (belum sempat ngulik textures and lighting).


Berikut isi method displaynya:
//kepala
gl.glPushMatrix();//save current matrix
gl.glScalef(1.0f, 1.0f, 0.4f); //untuk mengubah ukuran benda
glut.glutWireCube(1.0f);//wireframe kubus dengan ukuran 1
gl.glPopMatrix();//pop biar reset
//baju
gl.glPushMatrix();
gl.glTranslatef(0.0f, -0.58f, 0.0f);//mentranslate titik koordinat start
gl.glScalef(1.0f, 0.15f, 0.4f);
gl.glColor3d(1.0, 1.0, 1.0);
glut.glutWireCube(1.0f);
gl.glPopMatrix();
//celana
gl.glPushMatrix();
gl.glTranslatef(0.0f, -0.73f, 0.0f);// -0.58-0.15=-0.73
gl.glScalef(1.0f, 0.15f, 0.4f);
gl.glColor3d(1.0, 0.0, 0.0);
glut.glutWireCube(1.0f);
gl.glPopMatrix();
//celana kiri
gl.glPushMatrix();
gl.glTranslatef(-0.2f, -0.84f, 0.0f);// -0.73-0.15=-0.88
gl.glRotatef(90, 1.0f, 0.0f, 0.0f);
gl.glColor3d(1.0, 0.0, 0.0);
glut.glutWireCylinder(0.1, 0.05, 10, 10);
gl.glPopMatrix();
//celanan kanan
gl.glPushMatrix();
gl.glTranslatef(0.2f, -0.84f, 0.0f);// -0.73-0.15=-0.88
gl.glRotatef(90, 1.0f, 0.0f, 0.0f);
gl.glColor3d(1.0, 0.0, 0.0);
glut.glutWireCylinder(0.1, 0.05, 10, 10);
gl.glPopMatrix();
//kaki kiri
gl.glPushMatrix();
gl.glTranslatef(-0.2f, -0.84f, 0.0f);// -0.73-0.15=-0.88
gl.glRotatef(90, 1.0f, 0.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 0.0);
glut.glutWireCylinder(0.02, 0.5, 5, 5);
gl.glPopMatrix();
//kakikanan
gl.glPushMatrix();
gl.glTranslatef(0.2f, -0.84f, 0.0f);// -0.73-0.15=-0.88
gl.glRotatef(90, 1.0f, 0.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 0.0);
glut.glutWireCylinder(0.02, 0.5, 5, 5);
gl.glPopMatrix();
//lengan baju kiri
gl.glPushMatrix();
gl.glTranslatef(-0.5f, -0.2f, 0.0f);
gl.glRotatef(90, 0.0f, -1.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 1.0);
glut.glutWireCone(0.1, 0.3, 10, 10);
gl.glPopMatrix();
//lengan baju kanan
gl.glPushMatrix();
gl.glTranslatef(0.5f, -0.2f, 0.0f);
gl.glRotatef(90, 0.0f, 1.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 1.0);
glut.glutWireCone(0.1, 0.3, 10, 10);
gl.glPopMatrix();
//lengan kiri
gl.glPushMatrix();
gl.glTranslatef(-0.5f, -0.2f, 0.0f);
gl.glRotatef(90, 0.0f, -1.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 0.0);
glut.glutWireCylinder(0.02, 1, 5, 5);
gl.glPopMatrix();
//lengan kanan
gl.glPushMatrix();
gl.glTranslatef(0.5f, -0.2f, 0.0f);
gl.glRotatef(90, 0.0f, 1.0f, 0.0f);
gl.glColor3d(1.0, 1.0, 0.0);
glut.glutWireCylinder(0.02, 1, 5, 5);
gl.glPopMatrix();
//mata kiri
gl.glPushMatrix();
gl.glTranslatef(-0.2f, 0.0f, 0.2f);
gl.glScalef(1.0f, 1.0f, 0.4f);
gl.glColor3d(0.5, 0.7, 1.0);
glut.glutWireSphere(0.2, 10, 10);
gl.glPopMatrix();
//mata kanan
gl.glPushMatrix();
gl.glTranslatef(0.2f, 0.0f, 0.2f);
gl.glScalef(1.0f, 1.0f, 0.4f);
gl.glColor3d(0.5, 0.7, 1.0);
glut.glutWireSphere(0.2, 10, 10);
gl.glPopMatrix();
//hidung
gl.glPushMatrix();
gl.glTranslatef(0.0f, -0.15f, 0.26f);
gl.glScalef(1.0f, 1.0f, 1.5f);
gl.glColor3d(1.0, 1.0, 0.0);
glut.glutWireSphere(0.06, 10, 10);
gl.glPopMatrix();
//mulut
gl.glPushMatrix();
gl.glTranslatef(0.0f, -0.35f, 0.2f);
gl.glScalef(3.5f, 1.0f, 0.0f);
gl.glColor3d(1.0, 0.0, 0.0);
glut.glutWireSphere(0.06, 10, 10);
gl.glPopMatrix();
//gigi kiri
gl.glPushMatrix();
gl.glTranslatef(-0.04f, -0.34f, 0.2f);
gl.glScalef(0.8f, 1.1f, 0.5f);
gl.glColor3d(1.0, 1.0, 1.0);
glut.glutWireCube(0.08f);
gl.glPopMatrix();
//gigi kanan
gl.glPushMatrix();
gl.glTranslatef(0.04f, -0.34f, 0.2f);
gl.glScalef(0.8f, 1.1f, 0.5f);
gl.glColor3d(1.0, 1.0, 1.0);
glut.glutWireCube(0.08f);
gl.glPopMatrix();
gl.glFlush();