1.2 β1 の新機能


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

承認 / 条件付き / 提案 / 戻る / トップページ


承認された API

承認された API です。 ほぼ確実に Java3D 1.2 に組みこまれます。
 
Deprecated API の除去
Java3D 1.1 で "Deprecated" 表記されていた メソッド・フィールド・コンストラクタが除去されます。
 
CloneTree の拡張
NodeReferenceTable を使った CloneTree ができるようになりました。
 
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 クラスのサブクラスに修正されました。

条件付で承認された API

条件付で承認された API です。 恐らくは Java3D 1.2 に組みこまれるものと思われます。
 
複数の Geometry からなる Shape3D
Shape3D ノードはいままで 1 つの Geometry から構成されていましたが、 複数の Geometry からなる Shape3D ノードも指定できるようになります。
 
Geometry 情報への参照渡し
Geometry オブジェクトを構成する頂点座標や色情報を 設定する際に参照渡しで引き渡すことが出来るようになりました。 これにより動的な幾何情報が扱い易くなります。
 
Texture の機能拡張
Texture オブジェクトを構成する画像に関しても 参照渡しで設定することが出来るようになりました。 これによりテクスチャ画像が動的に変更できます。 テクスチャ座標の Y 軸方向を反転すること (画像左下を原点にすること) も出来るようになりました。
 
自由な直線パターン
LineAttributes オブジェクトで自由な直線パターンの設定が 出来るようになりました。 これは Java3D の下位ライブラリである OpenGL や Direct3D がこの機能をサポートしているため、 出来るようにしたそうです。
 
斜面方向のポリゴンオフセット
斜面方向のポリゴンオフセットを設定できるようになりました。
 
見えない物体
物体を見えなくすることができます。 これまでも Switch ノードを利用したり Scenegraph から取り外すことで物体を消すことが出来ましたが、 この場合の物体を消すということはレンダリングされないことを意味し、 その他の処理の対象にはなります。 つまり、picking や衝突判定の対象になりながらも 表示されない物体が扱えるわけです。 また View オブジェクトにも同様の設定項目があり、 この場合は全ての物体がレンダリング対象からはずれます。
 
αブレンディング関数
αブレンディング関数の設定が RenderingAttributes オブジェクトを使って出来るようになりました。 またラスタオペレーションの設定も出来るようになりました。
 
頂点の色の無視
頂点の色を無視する設定が出来るようになりました。
 
AlternateAppearance
ハイライトの実現のため、 新たに AlternateAppearance ノードが追加されました。 このノードの Appearance の設定を使うようにするメソッドが Shape3D, Morph クラスに追加されました。
 
MediaContainer の対象の拡張
MediaContainer クラスで InputStream も扱えるようになりました。 それに伴いメソッド名も変更が加えられました。
 
AuralAttributes の反響設定
AuralAttributes クラスの反響設定で、 反響範囲と反響遅延の違いを明確にするため メソッドを変えました。
 
PathInterpolator の経路の設定
PathInterpolator の経路の設定がメソッドで出来るようになりました。 いままではコンストラクタでのみの設定でした。
 
ImagePlate -> pixel 座標の変換
ImagePlate 上での座標から pixel 座標上での座標へ変換する メソッドが Canvas3D クラスに追加されました。
 
Immediate Mode のバッファ制御
Immediate Mode においてフロントバッファレンダリングが 可能となり、またステレオの制御が可能となりました。
 
Locale の削除
VirtualUniverse クラスに Locale を削除するメソッドが 追加されました。

提案された API

提案された API です。 β1 では未だに実装されていないものもあります。 The Java Community Process へのフィードバックによって 変更される可能性があります。
 
オフスクリーンレンダリング
レンダリング対象を ImageComponent2D オブジェクトに 変更することが出来るメソッドが Canvas3D クラスに追加されました。 これでオフスクリーンレンダリングが可能になりました。
 
OrientedShape3D クラス
視点に対して常に同じ向きを見せる Shape3D である OrientedShape3D クラスが追加されました。 behavior である Billboard とは異なり、 OrientedShape3D はノードなので SharedGroup ノードの下にぶら下げたりできます。
 
Canvas3D 用の Graphics2D
Canvas3D オブジェクトに Java2D, AWT 描画するための Graphics2D クラスが用意されました。 これで Canvas3D に 2D の描画が出来るようになりました。
 
マルチプル・テクスチャ
マルチプル・テクスチャがサポートされました。 Appearance オブジェクトには Texture オブジェクトではなく 新たに追加された TextureUnitState オブジェクトの配列を設定し、 各テクスチャステージの設定を TextureUnitState オブジェクトに設定するようになっています。
 
テクスチャカラーテーブル
テクスチャカラーテーブルの機能が追加されました。 TextureAttributes オブジェクトに設定します。
 
CompressedGeometryBounds
Java3D の内部で CompressedGeometry の Bounds を表現するための CompressedGeometryHeader クラスが追加されました。
 
クリッピングノード
クリッピングするための 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 インターフェースを 実装しています)。 javax.media.volumeimage.RenderedVolumeImage (このパッケージは JAI や Java3D で使われることが提案されており、 対応する可能性があります) オブジェクト (ボリューム画像情報を保持しています) を ImageComponent3D クラスが受け入れられるようにもなります。
 
新しいビューモデル
マルチスクリーンやヘッドトラック環境においてより使いやすい 新しいビューモデルが追加されました。
 
レンダリング制御
View クラスにレンダリング制御をするためのメソッドが増やされました。 1 フレームの最小単位時間の設定やリペイントができます。 また、WakeupOnElapsedFrames クラスに 連続するレンダリングを強制することなく毎フレーム 呼ばれるように設定できるようになりました。
 
Java3D のスレッド制御
Java3D そのもののスレッドのプライオリティーを VirtualUniverse オブジェクトで変更出来るようになりました。
 
GraphicsContext3D の flush
GraphicsContext3D オブジェクトを flush できるようになりました。
 
get メソッドの追加
set メソッドに対応する get メソッドがないクラスについての 幾つかは get メソッドが追加されました。
 
nonfinal 化
javax.media.j3d パッケージの public で final でないクラスのメソッドの大部分の final 属性がはずされました。 ただし、それらのメソッドをオーバーライドするときは 「super.メソッド名」で親クラスのそのメソッドを呼ばないと 正常には動作しないので注意が必要です。
 
デフォルト画面サイズの変更
デフォルトの物理画面サイズが変更されました。

戻る