1.2 の新機能


Java3D 1.2 の新機能についての概要です。

新機能について / 新機能 / 戻る / トップページ


新機能について

1.2 の新機能についての概要です。 β2 からの仕様の変更はないようです。 当然、バグ修正はされています。
 
1.1 からの変更点は下の「新機能」をご覧下さい。 β2 からの細かい修正点は次の通りです。
 
全てのデモプログラムに example.html と example_plugin.html が用意されました。 これらは Java Plug-in を使ってブラウザで実行するためのものです。 また、それらにリンクを貼った demo/java3d/index.html も追加されています。
 
1.1 の時と同様、 ユーティリティークラスとそのソースファイルが含まれていますが、 1.1 の時と同様に今後変更される可能性はあります。
 
標準では SimpleUniverse クラスはステレオレンダリングを行う GraphicsConfiguration オブジェクトを受け入れません。 これを有効にするには
    java -Dj3d.stereo=PREFERRED MyProgram
のようにして、プロパティーの設定をすれば可能です。

新機能

1.1 から 1.2 になり、追加・変更された API 仕様です。
 
非互換の変更
 
Deprecated API の除去
Java3D 1.1 で "Deprecated" 表記されていた メソッド・フィールド・コンストラクタが除去されます。
 
new Canvas3D(null) でワーニング
良くない慣習であるため new Canvas3D(null) はワーニングが表示されるようになっています。 代わりに new Canvas3D(SimpleUniverse.getPreferredConfiguration()) などとします。
 
新しいレンダリング機能
 
オフスクリーンレンダリング
レンダリング対象を ImageComponent2D オブジェクトに 変更することが出来るメソッドが Canvas3D クラスに追加されました。 これでオフスクリーンレンダリングが可能になりました。
 
OrientedShape3D クラス
視点に対して常に同じ向きを見せる Shape3D である OrientedShape3D クラスが追加されました。 behavior である Billboard とは異なり、 OrientedShape3D は葉ノードなので SharedGroup ノードの下にぶら下げたりできます。
 
Canvas3D 用の Graphics2D
Canvas3D オブジェクトに Java2D, AWT 描画するための Graphics2D クラスが用意されました。 これで Canvas3D に 2D の描画が出来るようになりました。
 
新しい幾何・テクスチャ機能
 
複数の Geometry からなる Shape3D
Shape3D ノードはいままで 1 つの Geometry から構成されていましたが、 複数の Geometry からなる Shape3D ノードも指定出来るようになります。
 
Geometry への参照渡し
Geometry オブジェクトを構成する頂点座標や色情報を 設定・取得する際に参照渡しが出来るようになりました。 これにより動的な幾何情報が扱い易くなります。
 
Geometry のサブセット
Geometry オブジェクトを構成する頂点座標や色情報の 一部を無効にすることができます。 具体的にはインデックスの有効となる範囲を指定できます。
 
Texture への参照渡し
Texture オブジェクトを構成する画像に関しても 参照渡しで設定することが出来るようになりました。 これによりテクスチャ画像が動的に変更できます。 live 状態の Texture オブジェクトを構成する画像の修正も可能です。
 
Texture 座標の Y 軸反転
テクスチャ座標の Y 軸方向を反転すること (テクスチャ画像の左下を原点にすること) が出来るようになりました。
 
マルチプル・テクスチャ
マルチプル・テクスチャがサポートされました。 Appearance オブジェクトには Texture オブジェクトではなく 新たに追加された TextureUnitState オブジェクトの配列を設定し、 各テクスチャステージの設定を TextureUnitState オブジェクトに設定するようになっています。
 
テクスチャカラーテーブル
テクスチャカラーテーブルの機能が追加されました。 TextureAttributes オブジェクトに設定します。
 
CompressedGeometry の境界領域情報
CompressedGeometryHeader クラスに境界領域情報が追加されました。 これは CompressedGeometry を生成するユーティリティーによって 生成される情報の一つで、 Java3D の内部でも使用されます。
 
新しい見掛けの機能
 
自由な直線パターン
LineAttributes オブジェクトで自由な直線パターンの設定が 出来るようになりました。 これは Java3D の下位ライブラリである OpenGL や Direct3D がこの機能をサポートしているため、 出来るようにしたそうです。
 
斜面方向のポリゴンオフセット
それまでの定数オフセットに加えて 斜面方向のポリゴンオフセットを設定出来るようになりました。
 
見えない物体
物体を見えなくすることができます。 これまでも Switch ノードを利用したり Scenegraph から取り外すことで物体を消すことが出来ましたが、 この場合の物体を消すということはレンダリングされないことを意味し、 その他の処理の対象にはなります。 つまり、picking や衝突判定の対象になりながらも 表示されない物体が扱えるわけです。 また View オブジェクトの設定で、 見える物体だけレンダリングしたり、 見えないと指定された物体もレンダリングしたりできます。
 
αブレンディング関数
αブレンディング関数の設定が TransparencyAttributes オブジェクトを 使って出来るようになりました。 また RenderingAttributes オブジェクトを 使ってラスタオペレーションの設定も出来るようになりました。
 
頂点の色の無視
頂点の色を無視する設定が出来るようになりました。
 
AlternateAppearance
ハイライトの実現のため、 新たに AlternateAppearance ノードが追加されました。 AlternateAppearance オブジェクトには 影響範囲と Appearance オブジェクトを指定し、 影響範囲に入っている Shape3D, Morph ノードに 指定した Appearance オブジェクトが適用されます。
 
新しい音響機能
 
MediaContainer の対象の拡張
MediaContainer クラスで InputStream も扱えるようになりました。 それに伴いメソッド名も変更が加えられました。
 
AuralAttributes の反響設定
AuralAttributes クラスの反響設定で、 反響範囲と反響遅延の違いを明確にするため メソッドを変えました。
 
その他の新機能
 
CloneTree の拡張
CloneTree がしやすいように細かい変更がされています。 NodeComponent の CloneTree が特に強化されています。
 
PathInterpolator の経路の設定
PathInterpolator の経路の設定がメソッドで出来るようになりました。 いままではコンストラクタでのみの設定でした。
 
ImagePlate → pixel 座標の変換
ImagePlate 上での座標から pixel 座標上での座標へ変換する メソッドが Canvas3D クラスに追加されました。
 
Immediate Mode のバッファ制御
Immediate Mode においてフロントバッファレンダリングが 可能となり、またステレオの制御が可能となりました。
 
クリッピングノード
クリッピングするための ModelClip 葉ノードが追加されました。 Fog ノードのように Scenegraph にぶら下げることで機能します。 6 枚の平面でクリッピング領域を表現します。
 
int 型の vecmath クラス
Tuple3i, Tuple4i, Point3i, Point4i の 4 つの vecmath クラスが 新たに作られました。 いずれも int 型の要素を持っています。
 
vecmath の色クラスと Color クラスの間の変換
vecmath の色クラスである Color3b, Color3f, Color4b, Color4f クラスと java.awt.Color クラスの間の変換が出来るように vecmath の色クラスに コンストラクタやメソッドが追加されました。
 
Canvas3D のプロパティー
Canvas3D からプロパティーを取得するメソッドができました。 ダブルバッファリングが可能かどうかなどが取得できます。
 
新しい PickShape クラス
PickShape クラスに新たに円錐形と円柱形のクラスが追加されました。
 
ImageComponent の RenderedImage への対応
ImageComponent クラスが扱える画像クラスが BufferedImage クラスから RenderedImage インターフェースへ拡張されます (BufferedImage クラスは RenderedImage インターフェースを実装しています)。
 
新しいビューモデル属性
マルチスクリーンやヘッドトラック環境において 便利なようにビューモデルに新しい属性が追加されました。
 
レンダリング制御
View クラスにレンダリング制御をするためのメソッドが増やされました。 1 フレームの最小単位時間の設定やリペイントができます。 また、WakeupOnElapsedFrames クラスに 連続するレンダリングを強制することなく毎フレーム 呼ばれるように設定出来るようになりました。
 
Java3D のスレッド制御
Java3D そのもののスレッドのプライオリティーを VirtualUniverse オブジェクトで変更出来るようになりました。
 
GraphicsContext3D の flush
GraphicsContext3D オブジェクトを flush 出来るようになりました。
 
きれいになった API
 
vecmath のコンストラクタの追加
vecmath パッケージのクラス (4 次元のクラス) のコンストラクタが増やされて、使いやすくなりました。
 
monoscopicViewPolicy 操作のメソッドの引越し
setMonoscopicViewPolicy(int policy), getMonoscopicViewPolicy() メソッドがより適切な意味となるように View クラスから Canvas3D クラスに移りました。
 
Bounds クラスの hash 表対応
Bounds オブジェクトを Hashtable に格納出来るように equals(Object obj), hashCode() メソッドが実装されました。
 
Font3D の細かさ指定
Font3D ノードの細かさ (?) を指定出来るようになりました。
 
Group ノードの意味あいの変更
子ノードとして null が扱えるようになりました。 Switch ノードのインデックス指定がしやすくなり、 予約済みのインデックスを null で表現することができます。 また、インデックス例外があったときに ArrayIndexOutOfBoundsException 例外が投げられることがありましたが、 IndexOutOfBoundsException 例外が投げられるように修正されました。
 
Alpha の親クラスの変更
Alpha クラスはそれまで Object クラスのサブクラスでしたが、 NodeComponent クラスのサブクラスに修正されました。
 
Locale の削除
VirtualUniverse クラスに Locale を削除するメソッドが 追加されました。
 
get メソッドの追加
set メソッドに対応する get メソッドがないクラスについての 幾つかは get メソッドが追加されました。
 
nonfinal 化
javax.media.j3d パッケージの public で final でないクラスのメソッドの大部分の final 属性がはずされました。 ただし、それらのメソッドをオーバーライドするときは 「super.メソッド名」で親クラスのそのメソッドを呼ばないと 正常には動作しないので注意が必要です。
 
デフォルト画面サイズの変更
デフォルトの物理画面サイズが変更されました。

戻る