|
06. 3D機能・点ポリゴン表示 |
|
505からは3D機能が強化されました。
というか504の3D機能が貧弱すぎです...
505になってやっとプリミティブ描画がサポートされました。
これは点ポリゴン・線ポリゴン・面ポリゴンと言った
ポリゴンを生成できる機能です。
504を知らないでこれを呼んだ人は
「えっ??そんなの基本的な機能じゃないの?」
と思うことでしょう...
そうです、
その基本的な機能すら504ではなかったのです...
504で出来る事はあらかじめ用意したモデルを表示する・動かす
大雑把に言うとそれだけです...
だからほとんどは待ち受けアプリとして使われるくらいでした。
例外としてD504は低レベルポリゴン機能を別に持っていて
OpenGLと似たインターフェイスで3D機能を使用可能です。
しかしD504は504シリーズで一番普及度が低くほとんど使用されませんでした。
とは言っても505のポリゴン描画性能ははっきり言って低いです。
ドコモはかなり頑張ったと言ってますが、どこが?と首を傾げたくなる性能です。
秒間10フレームで1000ポリゴンも出ません。
同時期に出たJ-PHONEのSH53とは雲泥の差です。
しかし現時点でJ-PHONEのSH53は個人開発が無理なので
どっちもどっちですね..
本題に戻りますが505ではプリミティブ描画が出来るようになったので
ゲームにも実用的になりました。
見せ方によってはPS1程度のゲームには迫れるのではないでしょうか?
それでは簡単な描画を説明していきます。
今までの通常描画ではGraphics型を使用していましたが
3D描画ではGraphics3D型を使用します。
Graphics3D型の取得はGraphics型をキャストするだけで手に入ります。
Graphics3D g3d=(Graphics3D)g;
次はプリミティブを生成する方法ですがちょっと特殊です。
まず空のプリミティブ型を生成して後から中身を詰めます。
PrimitiveArrayがプリミティブ型になります。
コンストラクタでプリミティブタイプとプリミティブ情報と数を指定します。
点ポリゴンなら
PrimitiveArray point=new PrimitiveArray(
g3d.PRIMITIVE_POINTS,g3d.COLOR_PER_COMMAND,1);
となります。
これは点ポリゴンタイプの色付きを一つという事です。
今度は座標を入れなければいけませんが
これがちょっと変わっています。
普通ならset〜と言った命令を使用して座標を入れるのですが
見たところget〜と言った命令しか存在しません。
getVertexArray()は内部の座標配列を返す命令です。
これを利用して
int p_Array[] = point.getVertexArray();
とすると実は取得出来,
p_Array[0]=10;
などのように座標を代入できるようになります。
点ポリゴンの場合X,Y,Zが一つずつですので
p_Array[0]=X座標
p_Array[1]=Y座標
p_Array[2]=Z座標
となっています。
応用していくと以下のようになって行きます
(点ポリゴンちゃうやん(笑))