com.jblend.graphics.j3d
インタフェース Graphics3D


public interface Graphics3D

3Dグラフィックスインターフェース


フィールドの概要
static int COMMAND_AFFINE_INDEX
          FigureLayout#selectAffineTrans( int ) に相当するコマンドです(=0x87000000)。
static int COMMAND_AMBIENT_LIGHT
          Light#setAmbIntensity( int ) に相当するコマンドです(=0xa0000000)。
static int COMMAND_ATTRIBUTE
          環境属性を設定することを表すコマンドです(=0x83000000)。
static int COMMAND_CENTER
          FigureLayout#setCenter( int, int )に相当するコマンドです(=0x85000000)。
static int COMMAND_CLIP
          クリップ座標を指定するためのコマンドです(=0x84000000)。
static int COMMAND_DIRECTION_LIGHT
          Light#setDirection( Vector3D )、Light#setDirIntensity( int )に相当するコマンドです(=0xa1000000)。
static int COMMAND_END
          コマンドリストの終了を表すコマンドです(=0x80000000)。
static int COMMAND_FLUSH
          flush() に相当するコマンドです(=0x82000000)。
static int COMMAND_LIST_VERSION_1_0
          コマンドリストのバージョンを表すコマンドです。
static int COMMAND_NOP
          無処理を表すコマンドです(=0x81000000)。
static int COMMAND_PARALLEL_SCALE
          FigureLayout#setScale( int, int )に相当するコマンドです(=0x90000000)。
static int COMMAND_PARALLEL_SIZE
          FigureLayout#setParallelSize( int, int ) に相当するコマンドです(=0x91000000)。
static int COMMAND_PERSPECTIVE_FOV
          FigureLayout#setPerspective( int, int, int ) に相当するコマンドです(=0x92000000)。
static int COMMAND_PERSPECTIVE_WH
          FigureLayout#setPerspective( int, int, int, int ) に相当するコマンドです(=0x93000000)。
static int COMMAND_TEXTURE_INDEX
          描画に使用するテクスチャ配列を切り換えるコマンドです(=0x86000000)。
static int COMMAND_THRESHOLD
          Effect3D#setThreshold( int, int, int ) に相当するコマンドです(=0xaf000000)。
static int ENV_ATTR_LIGHTING
          光源を有効とするための環境属性です(=1)。
static int ENV_ATTR_SEMI_TRANSPARENT
          半透明処理(半透明、加算、減算)を有効とするための環境属性です(=8)。
static int ENV_ATTR_SPHERE_MAP
          スフィアマップを有効とするための環境属性です(=2)。
static int ENV_ATTR_TOON_SHADING
          トゥーンシェーディングを行うための環境属性です(=4)。
static int PATTR_BLEND_ADD
          加算処理を行うためのプリミティブ属性です(=0x40)。
static int PATTR_BLEND_HALF
          半透明処理を行うためのプリミティブ属性です(=0x20)。
static int PATTR_BLEND_NORMAL
          ブレンド処理を行うためのプリミティブ属性です(=0x00)。
static int PATTR_BLEND_SUB
          減算処理を行うためのプリミティブ属性です(=0x60)。
static int PATTR_COLORKEY
          カラーキーによる透過処理を行うためのプリミティブ属性です(=0x10)。
static int PATTR_LIGHTING
          光源を有効とするためのプリミティブ属性です(=0x01)。
static int PATTR_SPHERE_MAP
          スフィアマップを有効とするためのプリミティブ属性です(=0x02)。
static int PDATA_COLOR_NONE
          色情報を持たないプリミティブデータタイプです(=0x0000)。
static int PDATA_COLOR_PER_COMMAND
          コマンド単位で色情報を持つプリミティブデータタイプです(=0x0400)。
static int PDATA_COLOR_PER_FACE
          面単位で色情報を持つプリミティブデータタイプです(=0x0800)。
static int PDATA_NORMAL_NONE
          法線情報を持たないプリミティブデータタイプです(=0x0000)。
static int PDATA_NORMAL_PER_FACE
          面単位で法線情報を持つプリミティブデータタイプです(=0x0200)。
static int PDATA_NORMAL_PER_VERTEX
          頂点単位で法線情報を持つプリミティブデータタイプです(=0x0300)。
static int PDATA_POINT_SPRITE_PARAMS_PER_CMD
          コマンド単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x1000)。
static int PDATA_POINT_SPRITE_PARAMS_PER_FACE
          面単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x2000)。
static int PDATA_POINT_SPRITE_PARAMS_PER_VERTEX
          頂点単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x3000)。
static int PDATA_TEXURE_COORD
          テクスチャ位置情報を持つプリミティブデータタイプです(=0x3000)。
static int PDATA_TEXURE_COORD_NONE
          テクスチャ位置情報を持たないプリミティブデータタイプです(=0x0000)。
static int POINT_SPRITE_LOCAL_SIZE
          モデル座標系におけるサイズを指定する、ポイントスプライト用のフラグです(=0)。
static int POINT_SPRITE_NO_PERS
          透視投影においてパースを無効にする、ポイントスプライト用のフラグです(=2)。
static int POINT_SPRITE_PERSPECTIVE
          透視投影においてパースを有効にする、ポイントスプライト用のフラグです(=0)。
static int POINT_SPRITE_PIXEL_SIZE
          スクリーン座標系におけるサイズを指定する、ポイントスプライト用のフラグです(=1)。
static int PRIMITIVE_LINES
          線を描画することを表すコマンドです(=0x02000000)。
static int PRIMITIVE_POINT_SPRITES
          ポイントスプライトを描画することを表すコマンドです(=0x05000000)。
static int PRIMITIVE_POINTS
          点を描画することを表すコマンドです(=0x01000000)。
static int PRIMITIVE_QUADS
          四角形を描画することを表すコマンドです(=0x04000000)。
static int PRIMITIVE_TRIANGLES
          三角形を描画することを表すコマンドです(=0x03000000)。
 
メソッドの概要
 void drawCommandList(Texture[] textures, int x, int y, FigureLayout layout, Effect3D effect, int[] commandlist)
          コマンド配列を指定して描画処理を行います。
 void drawCommandList(Texture texture, int x, int y, FigureLayout layout, Effect3D effect, int[] commandlist)
          コマンド配列を指定して描画処理を行います。
 void drawFigure(Figure figure, int x, int y, FigureLayout layout, Effect3D effect)
          Figureを描画します。
 void flush()
          renderFigure() で設定されたモデルデータ、及び drawCommandList(), renderPrimitives() で設定された描画要素のレンダリング演算結果を実際に描画します。
 void renderFigure(Figure figure, int x, int y, FigureLayout layout, Effect3D effect)
          モデルデータを設定し、レンダリングの演算を実行します。
 void renderPrimitives(Texture texture, int x, int y, FigureLayout layout, Effect3D effect, int command, int numPrimitives, int[] vertexCoords, int[] normals, int[] textureCoords, int[] colors)
          プリミティブの描画を登録します。
 

フィールドの詳細

COMMAND_LIST_VERSION_1_0

public static final int COMMAND_LIST_VERSION_1_0
コマンドリストのバージョンを表すコマンドです。
導入されたバージョン:
JSCL1.2

COMMAND_END

public static final int COMMAND_END
コマンドリストの終了を表すコマンドです(=0x80000000)。
導入されたバージョン:
JSCL1.2

COMMAND_NOP

public static final int COMMAND_NOP
無処理を表すコマンドです(=0x81000000)。 このコマンドを設定する場合は、無視する処理の数との論理和を設定します。
導入されたバージョン:
JSCL1.2

COMMAND_FLUSH

public static final int COMMAND_FLUSH
flush() に相当するコマンドです(=0x82000000)。
導入されたバージョン:
JSCL1.2

COMMAND_ATTRIBUTE

public static final int COMMAND_ATTRIBUTE
環境属性を設定することを表すコマンドです(=0x83000000)。 このコマンドを設定する場合は、環境属性(ENV_ATTR_XXXX)との論理和を設定します。
導入されたバージョン:
JSCL1.2

COMMAND_CLIP

public static final int COMMAND_CLIP
クリップ座標を指定するためのコマンドです(=0x84000000)。 このコマンドの後にはクリップの範囲をleft,top,right,bottomの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_CENTER

public static final int COMMAND_CENTER
FigureLayout#setCenter( int, int )に相当するコマンドです(=0x85000000)。 このコマンドの後には、スクリーンの中心座標をx,yの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_TEXTURE_INDEX

public static final int COMMAND_TEXTURE_INDEX
描画に使用するテクスチャ配列を切り換えるコマンドです(=0x86000000)。 このコマンドを設定する場合は、使用するテクスチャインデックスとの論理和を設定します。
導入されたバージョン:
JSCL1.2

COMMAND_AFFINE_INDEX

public static final int COMMAND_AFFINE_INDEX
FigureLayout#selectAffineTrans( int ) に相当するコマンドです(=0x87000000)。 このコマンドを使用する場合は、あらかじめFigureLayout#setAffineTransArray( AffineTrans[] )で アフィン変換の配列を設定しておく必要があります。 このコマンドを指定する場合は、使用する視点変換行列のインデックスとの論理和を設定します。
導入されたバージョン:
JSCL1.2

COMMAND_PARALLEL_SCALE

public static final int COMMAND_PARALLEL_SCALE
FigureLayout#setScale( int, int )に相当するコマンドです(=0x90000000)。 このコマンドの後には、平行投影スケールを、x,yの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_PARALLEL_SIZE

public static final int COMMAND_PARALLEL_SIZE
FigureLayout#setParallelSize( int, int ) に相当するコマンドです(=0x91000000)。 このコマンドの後には、平行投影サイズを、幅、高さの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_PERSPECTIVE_FOV

public static final int COMMAND_PERSPECTIVE_FOV
FigureLayout#setPerspective( int, int, int ) に相当するコマンドです(=0x92000000)。 このコマンドの後には、透視投影パラメータを、ニアクリップ面までの距離、 ファークリップ面までの距離、視野角の順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_PERSPECTIVE_WH

public static final int COMMAND_PERSPECTIVE_WH
FigureLayout#setPerspective( int, int, int, int ) に相当するコマンドです(=0x93000000)。 このコマンドの後には、透視投影パラメータを、ニアクリップ面までの距離、 ファークリップ面までの距離、ニアクリップ面の幅、ニアクリップ面の高さの順で 設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_AMBIENT_LIGHT

public static final int COMMAND_AMBIENT_LIGHT
Light#setAmbIntensity( int ) に相当するコマンドです(=0xa0000000)。 このコマンドの後には、環境光の強さを設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_DIRECTION_LIGHT

public static final int COMMAND_DIRECTION_LIGHT
Light#setDirection( Vector3D )、Light#setDirIntensity( int )に相当するコマンドです(=0xa1000000)。 このコマンドの後には、光源方向x,y,z(Vector3Dのx,y,z成分)、 光源の強さの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

COMMAND_THRESHOLD

public static final int COMMAND_THRESHOLD
Effect3D#setThreshold( int, int, int ) に相当するコマンドです(=0xaf000000)。 このコマンドの後には、threshold、high、lowの順で設定する必要があります。
導入されたバージョン:
JSCL1.2

PRIMITIVE_POINTS

public static final int PRIMITIVE_POINTS
点を描画することを表すコマンドです(=0x01000000)。
導入されたバージョン:
JSCL1.2

PRIMITIVE_LINES

public static final int PRIMITIVE_LINES
線を描画することを表すコマンドです(=0x02000000)。
導入されたバージョン:
JSCL1.2

PRIMITIVE_TRIANGLES

public static final int PRIMITIVE_TRIANGLES
三角形を描画することを表すコマンドです(=0x03000000)。
導入されたバージョン:
JSCL1.2

PRIMITIVE_QUADS

public static final int PRIMITIVE_QUADS
四角形を描画することを表すコマンドです(=0x04000000)。
導入されたバージョン:
JSCL1.2

PRIMITIVE_POINT_SPRITES

public static final int PRIMITIVE_POINT_SPRITES
ポイントスプライトを描画することを表すコマンドです(=0x05000000)。
導入されたバージョン:
JSCL1.2

POINT_SPRITE_LOCAL_SIZE

public static final int POINT_SPRITE_LOCAL_SIZE
モデル座標系におけるサイズを指定する、ポイントスプライト用のフラグです(=0)。
導入されたバージョン:
JSCL1.2

POINT_SPRITE_PIXEL_SIZE

public static final int POINT_SPRITE_PIXEL_SIZE
スクリーン座標系におけるサイズを指定する、ポイントスプライト用のフラグです(=1)。
導入されたバージョン:
JSCL1.2

POINT_SPRITE_PERSPECTIVE

public static final int POINT_SPRITE_PERSPECTIVE
透視投影においてパースを有効にする、ポイントスプライト用のフラグです(=0)。
導入されたバージョン:
JSCL1.2

POINT_SPRITE_NO_PERS

public static final int POINT_SPRITE_NO_PERS
透視投影においてパースを無効にする、ポイントスプライト用のフラグです(=2)。
導入されたバージョン:
JSCL1.2

ENV_ATTR_LIGHTING

public static final int ENV_ATTR_LIGHTING
光源を有効とするための環境属性です(=1)。
導入されたバージョン:
JSCL1.2

ENV_ATTR_SPHERE_MAP

public static final int ENV_ATTR_SPHERE_MAP
スフィアマップを有効とするための環境属性です(=2)。
導入されたバージョン:
JSCL1.2

ENV_ATTR_TOON_SHADING

public static final int ENV_ATTR_TOON_SHADING
トゥーンシェーディングを行うための環境属性です(=4)。
導入されたバージョン:
JSCL1.2

ENV_ATTR_SEMI_TRANSPARENT

public static final int ENV_ATTR_SEMI_TRANSPARENT
半透明処理(半透明、加算、減算)を有効とするための環境属性です(=8)。
導入されたバージョン:
JSCL1.2

PATTR_LIGHTING

public static final int PATTR_LIGHTING
光源を有効とするためのプリミティブ属性です(=0x01)。
導入されたバージョン:
JSCL1.2

PATTR_SPHERE_MAP

public static final int PATTR_SPHERE_MAP
スフィアマップを有効とするためのプリミティブ属性です(=0x02)。
導入されたバージョン:
JSCL1.2

PATTR_COLORKEY

public static final int PATTR_COLORKEY
カラーキーによる透過処理を行うためのプリミティブ属性です(=0x10)。
導入されたバージョン:
JSCL1.2

PATTR_BLEND_NORMAL

public static final int PATTR_BLEND_NORMAL
ブレンド処理を行うためのプリミティブ属性です(=0x00)。
導入されたバージョン:
JSCL1.2

PATTR_BLEND_HALF

public static final int PATTR_BLEND_HALF
半透明処理を行うためのプリミティブ属性です(=0x20)。
導入されたバージョン:
JSCL1.2

PATTR_BLEND_ADD

public static final int PATTR_BLEND_ADD
加算処理を行うためのプリミティブ属性です(=0x40)。
導入されたバージョン:
JSCL1.2

PATTR_BLEND_SUB

public static final int PATTR_BLEND_SUB
減算処理を行うためのプリミティブ属性です(=0x60)。
導入されたバージョン:
JSCL1.2

PDATA_NORMAL_NONE

public static final int PDATA_NORMAL_NONE
法線情報を持たないプリミティブデータタイプです(=0x0000)。
導入されたバージョン:
JSCL1.2

PDATA_NORMAL_PER_FACE

public static final int PDATA_NORMAL_PER_FACE
面単位で法線情報を持つプリミティブデータタイプです(=0x0200)。
導入されたバージョン:
JSCL1.2

PDATA_NORMAL_PER_VERTEX

public static final int PDATA_NORMAL_PER_VERTEX
頂点単位で法線情報を持つプリミティブデータタイプです(=0x0300)。
導入されたバージョン:
JSCL1.2

PDATA_COLOR_NONE

public static final int PDATA_COLOR_NONE
色情報を持たないプリミティブデータタイプです(=0x0000)。
導入されたバージョン:
JSCL1.2

PDATA_COLOR_PER_COMMAND

public static final int PDATA_COLOR_PER_COMMAND
コマンド単位で色情報を持つプリミティブデータタイプです(=0x0400)。
導入されたバージョン:
JSCL1.2

PDATA_COLOR_PER_FACE

public static final int PDATA_COLOR_PER_FACE
面単位で色情報を持つプリミティブデータタイプです(=0x0800)。
導入されたバージョン:
JSCL1.2

PDATA_TEXURE_COORD_NONE

public static final int PDATA_TEXURE_COORD_NONE
テクスチャ位置情報を持たないプリミティブデータタイプです(=0x0000)。
導入されたバージョン:
JSCL1.2

PDATA_POINT_SPRITE_PARAMS_PER_CMD

public static final int PDATA_POINT_SPRITE_PARAMS_PER_CMD
コマンド単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x1000)。
導入されたバージョン:
JSCL1.2

PDATA_POINT_SPRITE_PARAMS_PER_FACE

public static final int PDATA_POINT_SPRITE_PARAMS_PER_FACE
面単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x2000)。
導入されたバージョン:
JSCL1.2

PDATA_POINT_SPRITE_PARAMS_PER_VERTEX

public static final int PDATA_POINT_SPRITE_PARAMS_PER_VERTEX
頂点単位でポイントスプライトの位置情報を持つプリミティブデータタイプです(=0x3000)。
導入されたバージョン:
JSCL1.2

PDATA_TEXURE_COORD

public static final int PDATA_TEXURE_COORD
テクスチャ位置情報を持つプリミティブデータタイプです(=0x3000)。
導入されたバージョン:
JSCL1.2
メソッドの詳細

renderPrimitives

public void renderPrimitives(Texture texture,
                             int x,
                             int y,
                             FigureLayout layout,
                             Effect3D effect,
                             int command,
                             int numPrimitives,
                             int[] vertexCoords,
                             int[] normals,
                             int[] textureCoords,
                             int[] colors)
プリミティブの描画を登録します。

同じ種類のプリミティブを、複数個登録することができます。
登録後、flush() を呼ぶことで実際に描画が実行されます。

以下の情報を登録する必要があります:

1.プリミティブの種類と属性、データタイプ
下記情報の論理和を指定します:
プリミティブの種類 | プリミティブの属性 | プリミティブのデータタイプ
(例)
PRIMITIVE_QUADS |
PDATA_NORMAL_PER_FACE | PDATA_COLOR_NONE | PDATA_TEXURE_COORD |
PATTR_LIGHTING | PATTR_SPHERE_MAP | PATTR_BLEND_HALF

2.プリミティブの総数
1〜255(個)が指定可能です。

3.プリミティブを描画する時に使用する頂点情報の配列
プリミティブの種類必要な頂点の数
点(PRIMITIVE_POINTS)プリミティブ数 x 1
ライン(PRIMITIVE_LINES)プリミティブ数 x 2
三角ポリゴン(PRIMITIVE_TRIANGLES)プリミティブ数 x 3
四角ポリゴン(PRIMITIVE_QUADS)プリミティブ数 x 4
ポイントスプライト(PRIMITIVE_POINT_SPRITES)プリミティブ数 x 1
頂点は(x,y,z)の三要素から成り立ちますので、 実際の配列の大きさは上記表の頂点数x3 となります。
配列の格納順序:int[] vertexCoords = {x0, y0, z0, x1, y1, z1, ...}

4.プリミティブを描画する時に使用する法線情報の配列
プリミティブの種類プリミティブのデータタイプ必要な法線の数
点(PRIMITIVE_POINTS)n/a0
ライン(PRIMITIVE_LINES)n/a0
三角ポリゴン(PRIMITIVE_TRIANGLES) 法線情報を持たない
(PDATA_NORMAL_NONE )
0
面単位で法線情報を持つ
(PDATA_NORMAL_PER_FACE)
プリミティブ数 x 1
頂点単位で法線情報を持つ
(PDATA_NORMAL_PER_VERTEX)
プリミティブ数 x 3
四角ポリゴン(PRIMITIVE_QUADS) 法線情報を持たない
(PDATA_NORMAL_NONE )
0
面単位で法線情報を持つ
(PDATA_NORMAL_PER_FACE)
プリミティブ数 x 1
頂点単位で法線情報を持つ
(PDATA_NORMAL_PER_VERTEX)
プリミティブ数 x 4
ポイントスプライト(PRIMITIVE_POINT_SPRITES)n/a0
法線は(x,y,z)の三要素から成り立ちますので、 実際の配列の大きさは上記表の法線数x3 となります。
配列の格納順序:int[] normals = {x0, y0, z0, x1, y1, z1, ...}

5.プリミティブを描画する時に使用するテクスチャ位置情報の配列
プリミティブの種類プリミティブのデータタイプ必要なテクスチャ位置情報の数
点(PRIMITIVE_POINTS)n/a0
ライン(PRIMITIVE_LINES)n/a0
三角ポリゴン(PRIMITIVE_TRIANGLES) テクスチャ位置情報を持たない
(PDATA_TEXURE_COORD_NONE)
0
テクスチャ位置情報を持つ
(PDATA_TEXURE_COORD)
プリミティブ数 x 3
四角ポリゴン(PRIMITIVE_QUADS) テクスチャ位置情報を持たない
(PDATA_TEXURE_COORD_NONE)
0
テクスチャ位置情報を持つ
(PDATA_TEXURE_COORD)
プリミティブ数 x 4
ポイントスプライト(PRIMITIVE_POINT_SPRITES) コマンド単位でポイントスプライトパラメータを持つ
(PDATA_POINT_SPRITE_PARAMS_PER_CMD)
1
(ポイントスプライトパラメータ)
面単位でポイントスプライトパラメータを持つ
(PDATA_POINT_SPRITE_PARAMS_PER_FACE)
プリミティブ数×1
(ポイントスプライトパラメータ)
頂点単位でポイントスプライトパラメータを持つ
(PDATA_POINT_SPRITE_PARAMS_PER_VERTEX)
プリミティブ数×1
(ポイントスプライトパラメータ)
三角ポリゴン及び四角ポリゴンの頂点情報はテクスチャ上の二次元座標(x,y)から成り立ちますので、 実際の配列の大きさは上記表のテクスチャ位置情報数x2 となります。
配列の格納順序:int[] textureCoords = {x0, y0, x1, y1, ...}


ポイントスプライトの場合は、以下のポイントスプライトパラメータを指定します。
・ポイントスプライトの幅(w)
・ポイントスプライトの高さ(h)
・ポイントスプライトのアングル(360°=4096)(a)
・ポイントスプライトの左上に相当するテクスチャ位置情報(x,y)
・ポイントスプライトの右下に相当するテクスチャ位置情報(x,y)
・ポイントスプライトの表示フラグ(f)
(POINT_SPRITE_LOCAL_SIZE/POINT_SPRITE_PIXEL_SIZE/POINT_SPRITE_PERSPECTIVE/POINT_SPRITE_NO_PERS)
実際の配列の大きさは上記プリミティブ数x8 となります。
配列の格納順序:int[] textureCoords = {w0, h0, a0, x00, y00, x01, y01, f0, w1, h1, a1, x10, y10, x11, y11, f1, ...}

PDATA_POINT_SPRITE_PARAMS_PER_FACE と PDATA_POINT_SPRITE_PARAMS_PER_VERTEX は定義が異なりますが処理としては同じになります。

ポイントスプライトの表示フラグは、 POINT_SPRITE_LOCAL_SIZE,POINT_SPRITE_PIXEL_SIZE,POINT_SPRITE_PERSPECTIVE,POINT_SPRITE_NO_PERS の 論理和で表し、これによりポイントスプライトの幅と高さの数値の基準を指定します。
但し、POINT_SPRITE_LOCAL_SIZE は POINT_SPRITE_PIXEL_SIZE と、 POINT_SPRITE_PERSPECTIVE は POINT_SPRITE_NO_PERS とそれぞれ排他関係にあります。
各フラグの組み合わせは以下のとおりです。
投影方法表示フラグ(サイズ)表示フラグ(パース)説明
透視投影POINT_SPRITE_LOCAL_SIZEPOINT_SPRITE_PERSPECTIVE視点座標系におけるサイズを指定
POINT_SPRITE_NO_PERS未定義
POINT_SPRITE_PIXEL_SIZEPOINT_SPRITE_PERSPECTIVEポイントスプライトがニアクリップ面にあるときのスクリーン座標系におけるサイズ
POINT_SPRITE_NO_PERSスクリーン座標系におけるサイズ
平行投影POINT_SPRITE_LOCAL_SIZEPOINT_SPRITE_PERSPECTIVE視点座標系におけるサイズ
POINT_SPRITE_NO_PERS
POINT_SPRITE_PIXEL_SIZEPOINT_SPRITE_PERSPECTIVEスクリーン座標系におけるサイズ
POINT_SPRITE_NO_PERS

6.プリミティブを描画する時に使用する色情報の配列
プリミティブの種類プリミティブのデータタイプ必要な色情報の数
点(PRIMITIVE_POINTS) コマンド単位で色情報を持つ
(PDATA_COLOR_PER_COMMAND)
1
面単位で色情報を持つ
(PDATA_COLOR_PER_FACE)
プリミティブ数 x 1
ライン(PRIMITIVE_LINES) コマンド単位で色情報を持つ
(PDATA_COLOR_PER_COMMAND)
1
面単位で色情報を持つ
(PDATA_COLOR_PER_FACE)
プリミティブ数 x 1
三角ポリゴン(PRIMITIVE_TRIANGLES) 色情報を持たない
(PDATA_COLOR_NONE )
0
コマンド単位で色情報を持つ
(PDATA_COLOR_PER_COMMAND)
1
面単位で色情報を持つ
(PDATA_COLOR_PER_FACE)
プリミティブ数 x 1
四角ポリゴン(PRIMITIVE_QUADS) 色情報を持たない
(PDATA_COLOR_NONE )
0
コマンド単位で色情報を持つ
(PDATA_COLOR_PER_COMMAND)
1
面単位で色情報を持つ
(PDATA_COLOR_PER_FACE)
プリミティブ数 x 1
ポイントスプライト(PRIMITIVE_POINT_SPRITES) 0
色情報はRGBで各要素が8bitの24bitの形式で指定します。
実際の配列の大きさは上記表の色情報数x1 となります。
配列の格納順序:int[] colors = {((r0 << 16) | (g0 << 8) | (b0)), ((r1 << 16) | (g1 << 8) | (b1)), ...}

パラメータ:
texture - プリミティブ描画でテクスチャを使用する場合に指定します。
x - 描画位置のX座標
y - 描画位置のY座標
layout - 描画レイアウト
effect - 描画効果
command - プリミティブの種類、属性、データタイプを論理和で組み合わせたもの
numPrimitives - プリミティブの総数
vertexCoords - プリミティブを描画する時に使用する頂点情報の配列
normals - プリミティブを描画する時に使用する法線情報の配列
textureCoords - プリミティブを描画する時に使用するテクスチャ位置情報の配列
colors - プリミティブを描画する時に使用する色情報の配列
例外:
NullPointerException - 以下の場合に発生します。
  • layout、effect がnullの場合
  • vertexCoords が null の場合
  • 法線情報を使用する描画で、normal が null の場合
  • テクスチャを使用する描画で、texture、または textureCoords が null の場合
  • 色情報を使用する描画で、colors が null の場合
java.lang.IllegalArgumentException - 以下の場合に発生します。
  • command が 負の値の場合に発生
  • numPrimitives が 0以下または256以上の場合に発生
ArrayIndexOutOfBoundsException - 描画内容に対して、vertexCoords、normals、textureCoords、colors に 指定された配列要素が不足している場合発生します。
導入されたバージョン:
JSCL1.2

drawCommandList

public void drawCommandList(Texture[] textures,
                            int x,
                            int y,
                            FigureLayout layout,
                            Effect3D effect,
                            int[] commandlist)
コマンド配列を指定して描画処理を行います。

このメソッドはデータの指定方法が renderPrimitives() より複雑ですが、 実際の描画までのメソッドの呼び出し数を減らすことでオーバーヘッドを削減することを目的としています。 そのため一部メソッド(後述)の呼び出しはこのメソッドに対しては効果がなく、 代わりにコマンド配列の要素として指定する必要があります。

このメソッドの commandlist 中で指定した描画要素は、 コマンドでCOMMAND_FLUSHを指定するか、または flush() メソッドを呼び出すまでは実際に描画されません。

引数textures で指定したテクスチャ配列は、16個までが有効です。17 個目以降は COMMAND_TEXTURE_INDEX で指定することはできません。

※注意事項
コマンドにCOMMAND_FLUSHを指定した場合、ネイティブ動作の 3D エンジンは実際に描画要素を描画しますが、 Java 側で保持している資源は flush() メソッドが呼び出されるまで解放されません。 そのため、ゲームなどのリアルタイムに描画を続ける Java アプリケーションにおいて、 flush() メソッドを呼び出さないでこのメソッドを連続して実行していると、 Java ヒープの空きが減少していくことになります。

これを回避するために、 1 フレーム描画するごとに 1 度 flush() を呼び出してください。

このメソッドの処理時に無効になるメソッドと、コマンド形式での書式を以下に示します。

 FigureLayout#setCenter( x, y ) -> COMMAND_CENTER, x, y
 FigureLayout#selectAffineTrans( index ) -> COMMAND_AFFINE_INDEX | index
 FigureLayout#setScale( width, height ) -> COMMAND_PARALLEL_SCALE, width, height
 FigureLayout#setParallelSize( width, height ) -> COMMAND_PARALLEL_SIZE, width, height
 FigureLayout#setPerspective( zNear, zFar, angle ) -> COMMAND_PERSPECTIVE_FOV, zNear, zFar, angle
 FigureLayout#setPerspective( zNear, zFar, width, height ) -> COMMAND_PERSPECTIVE_WH, zNear, zFar, width, height
 Light#setDirection( Vector3D ) および Light#setDirIntensity( dirIntensity ) -> COMMAND_DIRECTION_LIGHT, Vector3D.x, Vector3D.y, Vector3D.z, dirIntensity
 Effect3D#setThreshold( threshold, high, low ) -> COMMAND_THRESHOLD, threshold, high, low
 

コマンド配列の設定例を以下に示します。

 int commandlist[] = {
// 説明上クラス名((Graphics3D)g)は省略しています COMMAND_LIST_VERSION_1_0, // バージョン指定は必須 COMMAND_CENTER, cx, cy, COMMAND_PERSPECTIVE_WH, 1024,4096,4096*150,4096*150, COMMAND_AMBIENT_LIGHT, ambIntensity, COMMAND_DIRECTION_LIGHT, -1024, 0, 0, dirIntensity, COMMAND_TEXTURE_INDEX | 0, // textures[0] のテクスチャを描画に使用 COMMAND_AFFINE_INDEX | 2, // AffineTrans[] が設定されている場合 // 三角ポリゴン指定 PRIMITIVE_TRIANGLES | PDATA_NORMAL_PER_FACE | PDATA_COLOR_PER_FACE | ENV_ATTR_LIGHTING | ENV_ATTR_SPHERE_MAP | PATTR_BLEND_HALF | (2 <<16) , 0,0,0, 0,0,100, 0,100,0, 0,100,100, 0,0,100, 0,100,0, 4096,0,0, 4096,0,0, // normal 255<<16 | 255<<8 | 0, // color 255<<16 | 128<<8 | 0, // color // 四角ポリゴン指定 PRIMITIVE_QUADS | PDATA_NORMAL_PER_FACE | PDATA_TEXURE_COORD | ENV_ATTR_LIGHTING | ENV_ATTR_SPHERE_MAP | PATTR_BLEND_ADD | (1 <<16) , 0,0,0, 100,0,0, 100,100,0, 0,100,0, 0,0,4096, // normal 128,0, 128,128, 0,128, 0,0, // texture PRIMITIVE_QUADS | PDATA_NORMAL_PER_FACE | PDATA_TEXURE_COORD | ENV_ATTR_LIGHTING | ENV_ATTR_SPHERE_MAP | PATTR_BLEND_SUB | (1 <<16) , 0,0,0, 0,0,100, 100,0,100, 100,0,0, 0,4096,0, // normal 128,0, 128,128, 0,128, 0,0, // texture // 描画 COMMAND_FLUSH, // ここで実行せず、後でflush()を呼んでも良い COMMAND_END, }; drawCommandList(commandlist); // 説明上、他の引数は省略しています
パラメータ:
textures - コマンド配列による描画で使用するテクスチャの配列
x - 描画位置のX座標
y - 描画位置のY座標
layout - 描画レイアウト
effect - 描画効果
commandlist - コマンド配列
例外:
NullPointerException - 以下の場合に発生します。
  • layout,effect,commandlistがnullの場合
  • textures が指定されていて、textures のいずれかの要素が null の場合
java.lang.IllegalArgumentException - 以下の場合に発生します。
  • commandlist の先頭のコマンドリストのバージョンがサポート外の値の場合
  • 実行中に無効なコマンドに遭遇した時点で発生(何番目のコマンドが無効であったかも併せて通知)
導入されたバージョン:
JSCL1.2

drawCommandList

public void drawCommandList(Texture texture,
                            int x,
                            int y,
                            FigureLayout layout,
                            Effect3D effect,
                            int[] commandlist)
コマンド配列を指定して描画処理を行います。

このメソッドは、 drawCommandList(Texture[], int, int, FigureLayout, Effect3D, int[]) において、テクスチャの配列要素を1つだけ指定した場合と等価です。

パラメータ:
texture - コマンド配列による描画で使用するテクスチャ
x - 描画位置のX座標
y - 描画位置のY座標
layout - 描画レイアウト
effect - 描画効果
commandlist - コマンド配列
例外:
NullPointerException - layout,effect,commandlistがnullの場合に発生します。
java.lang.IllegalArgumentException - 以下の場合に発生します。
  • commandlist の先頭のコマンドリストのバージョンがサポート外の値の場合
  • 実行中に無効なコマンドに遭遇した時点で発生(何番目のコマンドが無効であったかも併せて通知)
導入されたバージョン:
JSCL1.2

renderFigure

public void renderFigure(Figure figure,
                         int x,
                         int y,
                         FigureLayout layout,
                         Effect3D effect)
モデルデータを設定し、レンダリングの演算を実行します。
drawFigure() とは異なり、flush()を呼ぶまでは実際の描画は実行されず、 レンダリングの演算のみが実行されます。
パラメータ:
figure - モデルデータ
x - 描画位置のX座標
y - 描画位置のY座標
layout - 描画レイアウト
effect - 描画効果
例外:
NullPointerException - 以下の場合に発生します。
  • figure,layout,effectがnullの場合
  • figure にテクスチャが未設定の場合(モデルデータが全てカラーポリゴンで構成されている場合を除く)
導入されたバージョン:
JSCL1.2

flush

public void flush()
renderFigure() で設定されたモデルデータ、及び drawCommandList(), renderPrimitives() で設定された描画要素のレンダリング演算結果を実際に描画します。
導入されたバージョン:
JSCL1.2

drawFigure

public void drawFigure(Figure figure,
                       int x,
                       int y,
                       FigureLayout layout,
                       Effect3D effect)
Figureを描画します。
パラメータ:
figure - モデルデータ
x - 描画位置のX座標
y - 描画位置のY座標
layout - 描画レイアウト
effect - 描画効果
例外:
NullPointerException - 以下の場合に発生します。
  • figure,layout,effectがnullの場合
  • figure にテクスチャが未設定の場合(モデルデータが全てカラーポリゴンで構成されている場合を除く)