import java.awt.*;
import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.picking.PickTool;
import com.sun.j3d.utils.picking.behaviors.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class objek extends Applet {
public objek() {
}
public static void main(String[] args) {
MainFrame mf = new MainFrame(new objek(), 600, 200);
mf.setResizable(false);
mf.setTitle("Objek 3D --> Gunakan mouse untuk memutar
objek");
}
public void init() {
setLayout(new BorderLayout());
GraphicsConfiguration config
=SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
add("Center", c);
x = new SimpleUniverse(c);
BranchGroup scene = tampil_objek(c);
x.getViewingPlatform().setNominalViewingTransform();
x.addBranchGraph(scene);
}
public void destroy() {
x.cleanup();
}
private SimpleUniverse x = null;
public BranchGroup tampil_objek(Canvas3D canvas) {
Color3f colorX =
new Color3f(0.0f, 0.0f, 0.0f);
Color3f colorY =
new Color3f(1.0f, 1.0f, 1.0f);
Color3f warna_teks =
new Color3f(0.5f, 0.5f, 0.5f);
Color3f colorXx =
new Color3f(0.9f, 0.9f, 0.9f);
Color3f ColorYy =
new Color3f(0.0f, 0.0f, 0.0f);
Color3f colorXY =
new Color3f(0.5f, 0.5f, 0.5f);
Color3f warna_latar
= new Color3f(0.2f, 0.04f,0.44f);
Transform3D objek_transform;
BranchGroup dimensi = new BranchGroup();
TransformGroup ukuran = new TransformGroup();
Transform3D tiga_dimensi = new Transform3D();
Material objek_material = new Material(warna_teks, colorX,
warna_teks, colorY, 100.0f);
Appearance tampilan = new Appearance();
objek_material.setLightingEnable(true);
tampilan.setMaterial(objek_material);
tiga_dimensi.setScale(0.3);
ukuran.setTransform(tiga_dimensi);
dimensi.addChild(ukuran);
BoundingSphere sudut =new BoundingSphere(new
Point3d(0.0,0.0,0.0), 100.0);
Background latar = new Background(warna_latar);
latar.setApplicationBounds(sudut);
ukuran.addChild(latar);
Light cahaya1;
Light cahaya2;
Font3D font_teks = new Font3D(new Font("Arial
Black", Font.ITALIC, 1),new FontExtrusion());
Text3D teks_3D = new Text3D(font_teks, new
String("Maxikom"),new Point3f(-2.5f, -0.3f, 0.0f));
Shape3D objk_3D = new Shape3D();
objk_3D.setGeometry(teks_3D);
objk_3D.setAppearance(tampilan);
TransformGroup trnsform = new TransformGroup();
trnsform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
trnsform.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
trnsform.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
trnsform.addChild(objk_3D);
ukuran.addChild(trnsform);
objek_transform = new Transform3D();
Vector3d vektor = new
Vector3d(0.0, 0.0, 2.0);
objek_transform.set(vektor);
TransformGroup transformasi = new TransformGroup(objek_transform);
transformasi.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transformasi.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
transformasi.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
ukuran.addChild(transformasi);
objek_transform = new Transform3D();
Vector3d vektor2 = new Vector3d(0.5, 0.8, 2.0);
objek_transform.set(vektor2);
TransformGroup transformasi_2 = new
TransformGroup(objek_transform);
transformasi_2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
transformasi_2.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
transformasi_2.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
ukuran.addChild(transformasi_2);
ColoringAttributes set_warna = new ColoringAttributes();
ColoringAttributes set_warna2 = new ColoringAttributes();
set_warna.setColor(colorXx);
set_warna2.setColor(ColorYy);
Appearance tampilan1 = new Appearance();
Appearance tampilan2 = new Appearance();
tampilan1.setColoringAttributes(set_warna);
tampilan2.setColoringAttributes(set_warna2);
AmbientLight set_cahaya = new AmbientLight(colorXY);
Point3f titik1 = new
Point3f(1.0f, 0.0f, 2.0f);
Point3f titik2 = new Point3f(1.0f, 0.0f, 0.0f);
cahaya1 = new PointLight(colorXx, titik1, titik2);
cahaya2 = new PointLight(ColorYy, titik1, titik2);
set_cahaya.setInfluencingBounds(sudut);
cahaya1.setInfluencingBounds(sudut);
cahaya2.setInfluencingBounds(sudut);
ukuran.addChild(set_cahaya);
transformasi.addChild(cahaya1);
transformasi_2.addChild(cahaya2);
PickRotateBehavior properti =new PickRotateBehavior(dimensi,
canvas, sudut);
properti.setMode(PickTool.BOUNDS);
dimensi.addChild(properti);
PickZoomBehavior properti2 =new PickZoomBehavior(dimensi,
canvas, sudut);
properti2.setMode(PickTool.BOUNDS);
dimensi.addChild(properti2);
PickTranslateBehavior properti3 =new
PickTranslateBehavior(dimensi, canvas, sudut);
properti3.setMode(PickTool.BOUNDS);
dimensi.addChild(properti3);
dimensi.compile();
return dimensi;
}
}
Tidak ada komentar:
Posting Komentar