2000年7月12日更新(新規作成)
  関谷トップページへ CGトップページへ   作者へのメッセージ

図形処理・計算処理実習No.12 Javaでのグラフィックス(7)中山第10章 Java3D

2000.07.12 KPC 情報技術科  関谷

1. 前回のJavaグラフィックス(6)の復習とコメント

 第9回からは、テキストのJavaプログラムでの例題のファイル(サーバにコピーしたもの)を紹介した。index.htmlファイルで目次ページになっているので、Javaでの実行画面例とjavaソースリストが見れる。今回までは、これを参照しながら、学習していく。

第8章 Java2D

 Java2Dとは、AWTの機能を向上させて、とくにグラフィックスやテキスト、画像を、より効果的に表現し、2Dグラフィックスや2Dイメージ操作を向上させたもので、Java2のコアAPIに組み込まれている。

 サンプルのプログラムの動作を確認したら、ソースプログラムを改造して、タイトル(プログラム名や作成者名,年月日など)を表示したり、ファイル名を表示したりして、何をどうしているのかを説明するものを追加すること。
 Rドライブ(ファイルサーバ)の\Archive\java2igpフォルダに、G1.javaからG23.javaまでの例(およびclass)を、実行すると共に、参考にして改造やappletへの変更をする。

1.6 前回の実習とWebレポートへのコメント

 Java2Dのプログラム機能とその構造を考察すること。(アフィン変換など、便利に使える)
 そして、第8章のJavaプログラムの改造をする。あるいは、逆の順序でも良いが。

 アプリケーションからアプレットプログラムへの変換は、少し,面倒ではあるが、慣れて欲しい。
(アプリケーションとアプレットとを共用にしなければ、簡単になる。)

 皆さんのWebページのアップロードが未完であるので、残念である。今日は、Java3Dを最初に学習するが、アプレットへの変更課題はなしとする。集中実習まえの最後の週なので、これまでの整理をしてほしい。  

2.今日の学習-Javaでのグラフィックス(7) 第10章 Java3D

 Java3Dは、3次元グラフィックスや3次元アプレット、3次元ロゴを作成し、仮想空間を構築するためのAPIである。  Java2DはJava2のコアAPIに組み込まれていたが、Java3Dは拡張APIとして提供されている。

(注)Java3Dの実行環境など:(Java 3DTM 1.2 API )Java3DのWindows98版java3d1.2をダウンロードして、ファイルサーバのRドライブのArchive\Java3Dフォルダにコピーしている。それの自己解凍を同じくR:\jdk1.2.2フォルダにしている。ここの環境を使って、コンパイルなどを行う。
 なお、この環境を使って、コンパイルjavacを実行済みのGraphicsI?.classファイルも、R:Archive\java2igpフォルダにコピーしている。従って、R:\jdk1.2.2へのpathを設定すれば、Java3Dのアプリケーションが実行javaできる。
 もし、javaで実行しても、エラーになるときには、ランタイム環境R:\jdk1.2.2フォルダのJavaTM 2 Runtime Environment の Win32 版(jre-1_2_2_005-win-i.exe) をダブルクリックして、ローカルのc:\にインストールのこと。
 アプレットに変換しても、ブラウザのJava Plug-inを使うようにhtmlファイルを変換したりする必要がある。詳細はJavaTM Runtime Environmentおよび Java Plug-inのダウンロードなどを参照のこと。

10.1 Java3Dとは

10.1.1 Java3Dの特徴

 VRMLに似ているが、Javaでは直接的に制御できる。
 標準的な低水準のAPI(OpenGL, Direct3D, QuickDraw3Dなど)を参考にして、シーン・グラフを基礎とした技術である。シーン・グラフとは、3次元空間での全幾何図形や属性、視点情報(ノードと呼ばれる)を含み、仮想宇宙を完全に記述できるように構成されたデータベースである。Java3Dは、木構造のノードに基づいたシーン・グラフを形成する。

 

10.2 はじめてのJava3Dプログラミング

実行の環境

 画面のイメージとソースリストは、ファイルサーバR:\Archiveにあるjava2igpフォルダのindex.htmlを開けば、ブラウザで一覧できる。
 同じフォルダにソース(*.java)とバイトコード(*.class)を用意している。アプリケーションプログラムの実行(対話処理)は、java クラス名である。

例GraphicsI1.java、Java3Dで球を描く

10.3 インタラクティブなJava3Dプログラミング

例GraphicsI2.java、インタラクティブなJava3D

 マウスの1ボタン(左)で回転、3ボタン(右)で並進、2ボタン(中央)で遠近ができる。ただし、マウスによっては、2が無い。

例GraphicsI3.java、螺旋模様の遠近

 マウスの2ボタン(中央)で遠近ができる。ただし、マウスによっては、2が無いので、そのマウスでは遠近が出来ない。

3 実習課題とレポート

テキスト10章の解説を読み、例題を(コンパイルし、)実行してみる。
それらの中で、皆さんの興味を持った例を解析し、改造しなさい。
 レポートには、それらの中から、考察を行い、ハイパーリンクのこと。

注 Appletへの変換と実行

 今回分Java3Dアプリケーションプログラムのappletへの変更は、元々Appletから派生させたクラスGraphicsI?にmain()メソッドを使っているので、そのメソッドmain()を削除し、コンストラクタGraphicsI?()をメソッドvoid init()に変更することで簡単にできる。
 アプレットプログラムの起動は、htmlファイルを作り、appletviewerで実行できる。しかし、ブラウザIE5.0ではエラー(exception:java.lang.ClassNotFoundException:com.sun.j3d.utils.universe.SimpleUniverse)になる。
 現在のブラウザでは、前述したようにサンのPlug-inを使う必要があり、htmlの変換とJREのインストールが必要である。(ブラウザのPlug-inについては、関谷はテスト中。)