1.3 β1 の新機能
Java3D 1.3 β1 の新機能についての概要です。
新機能について /
承認 /
提案 /
戻る /
トップページ
新機能について
- 1.3 β1 の新機能についての概要です。
-
- バージョン 1.3 での変更点は少なく、マイナーリリースとなる予定です。
-
- 原文は
Java 3D(TM) API - Current Releases/Specification From Sun
に書かれています (英語)。
承認された API
- 承認された API です。
高い確率で Java3D 1.3 に組みこまれます。
-
- 新しいレンダリング機能
-
-
view ごとの物体指定
- ViewSpecificGroup クラスが追加されました。
この Group の子ノードは指定された
View の元においてのみ見ることができます。
-
-
背景画像のスケール
- Background ノードで画像の伸縮指定を行うことができるようになりました。
-
-
Background 形状の意味合いの変更
- Background ノードに設定する形状 (BranchGroup) の扱いが
以下のように変更されました。
ViewSpecificGroup、OrientedShape3D ノードは含まれてはいけない。
Light、Fog ノードは含んでも良いが、
その影響範囲は外部のノードには及ぼさず、
また BranchGroup 内部全体に行き届くこと。
上記制約を違反した場合は IllegalSceneGraphException 例外が投げられる。
picking、collision はこれらノードは扱わない。
-
-
Behavior の同期
- Behavior にその動作間隔を取得・設定するメソッドが追加されました。
-
-
大きさ固定の OrientedShape3D
- OrientedShape3D クラスに大きさを固定する
(透視投影に影響されない) 機能が追加されました。
-
-
順番指定可能な OrderedGroup
- OrderedGroup クラスで、その子ノードの処理順を
自由に指定することができるようになりました。
これまでは追加順 (インデックス順) 固定でした。
-
- 新しい幾何・テクスチャ機能
-
-
Raster の書き込み先オフセット
- Raster の書き込み先のピクセルにオフセット値を
指定することができるようになりました。
またそれに伴い、読み込み元のピクセルのオフセット値指定の
メソッドの名称が分かりやすく変更されました。
-
-
テクスチャの LOD 制御
- ミップマップを使用したテクスチャの LOD (level-of-detail)
の値を細かく制御できるようになりました。
ただし、Java3D の下位の 3D API の実装状況に依存する為、
すべてのプラットフォームで使用可能とは限りません。
-
-
ImageComponent の更新
- ImageComponent の一部を切り出した画像の取得や
ImageComponent の書き換えができるようになりました。
-
-
テクスチャ境界
- テクスチャの境界領域の幅の指定、新しい CLAMP 機能の追加がされました。
ただし、Java3D の下位の 3D API の実装状況に依存する為、
すべてのプラットフォームで使用可能とは限りません。
-
-
テクスチャ合成
- テクスチャ合成に様々な式を指定することができるようになりました。
ただし、Java3D の下位の 3D API の実装状況に依存する為、
すべてのプラットフォームで使用可能とは限りません。
-
-
Cube 環境マッピング
- Cube 環境マッピングが可能になりました。
ただし、Java3D の下位の 3D API の実装状況に依存する為、
すべてのプラットフォームで使用可能とは限りません。
-
-
テクスチャフィルタの追加
- テクスチャフィルタの種類が増えました。
-
- 新しい見掛けの機能
-
-
透過物体の Depth ソートの切り替え
- 透過する物体を描画するために、
物体の描画順が Java3D によって制御されていますが、
View オブジェクトでこの描画順の並び替え (Depth ソート)
の有無を制御できるようになりました。
-
-
Material の対象色の指定
- ColorInterpolator などで制御の対象となる色の種類
(diffuse、specular など) を指定するメソッドが
Material クラスに追加されました。
-
- 新しい音響機能
-
-
パラメータの追加
- リバーブや環境パラメータが追加されました。
-
- その他の新機能
-
-
Vecmath パッケージの Cloneable 化
- Vecmath パッケージに含まれるクラスが全て Cloneable
インターフェースを実装し、
clone() メソッドが使用できるようになりました。
-
-
Alpha クラスの一時停止
- Alpha オブジェクトを一時停止させることができるようになりました。
-
-
グローバルプロパティー
- VirtualUniverse クラスにクラスメソッド
getProperties() が追加されました。
Java3D の下位の 3D API の実装状況に依存する機能が
現在のプラットフォームで使用可能かどうかを調べる為などに使います。
-
-
J3DGraphics2D クラスの描画&フラッシュ
- J3DGraphics2D クラスに画像の描画と同時にフラッシュを行う
メソッドが追加されました。
-
-
Capability bits の更新頻度
- Java3D の最適化のヒントとしてアプリケーションから
Capability bits の更新頻度を通知することができるようになりました。
前もって頻繁に Capability bits を頻繁に更新するか
どうかを指定しておけば、その情報を使って Java3D が最適化を
してくれる可能性があります。
-
- きれいになった API
-
-
Font3D クラスの親クラス
- Font3D クラスの親クラスが NodeComponent クラスに変更されました。
-
-
IllegalSceneGraphException 例外
- IllegalSharingException、SceneGraphCycleException
などの例外の親クラスとして IllegalSceneGraphException
クラスが新設されました。
-
-
TransformInterpolator クラスの新設
- TransformGroup の値を変化させていく Interpolator の親クラスとして
TransformInterpolator クラスが新設されました。
このクラスは PathInterpolator クラス、PositionInterpolator クラス、
RotationInterpolator クラス、ScaleInterpolator クラスなどの
親クラスとなり、これら子クラスのメソッドも継承を考慮して
一部名称が変えられました。
-
-
交差判定メソッド
- Shape3D、Morph クラスに PickShape オブジェクトに対しての
交差点への距離を取得するメソッドが追加されました。
-
-
get メソッドの追加
- set メソッドがありながら get メソッドがなかった各クラスのメソッドに、
get メソッドが追加されました。
-
-
Capability Bit の追加
- RenderingAttributes.ALLOW_DEPTH_ENABLE_WRITE、
TexCoordGeneration.ALLOW_PLANE_WRITE の
Capability Bit が追加されました。
-
-
Collection 風味なメソッドの追加
- Java3D では SceneGraph を構成するオブジェクトが
他のオブジェクトの集まりへの参照を持っている事が多々あります。
それらに対して、指定したオブジェクトのインデックスを得るメソッド、
指定したオブジェクトを取り除くメソッド、
全てのオブジェクトを取り除くメソッドが追加されました。
-
-
NodeComponent の共有
- immediate mode、背景 SceneGraph、通常の SceneGraph において、
NodeComponent が共有できるように条件が緩和されました。
-
-
コンパイルされた Group の階層スコープの厳格化
- コンパイルされた Group に対して、その保持している
階層スコープの値を変更する際、
capability bit を設定しなくても変更ができてしまっていました。
この点を厳しくする為に RestrictedAccessException 例外が
正しく投げられるようになりました。
-
-
Sensor Hotspot の意味
- Sensor クラスのクラスメソッド setHotspot の意味が
これまであいまいだったため、仕様と実装が正しくされました。
提案された API
- 提案された API です。
未だに実装されていない可能性があります。
The Java Community Process へのフィードバックによって
変更される可能性があります。
-
- 非互換の変更
-
-
capability bit の衝突緩和
- capability bit の Geometry.ALLOW_INTERSECT と
GeometryArray.ALLOW_REF_DATA_READ は同じ値をもっており、GeometryArray
クラスは Geometry クラスのサブクラスとなっています。
そのため、両者の capability bit の値を別の値に設定ができない問題を
回避するために、GeometryArray.ALLOW_REF_DATA_READ の値を変更します。
ただしこの場合、古い Java3D でコンパイルされたクラスとのバイナリでの
非互換性を生む問題があります。
-
- 新しい幾何・テクスチャ機能
-
-
GeometryStripArray の頂点数
- GeometryStripArray と IndexedGeometryStripArray オブジェクトを構築後に
頂点数を調節する機能を追加します。
-
-
頂点の範囲指定
- Geometry 類で使われる頂点の範囲指定ができるようにします。
-
-
GeometryArray への Tuple オブジェクトの参照渡し
- GeometryArray クラスへの Tuple オブジェクトの参照渡しは不便である為、
deprecated とします。
-
-
IndexedGeometryArray のインデックス範囲チェック
- これまでは IndexedGeometryArray へのインデックス設定メソッドで
インデックスの範囲チェックを行っていなかった為、
不正なインデックス指定は Java3D のシステムスレッドを
停止させてしまっていました。これを回避するために、
インデックスの範囲チェックを行い、不正なインデックスには
ArrayIndexOutOfBoundsException 例外を投げるようにします。
-
-
インデックスの共有
- Java3D の下位 3D API を利用して最大限のパフォーマンスを得る為に、
IndexedGeometryArray で指定するインデックス値を、
頂点・色・法線・テクスチャ座標ごとにではなく、
まとめて同じインデックス値を指定できるようにします。
-
-
GeometryArray の get メソッド
- GeometryArray の get メソッドの引数に頂点数よりも
多い配列が渡された場合、ArrayIndexOutOfBoundsException
例外が投げられていましたが、
これをやめて、ある頂点数分だけ値をコピーするようにします。
-
-
Morph の変更
- 他の Geometry クラスの変更に併せて、
Morph の仕様の変更・明文化を行います。
-
-
Geometry の NIO Buffer のサポート
- Java 1.4 から導入された NIO Buffer を Geometry でもサポートします。
読み込み専用のバッファとして J3DBuffer クラスを定義して
使用するようにします。
-
-
4 次元テクスチャ座標
- 投影テクスチャとして使用するために、4 次元テクスチャ座標を追加します。
-
- きれいになった API
-
-
Active な ViewPlatform
- Behavior のスケジューリングに新たに Active な
ViewPlatform の概念を追加します。
WakeupOnViewPlatformEntry などで関連している (Active な)
ViewPlatform を取得するメソッドを追加します。
戻る