|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
3Dグラフィクスを提供するインタフェースです。
3DをサポートするGraphics
クラスは、
このインタフェースを実装しなければなりません。
端末によってサポートされていない場合があります。未サポートの場合、
メソッドが呼び出された時点でUnsupportedOperationExceptionを発生します。
フィールドの概要 | |
static int |
ATTR_BLEND_ADD
加算モードで描画を行うことを表すプリミティブ属性です(=0x40)。 |
static int |
ATTR_BLEND_HALF
50%ブレンドモードで描画を行うことを表すプリミティブ属性です(=0x20)。 |
static int |
ATTR_BLEND_NORMAL
通常の描画処理を行うことを表すプリミティブ属性です(=0x00)。 |
static int |
ATTR_BLEND_SUB
減算モードで描画を行うことを表すプリミティブ属性です(=0x60)。 |
static int |
ATTR_COLOR_KEY
カラーキーを用いた透過処理を行うことを表すプリミティブ属性です(=0x10)。 |
static int |
ATTR_LIGHT
光源対応処理を行うことを表すプリミティブ属性です(=0x01)。 |
static int |
ATTR_SPHERE_MAP
環境マッピング処理を行うことを表すプリミティブ属性です(=0x02)。 |
static int |
COLOR_NONE
プリミティブが色情報を持たないことを表します(=0x0000)。 |
static int |
COLOR_PER_COMMAND
プリミティブがコマンド単位で同じ色情報を持つことを表します(=0x0400)。 |
static int |
COLOR_PER_FACE
プリミティブが面単位で色情報を持つことを表します(=0x0800)。 |
static int |
COMMAND_AMBIENT_LIGHT
setAmbientLight(int) に相当するコマンドです(=0xa0000000)。
|
static int |
COMMAND_ATTRIBUTE
環境属性を設定することを表すコマンドです(=0x83000000)。 |
static int |
COMMAND_CLIP_RECT
setClipRect3D(int, int, int, int) に相当するコマンドです(=0x84000000)。
|
static int |
COMMAND_DIRECTION_LIGHT
setDirectionLight(Vector3D, int) に相当するコマンドです(=0xa1000000)。
|
static int |
COMMAND_END
コマンドリストの終了を表すコマンドです(=0x80000000)。 |
static int |
COMMAND_FLUSH
flush() に相当するコマンドです(=0x82000000)。
|
static int |
COMMAND_LIST_VERSION_1
コマンドリストのバージョンを表すコマンドです(=0xfe000001)。 |
static int |
COMMAND_NOP
何もしないことを表すコマンドです(=0x81000000)。 |
static int |
COMMAND_PERSPECTIVE1
setPerspective(int, int, int) に相当するコマンドです(=0x92000000)。
|
static int |
COMMAND_PERSPECTIVE2
setPerspective(int, int, int, int) に相当するコマンドです(=0x93000000)。
|
static int |
COMMAND_RENDER_LINES
線を描画することを表すコマンドです(=0x02000000)。 |
static int |
COMMAND_RENDER_POINT_SPRITES
ポイントスプライトを描画することを表すコマンドです(=0x05000000)。 |
static int |
COMMAND_RENDER_POINTS
点を描画することを表すコマンドです(=0x01000000)。 |
static int |
COMMAND_RENDER_QUADS
四角形を描画することを表すコマンドです(=0x04000000)。 |
static int |
COMMAND_RENDER_TRIANGLES
三角形を描画することを表すコマンドです(=0x03000000)。 |
static int |
COMMAND_SCREEN_CENTER
setScreenCenter(int, int) に相当するコマンドです(=0x85000000)。
|
static int |
COMMAND_SCREEN_SCALE
setScreenScale(int, int) に相当するコマンドです(=0x90000000)。
|
static int |
COMMAND_SCREEN_VIEW
setScreenView(int, int) に相当するコマンドです(=0x91000000)。
|
static int |
COMMAND_TEXTURE
setPrimitiveTexture(int) に相当するコマンドです(=0x86000000)。
|
static int |
COMMAND_TOON_PARAM
setToonParam(int, int, int) に相当するコマンドです(=0xaf000000)。
|
static int |
COMMAND_VIEW_TRANS
setViewTrans(int) に相当するコマンドです(=0x87000000)。
|
static int |
ENV_ATTR_LIGHT
光源対応処理を行うことを表す環境属性です(=1)。 |
static int |
ENV_ATTR_SEMI_TRANSPARENT
半透明処理を行うことを表す環境属性です(=8)。 |
static int |
ENV_ATTR_SPHERE_MAP
環境マッピング処理を行うことを表す環境属性です(=2)。 |
static int |
ENV_ATTR_TOON_SHADER
トゥーンシェーディングを行うことを表す環境属性です(=4)。 |
static int |
NORMAL_NONE
プリミティブが法線情報を持たないことを表します(=0x0000)。 |
static int |
NORMAL_PER_FACE
プリミティブが面単位で法線情報を持つことを表します(=0x0200)。 |
static int |
NORMAL_PER_VERTEX
プリミティブが頂点単位で法線情報を持つことを表します(=0x0300)。 |
static int |
POINT_SPRITE_FLAG_LOCAL_SIZE
モデル座標系でのサイズを指定することを表すポイントスプライトフラグです(=0)。 |
static int |
POINT_SPRITE_FLAG_NO_PERSPECTIVE
パースを無効にすることを表すポイントスプライトフラグです(=2)。 |
static int |
POINT_SPRITE_FLAG_PERSPECTIVE
パースを有効にすることを表すポイントスプライトフラグです(=0)。 |
static int |
POINT_SPRITE_FLAG_PIXEL_SIZE
スクリーン座標系でのサイズを指定することを表すポイントスプライトフラグです(=1)。 |
static int |
POINT_SPRITE_PER_COMMAND
プリミティブがコマンド単位で同じポイントスプライト情報を持つことを表します(=0x1000)。 |
static int |
POINT_SPRITE_PER_VERTEX
プリミティブが頂点単位でポイントスプライト情報を持つことを表します(=0x3000)。 |
static int |
PRIMITIVE_LINES
線の描画を表すプリミティブの型です(=2)。 |
static int |
PRIMITIVE_POINT_SPRITES
ポイントスプライトの描画を表すプリミティブの型です(=5)。 |
static int |
PRIMITIVE_POINTS
点の描画を表すプリミティブの型です(=1)。 |
static int |
PRIMITIVE_QUADS
四角形の描画を表すプリミティブの型です(=4)。 |
static int |
PRIMITIVE_TRIANGLES
三角形の描画を表すプリミティブの型です(=3)。 |
static int |
TEXTURE_COORD_NONE
プリミティブがテクスチャ座標情報を持たないことを表します(=0x0000)。 |
static int |
TEXTURE_COORD_PER_VERTEX
プリミティブが頂点単位でテクスチャ座標情報を持つことを表します(=0x3000)。 |
メソッドの概要 | |
void |
drawFigure(Figure figure)
モデルをクリッピング領域内に描画します。 |
void |
enableLight(boolean b)
光源対応処理の有効化/無効化を行います。 |
void |
enableSemiTransparent(boolean flag)
半透明処理の有効化/無効化を行います。 |
void |
enableSphereMap(boolean b)
環境マッピング処理の有効化/無効化を行います。 |
void |
enableToonShader(boolean b)
トゥーンシェーディングの有効化/無効化を行います。 |
void |
executeCommandList(int[] commandlist)
コマンド配列によってレンダリングの演算や描画を行います。 |
void |
flush()
レンダリング演算の結果を実際に描画に反映します。 |
void |
renderFigure(Figure figure)
モデルデータを設定し、レンダリングの演算を実行します。 |
void |
renderPrimitives(PrimitiveArray primitives,
int attr)
プリミティブデータを設定し、レンダリングの演算を行います。 |
void |
renderPrimitives(PrimitiveArray primitives,
int offset,
int length,
int attr)
プリミティブデータを設定し、レンダリングの演算を行います。} |
void |
setAmbientLight(int intensity)
環境光の強さ設定します。 |
void |
setClipRect3D(int x,
int y,
int width,
int height)
キャンバス全体描画領域のうち3D描画のためのクリッピング領域を設定します。 |
void |
setDirectionLight(Vector3D direction,
int intensity)
平行光源の強さと方向を設定します。 |
void |
setPerspective(int zNear,
int zFar,
int angle)
視野角を指定して透視投影の設定を行います。 |
void |
setPerspective(int zNear,
int zFar,
int width,
int height)
ニアクリップ面における投影面の幅および高さを指定して透視投影の設定を行います。 |
void |
setPrimitiveTexture(int index)
プリミティブ描画において参照されるテクスチャを設定します。 |
void |
setPrimitiveTextureArray(Texture texture)
プリミティブ描画のためのテクスチャ配列を設定します。 |
void |
setPrimitiveTextureArray(Texture[] textures)
プリミティブ描画のためのテクスチャ配列を設定します。 |
void |
setScreenCenter(int cx,
int cy)
スクリーンの中心を設定します。 |
void |
setScreenScale(int sx,
int sy)
視点座標からスクリーンへのスケールを指定して平行投影の設定を行います。 |
void |
setScreenView(int width,
int height)
投影面の幅と高さを指定して平行投影の設定を行います。 |
void |
setSphereTexture(Texture texture)
環境マッピング用のテクスチャを設定します。 |
void |
setToonParam(int threshold,
int high,
int low)
レンダリングをトゥーンシェーディングで行うための情報を設定します。 |
void |
setViewTrans(AffineTrans at)
視点座標への変換行列を設定します。 |
void |
setViewTrans(int index)
視点座標への変換行列を設定します。 |
void |
setViewTransArray(AffineTrans[] ats)
視点座標への変換行列の配列を設定します。 |
フィールドの詳細 |
public static final int PRIMITIVE_POINTS
PrimitiveArray
,
定数フィールド値public static final int PRIMITIVE_LINES
PrimitiveArray
,
定数フィールド値public static final int PRIMITIVE_TRIANGLES
PrimitiveArray
,
定数フィールド値public static final int PRIMITIVE_QUADS
なお、四角形の頂点は、同一平面上にあり、凸状の四角形を構成していなければなりません。 頂点が同一平面上になかったり、凸状の四角形ではなかったりした場合のレンダリング結果は機種依存です。
PrimitiveArray
,
定数フィールド値public static final int PRIMITIVE_POINT_SPRITES
PrimitiveArray
,
定数フィールド値public static final int NORMAL_NONE
public static final int NORMAL_PER_FACE
public static final int NORMAL_PER_VERTEX
public static final int COLOR_NONE
public static final int COLOR_PER_COMMAND
public static final int COLOR_PER_FACE
public static final int TEXTURE_COORD_NONE
public static final int TEXTURE_COORD_PER_VERTEX
public static final int POINT_SPRITE_PER_COMMAND
public static final int POINT_SPRITE_PER_VERTEX
public static final int POINT_SPRITE_FLAG_LOCAL_SIZE
POINT_SPRITE_FLAG_PIXEL_SIZE
と同時に指定することはできません。
public static final int POINT_SPRITE_FLAG_PIXEL_SIZE
POINT_SPRITE_FLAG_LOCAL_SIZE
と同時に指定することはできません。
public static final int POINT_SPRITE_FLAG_PERSPECTIVE
(POINT_SPRITE_FLAG_PIXEL_SIZE
| POINT_SPRITE_FLAG_PERSPECTIVE)
とした場合は、ポイントスプライトがニアクリップ面上にあるときに指定された幅と高さになるようにパースをつけてレンダリングされます。
POINT_SPRITE_FLAG_NO_PERSPECTIVE
と同時に指定することはできません。
public static final int POINT_SPRITE_FLAG_NO_PERSPECTIVE
(POINT_SPRITE_FLAG_LOCAL_SIZE
| POINT_SPRITE_FLAG_NO_PERSPECTIVE)
とした場合にどのようにレンダリングされるかは機種依存です。
POINT_SPRITE_FLAG_PERSPECTIVE
と同時に指定することはできません。
public static final int ATTR_LIGHT
enableLight(boolean)
メソッドによって Graphics3D オブジェクトの光源対応処理が有効化されている必要があります。
public static final int ATTR_SPHERE_MAP
enableSphereMap(boolean)
メソッドと setSphereTexture(Texture)
メソッドによって Graphics3D オブジェクトの環境マッピング処理が有効化されている必要があります。
public static final int ATTR_COLOR_KEY
public static final int ATTR_BLEND_NORMAL
ATTR_BLEND_HALF
, ATTR_BLEND_ADD
, ATTR_BLEND_SUB
と同時に指定することはできません。enableSemiTransparent(boolean)
メソッドによって Graphics3D オブジェクトの半透明処理が有効化されている必要があります。
public static final int ATTR_BLEND_HALF
ATTR_BLEND_NORMAL
, ATTR_BLEND_ADD
, ATTR_BLEND_SUB
と同時に指定することはできません。enableSemiTransparent(boolean)
メソッドによって Graphics3D オブジェクトの半透明処理が有効化されている必要があります。
public static final int ATTR_BLEND_ADD
ATTR_BLEND_NORMAL
, ATTR_BLEND_HALF
, ATTR_BLEND_SUB
と同時に指定することはできません。enableSemiTransparent(boolean)
メソッドによって Graphics3D オブジェクトの半透明処理が有効化されている必要があります。
public static final int ATTR_BLEND_SUB
ATTR_BLEND_NORMAL
, ATTR_BLEND_HALF
, ATTR_BLEND_ADD
と同時に指定することはできません。enableSemiTransparent(boolean)
メソッドによって Graphics3D オブジェクトの半透明処理が有効化されている必要があります。
public static final int COMMAND_LIST_VERSION_1
public static final int COMMAND_END
public static final int COMMAND_NOP
例 : コマンド配列に COMMAND_CENTER と COMMAND_SCREEN_SCALE が設定されており、COMMAND_CENTER のみをスキップする場合
int command[] = {COMMAND_CENTER, 120, 120,
COMMAND_SCREEN_SCALE, 4096, 4096};
command[0] = COMMAND_NOP | 2;
public static final int COMMAND_FLUSH
flush()
に相当するコマンドです(=0x82000000)。
public static final int COMMAND_ATTRIBUTE
enableLight(boolean)
, enableSphereMap(boolean)
,
enableToonShader(boolean)
, enableSemiTransparent(boolean)
に相当します。
ENV_ATTR_LIGHT
, ENV_ATTR_SPHERE_MAP
,
ENV_ATTR_TOON_SHADER
, ENV_ATTR_SEMI_TRANSPARENT
を
論理和で組み合わせて指定します。
例 : 光源対応処理と環境マッピング処理を有効に、トゥーンシェーディングと半透明処理を無効にする場合
int command[] = {COMMAND_ATTRIBUTE | ENV_ATTR_LIGHT | ENV_ATTR_SPHERE_MAP};
public static final int COMMAND_AMBIENT_LIGHT
setAmbientLight(int)
に相当するコマンドです(=0xa0000000)。
コマンド配列では、COMMAND_AMBIENT_LIGHT に続いて環境光の強さを指定します。
例 : 環境光の強さを 4096 に設定する場合
int command[] = {COMMAND_AMBIENT_LIGHT, 4096};
public static final int COMMAND_DIRECTION_LIGHT
setDirectionLight(Vector3D, int)
に相当するコマンドです(=0xa1000000)。
例 : 平行光源を、方向 (1, 2, 3)、強さ 4096 に設定する場合
int command[] = {COMMAND_DIRECTION_LIGHT, 1, 2, 3, 4096};
public static final int COMMAND_TOON_PARAM
setToonParam(int, int, int)
に相当するコマンドです(=0xaf000000)。
例 : トゥーンシェーディングの閾値を 128、hight の値を 255, low の値を 0 に設定する場合
int command[] = {COMMAND_TOON_PARAM, 128, 255, 0};
public static final int COMMAND_CLIP_RECT
setClipRect3D(int, int, int, int)
に相当するコマンドです(=0x84000000)。
setClipRect3D(int, int, int, int)
では x, y, width, height の順で指定しますが、それとはパラメータの指定の仕方が異なっている点に注意してください。
setClip(x, y, width, height) に対して、COMMAND_CLIP_RECT で指定する場合は x, y, (x + width), (y + height) という値を指定します。
例 : クリッピング領域を画面の (10, 20)-(230, 200) に設定する場合
int command[] = {COMMAND_CLIP_RECT, 10, 20, 230, 220};
public static final int COMMAND_SCREEN_CENTER
setScreenCenter(int, int)
に相当するコマンドです(=0x85000000)。
例 : スクリーンの中心を (120, 120) に設定する場合
int command[] = {COMMAND_CENTER, 120, 120};
public static final int COMMAND_SCREEN_SCALE
setScreenScale(int, int)
に相当するコマンドです(=0x90000000)。
例 : 視点座標からスクリーンへのスケールを (4096, 4096) に設定する場合
int command[] = {COMMAND_SCREEN_SCALE, 4096, 4096};
public static final int COMMAND_SCREEN_VIEW
setScreenView(int, int)
に相当するコマンドです(=0x91000000)。
例 : 投影面の幅と高さを (4096, 4096) に設定する場合
int command[] = {COMMAND_SCREEN_VIEW, 4096, 4096};
public static final int COMMAND_PERSPECTIVE1
setPerspective(int, int, int)
に相当するコマンドです(=0x92000000)。
例 : ニアクリップ面までの距離を 4096、ファークリップ面までの距離を 40960、視野角を 1024 に設定する場合
int command[] = {COMMAND_PERSPECTIVE1, 4096, 40960, 1024};
public static final int COMMAND_PERSPECTIVE2
setPerspective(int, int, int, int)
に相当するコマンドです(=0x93000000)。
例 : ニアクリップ面までの距離を 4096、ファークリップ面までの距離を 40960、投影面の幅と高さを (2048, 2048) に設定する場合
int command[] = {COMMAND_PERSPECTIVE2, 4096, 40960, 2048, 2048};
public static final int COMMAND_TEXTURE
setPrimitiveTexture(int)
に相当するコマンドです(=0x86000000)。
例 : テクスチャ配列中のインデックス 1 のテクスチャを参照するよう設定する場合
int command[] = {COMMAND_TEXTURE | 1};
public static final int COMMAND_VIEW_TRANS
setViewTrans(int)
に相当するコマンドです(=0x87000000)。
例 : 視点座標への変換行列の配列中のインデックス 1 の行列を視点座標への変換行列として設定する場合
int command[] = {COMMAND_VIEW_TRANS | 1};
public static final int COMMAND_RENDER_POINTS
PrimitiveArray
と同様で、
頂点情報、色情報の順で必要なものを指定します。
例 :
int command[] = {COMMAND_RENDER_POINTS | COLOR_PER_FACE | ATTR_LIGHT | (10 << 16), ...};
public static final int COMMAND_RENDER_LINES
PrimitiveArray
と同様で、
頂点情報、法線情報、色情報、テクスチャ座標情報、ポイントスプライト情報の順で必要なものを指定します。
例 :
int command[] = {COMMAND_RENDER_LINES | COLOR_PER_FACE | ATTR_LIGHT | (10 << 16), ...};
public static final int COMMAND_RENDER_TRIANGLES
PrimitiveArray
と同様で、
頂点情報、法線情報、色情報、テクスチャ座標情報の順で必要なものを指定します。
例 :
int command[] = {COMMAND_RENDER_TRIANGLES | COLOR_PER_FACE | ATTR_LIGHT | (10 << 16), ...};
public static final int COMMAND_RENDER_QUADS
PrimitiveArray
と同様で、
頂点情報、法線情報、色情報、テクスチャ座標情報の順で必要なものを指定します。
例 :
int command[] = {COMMAND_RENDER_QUADS | COLOR_PER_FACE | ATTR_LIGHT | (10 << 16), ...};
public static final int COMMAND_RENDER_POINT_SPRITES
PrimitiveArray
と同様で、
頂点情報、ポイントスプライト情報の順で指定します。
例 :
int command[] = {COMMAND_RENDER_POINT_SPRITES | POINT_SPRITE_PER_VERTEX | ATTR_LIGHT | (10 << 16), ...};
public static final int ENV_ATTR_LIGHT
COMMAND_ATTRIBUTE
,
定数フィールド値
public static final int ENV_ATTR_SPHERE_MAP
COMMAND_ATTRIBUTE
,
定数フィールド値
public static final int ENV_ATTR_TOON_SHADER
COMMAND_ATTRIBUTE
,
定数フィールド値
public static final int ENV_ATTR_SEMI_TRANSPARENT
COMMAND_ATTRIBUTE
,
定数フィールド値
メソッドの詳細 |
public void setViewTrans(AffineTrans at)
初期状態では、このメソッドで AffineTrans(4096,0,0,0, 0,4096,0,0, 0,0,4096,0)が設定された状態になっています。
[DoJa-3.0]
このメソッドが呼び出される前に setViewTrans(int)
メソッドで視点座標への変換行列が設定されていた場合、その設定はこのメソッドの呼び出しによって上書きされます。
at
- 視点座標への変換行列を指定します。
NullPointerException
- 引数 at に null が指定された場合に発生します。
public void setViewTransArray(AffineTrans[] ats)
setViewTrans(int)
メソッドを呼び出します。
引数で指定された配列は、
このメソッドが呼び出された時点で Graphics3D オブジェクトにコピーされます。
そのため、このメソッドを呼び出した後に配列の要素の AffineTrans
を変更しても
setViewTrans(int)
メソッドの呼び出しには反映されません。
ats
- 視点座標への変換行列の配列を指定します。
NullPointerException
- 引数 ats または引数 ats の配列の要素に null が指定された場合に発生します。
setViewTrans(int)
public void setViewTrans(int index)
setViewTransArray(AffineTrans[])
メソッドを呼び出して視点座標への変換行列の配列を設定しておき、
このメソッドを呼び出して配列のインデックスを指定することで視点座標への変換行列の設定を行います。
このメソッドが呼び出される前に setViewTrans(AffineTrans)
メソッドで視点座標への変換行列が設定されていた場合、その設定はこのメソッドの呼び出しによって上書きされます。
index
- 視点座標への変換行列の配列中のインデックスを指定します。
NullPointerException
- 視点座標への変換行列の配列が未設定の場合に発生します。
ArrayIndexOutOfBoundsException
- 引数 index に負の値または視点座標への変換行列の配列の要素数以上の値が指定された場合に発生します。
setViewTransArray(AffineTrans[])
public void setScreenCenter(int cx, int cy)
初期状態では、このメソッドで (0,0) が設定された状態になっています。
cx
- スクリーンの中心の X 座標を指定します。cy
- スクリーンの中心の Y 座標を指定します。
public void setScreenScale(int sx, int sy)
初期状態では、このメソッドで (4096,4096) が設定された状態になっています。
このメソッドの引数に負の値を指定した場合、
レンダリング対象の頂点の座標が X 方向あるいは Y 方向に反転した形でレンダリングされます。
[DoJa-3.0]
モデルを構成するポリゴンには両面ポリゴンと片面ポリゴンとがありますが、
X 方向と Y 方向の両方に負の値が指定された場合はどちらのポリゴンでも
X 方向、Y 方向の両方で反転された位置に描画されます。
X 方向か Y 方向のいずれか一方にのみ負の値が指定された場合は、
位置としては X 方向か Y 方向のいずれかの方向に反転された位置になりますが、
それに加えてポリゴンの法線の方向が変わるためにポリゴンを裏から見たような形でレンダリングされます。
両面ポリゴンは裏から見た形で描画されますが、
片面ポリゴンは法線の方向の影響で描画される・されないが反転します。
このメソッドは setPerspective(int, int, int)
メソッドおよび setPerspective(int, int, int, int)
メソッドとは排他的な関係です。
このメソッドを呼び出した後は、レンダリングは全て平行投影で処理されます。
同様に、setPerspective(int, int, int)
メソッドおよび setPerspective(int, int, int, int)
メソッドを呼び出した後は、レンダリングは全て透視投影で処理されます。
sx
- X 方向のスケールを指定します。sy
- Y 方向のスケールを指定します。
public void setScreenView(int width, int height)
このメソッドは setPerspective(int, int, int)
メソッドおよび setPerspective(int, int, int, int)
メソッドとは排他的な関係です。
このメソッドを呼び出した後は、レンダリングは全て平行投影で処理されます。
同様に、setPerspective(int, int, int)
メソッドおよび setPerspective(int, int, int, int)
メソッドを呼び出した後は、レンダリングは全て透視投影で処理されます。
width
- 投影面の幅を指定します。height
- 投影面の高さを指定します。
IllegalArgumentException
- 引数 width, height のいずれかまたは両方に負の値が指定された場合に発生します。
public void setPerspective(int zNear, int zFar, int angle)
このメソッドは setScreenScale(int, int)
メソッドおよび setScreenView(int, int)
メソッドとは排他的な関係です。
このメソッドを呼び出した後は、レンダリングは全て透視投影で処理されます。
同様に、setScreenScale(int, int)
メソッドおよび setScreenView(int, int)
メソッドを呼び出した後は、レンダリングは全て平行投影で処理されます。
zNear
- カメラからニアクリップ面までの距離を指定します。zFar
- カメラからファークリップ面までの距離を指定します。angle
- 視野角を指定します。
視野角の値は4096分周円表現で、有効範囲は1〜2047、すなわち0度 < 視野角 < 180度です。
IllegalArgumentException
- 引数 zNear, zFar に、0 < zNear < zFar < 32768 の関係を満たしていない値が指定された場合に発生します。
IllegalArgumentException
- 引数 angle に 0 以下の値か 2048 以上の値が指定された場合に発生します。
public void setPerspective(int zNear, int zFar, int width, int height)
このメソッドは setScreenScale(int, int)
メソッドおよび setScreenView(int, int)
メソッドとは排他的な関係です。
このメソッドを呼び出した後は、レンダリングは全て透視投影で処理されます。
同様に、setScreenScale(int, int)
メソッドおよび setScreenView(int, int)
メソッドを呼び出した後は、レンダリングは全て平行投影で処理されます。
zNear
- カメラからニアクリップ面までの距離を指定します。zFar
- カメラからファークリップ面までの距離を指定します。width
- ニアクリップ面における投影面の幅を指定します。height
- ニアクリップ面における投影面の高さを指定します。
IllegalArgumentException
- 引数 zNear, zFar に、0 < zNear < zFar < 32768 の関係を満たしていない値が指定された場合に発生します。
IllegalArgumentException
- 引数 width, height のいずれかまたは両方に0以下の値が指定された場合に発生します。
public void drawFigure(Figure figure)
[DoJa-3.0]
DoJa-2.0 との互換性のため、
このメソッドでモデルを描画した時には、モデルに設定されているテクスチャの陰影設定
が反映されます。
すなわち、テクスチャのトゥーンシェーディングの設定に応じて、
内部で enableToonShader(boolean)
メソッドと
setToonParam(int, int, int)
メソッドが呼び出された状態となります。
テクスチャの陰影設定が反映される以外は、
renderFigure(Figure)
メソッドと
flush()
メソッドを続けて呼び出したのと同様の振る舞いとなります。
figure
- 描画するモデルオブジェクトを指定します。
NullPointerException
- 引数 figure が null の場合に発生します。
com.nttdocomo.ui.UIException
- 引数figureのモデルにテクスチャが設定されていない場合に発生します(ILLEGAL_STATE)。
RuntimeException
- 描画に失敗した場合に発生します。
public void renderFigure(Figure figure)
drawFigure(Figure)
メソッドとは異なり、
このメソッドを呼び出しても実際の描画は実行されず、
レンダリングの演算のみが行われます。
このメソッドを複数回呼び出すことで、複数体のモデルを描画することが可能になります。
このメソッドを呼び出した後に flush()
メソッドを呼び出すことで実際の描画が行われます。
このメソッドでモデルを描画した時には、
enableToonShader(boolean)
メソッドと
setToonParam(int,int,int)
メソッドによる陰影設定が反映されます。
モデルに設定されているテクスチャの陰影設定
は反映されません。
figure
- レンダリングを行うモデルオブジェクトを指定します。
NullPointerException
- 引数 figure に null が指定された場合に発生します。
com.nttdocomo.ui.UIException
- 引数 figure のモデルにテクスチャが設定されていない場合に発生します(ILLEGAL_STATE)。
ただし、モデルを全てカラーポリゴンで構築した場合はテクスチャは必要ないため、
引数figureのモデルにテクスチャが設定されていなくても例外は発生しません。
RuntimeException
- レンダリングに失敗した場合に発生します。
public void flush()
RuntimeException
- 描画に失敗した場合に発生します。
renderFigure(Figure)
,
renderPrimitives(PrimitiveArray, int)
,
renderPrimitives(PrimitiveArray, int, int, int)
public void enableSphereMap(boolean b)
setSphereTexture(Texture)
メソッドで設定するとともに、
モデルデータにおいても反射光(Specular)が有効なっている必要があります。
b
- 環境マッピング処理を有効にする場合は true を、無効にする場合は false を指定します。
public void setSphereTexture(Texture texture)
texture
- テクスチャオブジェクトを指定します。
テクスチャオブジェトは環境マッピング用に生成されたものでなければなりません。
NullPointerException
- 引数 texture が null の場合に発生します。
IllegalArgumentException
- 引数 texture が不正(モデルマッピング用に生成されたもの)な場合に発生します。
public void enableLight(boolean b)
b
- 光源対応処理を有効にする場合は true を、無効にする場合は false を指定します。
public void setAmbientLight(int intensity)
intensity
- 環境光の強さを指定します。
4096 を指定した時に 1.00 (100%) となります。
なお、強さ 1.00 (100%) とは、真正面から光を当てた場合にテクスチャの RGB 値そのものになることを表します。
IllegalArgumentException
- 引数 intensity に負の値か、4096 より大きい値が指定された場合に発生します。
public void setDirectionLight(Vector3D direction, int intensity)
direction
- 平行光源の方向を表す、視点座標系でのベクトルを指定します。intensity
- 平行光源の強さを指定します。
4096 を指定した時に 1.00 (100%) となります。
なお、強さ 1.00 (100%) とは、真正面から光を当てた場合にテクスチャの RGB 値そのものになることを表します。
NullPointerException
- 引数 direction が null の場合に発生します。
IllegalArgumentException
- 引数 direction が零ベクトルの場合に発生します。
IllegalArgumentException
- 引数 intensity に負の値か、4096 より大きい値が指定された場合に発生します。
public void enableSemiTransparent(boolean flag)
enableLight(boolean)
)とは無関係に半透明効果が得られます。
ただし、半透明効果を得るには、モデルデータ自体の「半透明属性」が有効になっている必要があります。
[DoJa-3.0]
プリミティブの描画において半透明効果を得るには、
プリミティブ自体にブレンドに関するプリミティブ属性
(ATTR_BLEND_HALF
, ATTR_BLEND_ADD
, ATTR_BLEND_SUB
)
が設定されている必要があります。
public void setClipRect3D(int x, int y, int width, int height)
x
- クリッピング領域の矩形の左上の X 座標を指定します。y
- クリッピング領域の矩形の左上の Y 座標を指定します。width
- クリッピング領域の矩形の幅を指定します。height
- クリッピング領域の矩形の高さを指定します。
IllegalArgumentException
- 引数 width, height のいずれかまたは両方に0未満の値が指定された場合に発生します。
public void enableToonShader(boolean b)
drawFigure(Figure)
メソッド以外の描画ではこのメソッドの設定がレンダリングに影響します。
b
- トゥーンシェーディングを有効にする場合は true を、無効にする場合は false を指定します。setToonParam(int,int,int)
public void setToonParam(int threshold, int high, int low)
d
%と計算されたとすると、
このメソッド呼び出しにより、実際に描画される明るさは、
以下のようになります。
d
> threshold
の時、
high
% の明るさ。
d
≤ threshold
の時、
low
% の明るさ。
threshold
- 上記threashold
の値を指定します。
区間[0, 255]の値を指定することができ、
255が100%を表します。high
- 上記high
の値を指定します。
区間[0, 255]の値を指定することができ、
255が100%を表します。low
- 上記low
の値を指定します。
区間[0, 255]の値を指定することができ、
255が100%を表します。
IllegalArgumentException
- 引数のいずれかが区間[0, 255]に収まっていない場合に発生します。
enableToonShader(boolean)
public void setPrimitiveTextureArray(Texture texture)
setPrimitiveTextureArray(Texture[])
メソッドで長さ1のテクスチャ配列を引数に指定するのと同じです。
setPrimitiveTexture(int)
メソッドを呼び出します。
texture
- テクスチャを指定します。
NullPointerException
- 引数 texture に null が指定された場合に発生します。
IllegalArgumentException
- 引数 texture が不正(環境マッピング用に生成されたもの)な場合に発生します。
public void setPrimitiveTextureArray(Texture[] textures)
setPrimitiveTexture(int)
メソッドを呼び出します。
textures
- テクスチャ配列を指定します。
NullPointerException
- 引数 textures または引数 textures の配列の要素に null が指定された場合に発生します。
IllegalArgumentException
- 引数 textures のいずれかの要素が不正(環境マッピング用に生成されたもの)な場合に発生します。
public void setPrimitiveTexture(int index)
setPrimitiveTextureArray(Texture)
メソッドまたは setPrimitiveTextureArray(Texture[])
メソッドを呼び出してテクスチャ配列を設定しておき、
このメソッドを呼び出して配列のインデックスを指定することでテクスチャの設定を行います。
index
- テクスチャ配列中のインデックスを指定します。
NullPointerException
- テクスチャ配列が未設定の場合に発生します。
ArrayIndexOutOfBoundsException
- 引数 index に負の値またはテクスチャ配列の要素数以上の値が指定された場合に発生します。
public void renderPrimitives(PrimitiveArray primitives, int attr)
setPrimitiveTextureArray(Texture)
メソッドまたは
setPrimitiveTextureArray(Texture[])
メソッドと、
setPrimitiveTexture(int)
メソッドによってプリミティブから参照されるテクスチャを設定しておく必要があります。
ATTR_LIGHT
, ATTR_SPHERE_MAP
, ATTR_COLOR_KEY
,
ATTR_BLEND_NORMAL
, ATTR_BLEND_HALF
,
ATTR_BLEND_ADD
, ATTR_BLEND_SUB
を論理和で組み合わせて指定します。
このメソッドを呼び出しても実際の描画は実行されず、レンダリングの演算のみが行われます。
このメソッドを呼び出した後に flush()
メソッドを呼び出すことで実際の描画が行われます。
primitives
- レンダリングの演算を行うプリミティブ情報を格納したプリミティブ配列オブジェクトを指定します。attr
- レンダリングの演算を行う際に使用するプリミティブ属性を指定します。
NullPointerException
- 引数 primitives に null が指定された場合に発生します。
IllegalArgumentException
- 引数 attr に不正な値が指定された場合に発生します。
IllegalArgumentException
- 引数 primitives にテクスチャを必要とするプリミティブ配列オブジェクトが指定されたのに、Graphics3D オブジェクトに setPrimitiveTexture(int)
メソッドでプリミティブ描画に使用するテクスチャが設定されていない場合に発生します。
RuntimeException
- レンダリングに失敗した場合に発生します。
public void renderPrimitives(PrimitiveArray primitives, int offset, int length, int attr)
setPrimitiveTextureArray(Texture)
メソッドまたは
setPrimitiveTextureArray(Texture[])
メソッドと、
setPrimitiveTexture(int)
メソッドによってプリミティブから参照されるテクスチャを設定しておく必要があります。
ATTR_LIGHT
, ATTR_SPHERE_MAP
, ATTR_COLOR_KEY
,
ATTR_BLEND_NORMAL
, ATTR_BLEND_HALF
,
ATTR_BLEND_ADD
, ATTR_BLEND_SUB
を論理和で組み合わせて指定します。
このメソッドを呼び出しても実際の描画は実行されず、レンダリングの演算のみが行われます。
このメソッドを呼び出した後に flush()
メソッドを呼び出すことで実際の描画が行われます。
primitives
- レンダリングの演算を行うプリミティブ情報を格納したプリミティブ配列オブジェクトを指定します。offset
- プリミティブ配列オブジェクトの中で使用するプリミティブの先頭のオフセットを指定します。length
- プリミティブ配列オブジェクトの中で使用するプリミティブの数を指定します。attr
- レンダリングの演算を行う際に使用するプリミティブ属性を指定します。
NullPointerException
- 引数 primitives に null が指定された場合に発生します。
IllegalArgumentException
- 引数 attr に不正な値が指定された場合に発生します。
ArrayIndexOutOfBoundsException
- 引数 offset に負の値が指定された場合、引数 length に負の値が指定された場合、引数 offset または引数 offset + length の値がプリミティブ配列オブジェクトのプリミティブ数を超える場合に発生します。
IllegalArgumentException
- 引数 primitives にテクスチャを必要とするプリミティブ配列オブジェクトが指定されたのに、Graphics3D オブジェクトに setPrimitiveTexture(int)
メソッドでプリミティブ描画に使用するテクスチャが設定されていない場合に発生します。
RuntimeException
- レンダリングに失敗した場合に発生します。
public void executeCommandList(int[] commandlist)
コマンド配列に視点座標への変換行列の指定
が含まれている場合、
あらかじめ setViewTransArray(AffineTrans[])
メソッドによって視点座標への変換行列の配列を設定しておく必要があります。
コマンド配列にテクスチャの指定
が含まれている場合、
あらかじめ setPrimitiveTextureArray(Texture)
メソッドまたは setPrimitiveTextureArray(Texture[])
メソッドによってテクスチャの配列を設定しておく必要があります。
コマンド配列は、例えば以下のような形で使用します。
int commandlist[] = {
COMMAND_LIST_VERSION_1,
COMMAND_SCREEN_CENTER, 120, 120,
COMMAND_SCREEN_SCALE, 4096, 4096,
COMMAND_RENDER_TRIANGLES | COLOR_PER_FACE | ATTR_LIGHT | 1 << 16,
0, 0, 0, 1024,1024,1024, 2048, 2048, 2048, 0x00112233,
COMMAND_FLUSH,
COMMAND_END
};
g3d.executeCommandList(commandlist);
commandlist
- コマンド配列を指定します。
NullPointerException
- 引数 commandlist に null が指定された場合に発生します。
IllegalArgumentException
- 引数 commandlist の先頭の要素が、端末がサポートしているコマンドリストのバージョン以外だった場合に発生します。
RuntimeException
- コマンド配列の実行に失敗した場合に発生します。
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
NTT DoCoMo,Inc.
本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。
Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。
「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。