package framework.test; import java.awt.Component; import java.util.ArrayList; import javax.media.j3d.Appearance; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Clip; import javax.media.j3d.ColoringAttributes; import javax.media.j3d.DirectionalLight; import javax.media.j3d.IndexedTriangleArray; import javax.media.j3d.Material; import javax.media.j3d.Node; import javax.media.j3d.Transform3D; import javax.vecmath.Color3f; import javax.vecmath.Point3d; import javax.vecmath.Vector3d; import javax.vecmath.Vector3f; import fight3D.Stage; import fight3D.StageManager; import framework.RWT.RWTFrame3D; import framework.RWT.RWTCanvas3D; import framework.model3D.BaseObject3D; import framework.model3D.Model3D; import framework.model3D.ModelFactory; import framework.model3D.Object3D; import framework.model3D.Position3D; import framework.model3D.Quaternion3D; import framework.model3D.Universe; import framework.physics.AngularVelocity3D; import framework.physics.Force3D; import framework.physics.Ground; import framework.physics.PhysicalSystem; import framework.physics.Solid3D; import framework.view3D.Camera3D; public class TestObject { private Object3D object; public TestObject() { // フレームの構成 RWTFrame3D frame = new RWTFrame3D(); RWTCanvas3D canvas = new RWTCanvas3D(); frame.add(canvas); // 世界の作成 Universe universe = new Universe(); // ライトの設定 DirectionalLight light = new DirectionalLight(true, new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(0.0f, -1.0f, -0.1f)); light.setInfluencingBounds(new BoundingSphere(new Point3d(), 50000.0)); universe.placeLight(light); frame.setSize(720, 480); frame.setVisible(true); // ステージの設定 IndexedTriangleArray groundGeometry = new IndexedTriangleArray(4, IndexedTriangleArray.COORDINATES | IndexedTriangleArray.NORMALS, 6); groundGeometry.setCoordinate(0, new Point3d(-10.0, 0.0, -10.0)); groundGeometry.setCoordinate(1, new Point3d(10.0, 0.0, -10.0)); groundGeometry.setCoordinate(2, new Point3d(10.0, 0.0, 10.0)); groundGeometry.setCoordinate(3, new Point3d(-10.0, 0.0, 10.0)); groundGeometry.setNormal(0, new Vector3f(0.0f, 1.0f, 0.0f)); groundGeometry.setNormal(1, new Vector3f(0.0f, 1.0f, 0.0f)); groundGeometry.setNormal(2, new Vector3f(0.0f, 1.0f, 0.0f)); groundGeometry.setNormal(3, new Vector3f(0.0f, 1.0f, 0.0f)); groundGeometry.setCoordinateIndices(0, new int[]{0, 3, 2}); groundGeometry.setCoordinateIndices(3, new int[]{0, 2, 1}); Appearance ap2 = new Appearance(); Material m = new Material(); m.setDiffuseColor(1.0f, 1.0f, 1.0f); m.setAmbientColor(0.5f, 0.5f, 0.5f); m.setSpecularColor(0.0f, 0.0f, 0.0f); m.setShininess(1.0f); ap2.setMaterial(m); ap2.setColoringAttributes(new ColoringAttributes(0.5f, 0.5f, 0.5f, ColoringAttributes.NICEST)); BaseObject3D stageObject = new BaseObject3D(groundGeometry, ap2); Ground stageGround = new Ground(stageObject); universe.place(stageGround); // オブジェクトの設定 Model3D model = ModelFactory.loadModel("data\\cubeBlue.3ds"); // 3Dモデルファイルの読み込み object = model.createObject(); // オブジェクトを1つ生成 universe.place(object); // 世界に配置 // カメラの設定 Camera3D camera = new Camera3D(universe); canvas.attachCamera(camera); camera.addTarget(object); Position3D viewPoint = new Position3D(0.0, 10.0, -50.0); camera.setViewPoint(viewPoint); camera.adjust(0); // 表示 universe.compile(); } public void start() { // オブジェクトの運動 for (;;) { try { Thread.sleep(1); Position3D p = new Position3D(0.0, 0.0, 0.0); object.apply(p, false); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { TestObject test = new TestObject(); test.start(); } }