1.2 β2 の新機能
Java3D 1.2 β2 の新機能についての概要です。
新機能について /
承認 /
却下 /
戻る /
トップページ
新機能について
- 1.2 β2 の新機能についての概要です。
β1 で提案されていた機能の一つが却下されましたが、
その他の条件付き承認、提案された機能も正式に承認され、
ほぼ新機能の仕様は固まったようです。
-
- 詳しくは
Java 3D(TM) API Version 1.2 Beta2 Maintenance Release
に書かれています (英語)。
-
- Java3D 1.2 は Windows 95 / 98 / NT4.0 / 2000 と Solaris で動作します。
Windows 版では
Java2 1.2 以上の実行環境、バージョン 1.1 以上の OpenGL、
NT4.0 ではサービスパック 3 以降
が必要です。
Java Plug-in で実行させる場合は Java Plug-In 1.2.2 以上
(Java2 1.2 実行環境に含まれています) が必要です。
承認された API
- 承認された API です。
ほぼ確実に Java3D 1.2 に組みこまれます。
-
- 非互換の変更
-
-
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.メソッド名」で親クラスのそのメソッドを呼ばないと
正常には動作しないので注意が必要です。
-
-
デフォルト画面サイズの変更
- デフォルトの物理画面サイズが変更されました。
却下された API
- β1 で提案されていましたが、結局却下された API です。
将来の Java3D のバージョンで再考されます。
-
-
ImageComponent3D の RenderedImage 対応
- ボリューム画像情報を保持する
RenderedVolumeImage インターフェースを
ImageComponent3D クラスは扱えるようになる予定でした。
この RenderedVolumeImage インターフェースは
javax.media.volumeimage パッケージ
(JAI や Java3D で使われる予定だった標準拡張パッケージ)
に含まれます。
ImageComponent3D クラスは RenderedImage オブジェクトの配列の変わりに
RenderedVolumeImage オブジェクトを受け入れます。
戻る