Scene graph merupakan inti dari Java3D yang merepresentasikan geometri, material dan pencahayaan. Scene graph dimulai dari root dengan sebuah VirtualUniverse dan mencakup transformasi serta geometri untuk mendefinisikan objek 3D. Berikut adalah gambaran dari scene graph.
Source : Frank Klawonn, Introduction to Computer Graphics (Using Java 2D and 3D).
Secara garis besar, ada tiga tahap fundamental yang diperlukan untuk membuat objek 3D.
1. Menciptakan objek Canvas3D
2. Menciptakan sebuah scene graph
3. Menghubungkan object Canvas3D ke objek BranchGroup yang merujuk pada root dari scene graph.
Untuk memulai membuat objek 3D di Java, kita harus terlebih dahulu menginstall API Java3D.
API Java3D dapat di download di https://www.dropbox.com/s/844188j1vdnn4ag/j3d-1_5_2-windows-i586.zip?dl=0
Setelah itu install Java3D, kemudian import library j3dcore.jar, j3dutils.jar, vecmath.jar yang ada di folder cd:\c\Program Files\Java\jre6\lib\ext.
Java3D adalah materi waktu kuliah dulu, walaupun sudah agak lama jadi saya akan coba sharing aja sekedar nostalgia biar ndak lupa hehehe…
Berikut adalah contoh source code untuk membuat object 3D dengan Java.
/** * * @author Wim Sonevel */ import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; import java.awt.*; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.swing.*; import javax.vecmath.Vector3f; public class HelloJava3D extends JApplet{ public HelloJava3D(){ setLayout(new BorderLayout()); GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas3D = new Canvas3D(config); add("Center",canvas3D); BranchGroup scene = createSceneGraph(); scene.compile(); SimpleUniverse su = new SimpleUniverse(canvas3D); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(scene); } BranchGroup createSceneGraph(){ BranchGroup objRoot = new BranchGroup(); Transform3D translate = new Transform3D(); translate.set(new Vector3f(0.0f, 0.0f, 0.0f)); Transform3D rotate = new Transform3D(); rotate.rotX(Math.PI / 4); TransformGroup kotak1 = new TransformGroup(rotate); ColorCube cube1 = new ColorCube(0.2f); kotak1.addChild(cube1); translate.set(new Vector3f(0.0f, 0.6f, 0.0f)); TransformGroup kotak2 = new TransformGroup(translate); ColorCube cube2 = new ColorCube(0.2f); kotak2.addChild(cube2); translate.set(new Vector3f(0.5f, 0.0f, 0.0f)); TransformGroup kotak3 = new TransformGroup(translate); ColorCube cube3 = new ColorCube(0.1f); kotak3.addChild(cube3); TransformGroup kotak = new TransformGroup(); kotak.addChild(kotak1); kotak.addChild(kotak2); kotak.addChild(kotak3); objRoot.addChild(kotak); return objRoot; } public static void main(String[] args) { Frame frame = new MainFrame(new HelloJava3D(), 600,600); frame.setLocationRelativeTo(null); } }
Kalau di jalankan maka hasilnya seperti berikut :
Sekian dan semoga bermanfaat.
Happy Coding :)
0 Komentar
Penulisan markup di komentar