オブジェクト指向言語論 第十三回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
オブジェクト指向 言語 論 第八回 知能情報学部 新田直也. 多相性(最も単純な例) class A { void m() { System.out.println( “ this is class A ” ); } } class A1 extends A { void m() { System.out.println(
Advertisements

Computer graphics 入門 VRML を使用したCG. 2 1.1 Computer の歴史 (1)自動計算システム ブール代数(1854年)+2進法 +スイッチ回路 ⇒ 1940年後半 (2)プログラム内臓式 computer (現在の もの) 集合論(1895年、カントール)+ ラッセルのパラドックス+ヒルベルトの.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
ソフトウェア工学 理工学部 情報システム工学科 新田直也. 演習問題 1 の解答例  入庫処理の DFD 酒屋の在庫問題の DFD( 入庫処理 ) 更新情報 在庫ファイル 更新処理 倉庫係 在庫不足リスト 在庫ファイル 出庫指示書 新規出庫 判定 出庫指示書 作成処理 出庫依頼 積荷票.
情報システムプロジェクト I 第2回 FileScanner.java ~ファイル入力、文字切り出し機能を持つ プログラムの作成~
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
班紹介 描画班一同.
形状を平行移動や回転移動させて位置を変えたり,拡大・縮小して変形させる方法を説明する.
第3回 スプライトと音楽 05A1030 佐々木和也.
WWW上の3次元空間表現 A three-dimesional space expression on WWW
プログラミングIII演習 第1回目.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
プログラミング演習3 第2回 GUIの復習.
リアル卓球 B2 Ryo.
ソフトウェア工学 知能情報学部 新田直也.
3D散歩ゲーム 08A2043 谷口盛海 種田研究室.
Computer Graphics 第3回 座標変換 芝浦工業大学情報工学科 青木 義満
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
OpenGLライブラリを用いた3次元フラクタルの描画
プログラミング演習3 第2回 GUIの復習.
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
Minoのブロック配置のデータ構造 K.Yonezawa.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
データ構造と アルゴリズム 第六回 知能情報学部 新田直也.
SURF+BoFによる特定物体認識 卒業研究1 1 11/27/11.
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
Flashを用いたゲーム制作 05A1304 鈴木 浩高.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第8回放送授業.
コンピュータグラフィックス 実習3: 光線追跡法
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向プログラミング クラス 継承
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
地理情報システム論 第4回 コンピュータシステムおける データ表現(2)
プログラミング言語論 第十四回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
オブジェクト指向言語論 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
ソフトウェア工学 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第十三回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
Presentation transcript:

オブジェクト指向言語論 第十三回 知能情報学部 新田直也

Java3D(1) Java用の3次元グラフィックスライブラリ http://java.sun.com/javase/technologies/desktop/java3d/ SUNが開発 既存の3次元グラフィックスAPI(OpenGLまたはDirectX)の上で動作 比較的容易に使える

Java3D (2) 3次元物体を木構造で管理する(シーングラフ) … Head UpperArmL LowerArmL UpperLegL LowerLegL UpperLegR LowerLegR LowerArmR UpperArmR ArmL LegL Body ArmR LegR Character Head Body ArmR ArmL UpperArmR LowerArmR …

Java3Dの主要クラス SimpleUniverse: 描画対象となる3Dの世界全体 BranchGroup: シーングラフの根(SimpleUniverseの下にぶら下げる) TransformGroup: 回転・移動行列 (シーングラフ内に配置する) Box: 直方体 Sphere: 球 Cylinder: 円柱 Cone: 円錐

SimpleUniverseの作成 Canvas3Dを引数に持つコンストラクタで生成: GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); SimpleUniverse universe = new SimpleUniverse(canvas);

シーングラフの構築 BranchGroupの下にぶら下げる: 木構造の構築 SimpleUniverse universe = new SimpleUniverse(canvas); BranchGroup sceneGraph = new BranchGroup(); TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); Box box = new Box(); objTrans.addChild(box); sceneGraph.addChild(objTrans); universe.addBranchGraph(sceneGraph); 木構造の構築

Java3Dの座標系 モニターに対して手前方向がZ軸の正の方向 Y モニター X Z

サンプルプログラム Frame3D: Java3Dの画像を表示できるようにしたウィンドウ(JFrameを拡張) Main: メインクラス、Frame3Dを生成して表示する

サンプルプログラムの主要部分 SimpleUniverseの作成 シーングラフの作成 描画の準備 GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration(); Canvas3D canvas = new Canvas3D(config); SimpleUniverse universe = new SimpleUniverse(canvas); BranchGroup sceneGraph = new BranchGroup(); DirectionalLight light = new DirectionalLight( true,  new Color3f(1.0f, 1.0f, 1.0f), new Vector3f(0.0f, -0.5f, -1.0f)); light.setInfluencingBounds(new BoundingSphere(new Point3d(), 100.0)); TransformGroup objTrans = new TransformGroup(); objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); Cone cone = new Cone(0.4f, 0.6f); sceneGraph.addChild(objTrans); sceneGraph.addChild(light); objTrans.addChild(cone); universe.addBranchGraph(sceneGraph); universe.getViewingPlatform().setNominalViewingTransform(); Container contentPane = getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(canvas, BorderLayout.CENTER); setBounds( 10, 10, 240, 240); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); シーングラフの作成 描画の準備

図形の移動 TransformGroupを使って,下位の図形を移動: Transform3D moveTranslation = new Transform3D(); Vector3d v = new Vector3d(2.0, 0.0, -5.0); // 移動ベクトル moveTranslation.set(v); objTrans.setTransform(moveTranslation);

図形の回転 TransformGroupを使って,下位の図形を回転: Transform3D rotTranslation = new Transform3D(); rotTranslation.rotY(Math.PI / 4); // Y軸周りに回転 objTrans.setTransform(rotTranslation);

図形の拡大縮小 TransformGroupを使って,下位の図形を拡縮: Transform3D scaleTranslation = new Transform3D(); Vector3d v = new Vector3d(2.0, 1.0, 0.5); // 拡縮ベクトル scaleTranslation.setScale(v); objTrans.setTransform(scaleTranslation);

参考になるサイト Java3D入門: http://www7.plala.or.jp/keny01/java3d/index.html