/*------------*/ /* Ja63.java */ /*------------*/ import java.applet.Applet; import java.awt.*; //BorderLayout,GraphicsConfiguration,event import javax.media.j3d.*; //Java3d import com.sun.j3d.utils.applet.MainFrame; //MainFrame import com.sun.j3d.utils.universe.*; //SimpleUniverse import com.sun.j3d.utils.geometry.*; //Primitive import javax.vecmath.*; //Point3f,Color3f public class Ja63 extends Applet{ private SimpleUniverse simpleU; private BoundingSphere bounds = new BoundingSphere(new Point3d(), 10.0); public void init(){ //アプレットの中央にCanvas3Dを追加 setLayout(new BorderLayout()); Canvas3D canvas = new Canvas3D(SimpleUniverse.getPreferredConfiguration()); add(canvas, BorderLayout.CENTER); //シーングラフの生成 simpleU = new SimpleUniverse(canvas); simpleU.getViewingPlatform().setNominalViewingTransform(); //シーングラフの作成 simpleU.addBranchGraph(createSceneGraph()); } private BranchGroup createSceneGraph(){ BranchGroup branchG0 = new BranchGroup(); //背景色の設定(設定が無い場合は黒) Background background = new Background(new Color3f(0.3f, 0.3f, 0.3f)); background.setApplicationBounds(bounds); branchG0.addChild(background); //光源を追加 branchG0.addChild(createDirectionalLight()); //Appearanceを作成 Appearance ap = new Appearance(); Material ma = new Material(); //Materialを作成 ma.setDiffuseColor(new Color3f( 1.0f, 0.0f, 0.0f)); //拡散反射 ma.setSpecularColor(new Color3f( 0.5f, 0.5f, 0.5f)); //鏡面反射 ma.setAmbientColor(new Color3f( 0.2f, 0.2f, 0.2f)); //環境光反射 ma.setShininess(64.0f); //鏡面反射の鋭さ ap.setMaterial(ma); //原点に物体を作成 Sphere sphere = new Sphere(0.5f, Primitive.GENERATE_NORMALS, 100, ap); branchG0.addChild(sphere); branchG0.compile(); return branchG0; } //平行光源を作成する private Light createDirectionalLight(){ DirectionalLight lightD = new DirectionalLight(); //デフォルトの平行光源 lightD.setInfluencingBounds(bounds); //光が影響する範囲 return lightD; } public void destroy(){ simpleU.cleanup(); } public static void main(String[] args){ //Application MainFrame frame = new MainFrame(new Ja63(), 512, 512); } }