com.docomostar.opt.ui.eruption
クラス IndexBuffer

Object
  上位を拡張 com.docomostar.opt.ui.eruption.Object3D
      上位を拡張 com.docomostar.opt.ui.eruption.IndexBuffer

public final class IndexBuffer
extends Object3D

VertexBuffer とともに用いて Figure 内のサブメッシュを構成するクラスです。

IndexBuffer はインデックス情報を保持し、VertexBuffer が頂点情報を保持することでサブメッシュを構成します。 サブメッシュは連続するインデックスをひとまとまりにした、より細かい単位であるストリップに分解できますが、Appearance やGeometricShape は IndexBuffer に対して関連付けられるため、 サブメッシュがプログラム上におけるモデルデータの処理単位となっています。また、IndexBuffer は Figure を用いずに VertexBuffer との対で描画することもできます。 IndexBuffer は VertexBuffer が持つ頂点情報に対して、どの頂点をどのような順序で使用して自身が表すサブメッシュが構成されるのかを表します。その際、頂点の並びを点、線、三角形、スプライトのうち、 どれに解釈するかという情報も持っています。ここで、三角形は面を構成するため裏表が存在し、MascotCapsule eruption においてはインデックスが反時計回りになる側をポリゴンの表としています。 ポリゴンの裏表の概念は Appearance.setCullingMode(int) 等で用います。
IndexBuffer には最初の頂点と長さだけを指定し、最初の頂点から長さ分だけ連続して頂点を取得する暗黙的インデックスと、 使用する全ての頂点の位置を示す明示的インデックスの 2 通りのインデクシング方式をとることができ、そのどちらを用いるかは IndexBuffer の生成時に選択します。
なお、生成後のIndexBuffer は保持するインデックス情報が変更可能になっていますが、 Figure の構成要素として用いる際には事前に fix() を用いて内容を変更不可にしておく必要があります。

端末によって、本クラスはサポートされていない場合があります。未サポートの場合、メソッドが呼び出された時点で UnsupportedOperationException が発生します。


フィールドの概要
static int MCE_LINE_STRIP
          線(ストリップ)を表します(=3)。
static int MCE_LINES
          線を表します(=2)。
static int MCE_POINTS
          点を表します(=1)。
static int MCE_SPRITES
          スプライトを表します(=7)。
static int MCE_TRIANGLE_FAN
          三角形(ファン)を表します(=6)。
static int MCE_TRIANGLE_STRIP
          三角形(ストリップ)を表します(=5)。
static int MCE_TRIANGLES
          三角形を表します(=4)。
 
クラス com.docomostar.opt.ui.eruption.Object3D から継承されたフィールド
MCE_CLASS_TYPE_ACTION, MCE_CLASS_TYPE_ACTIONCONTROLLER, MCE_CLASS_TYPE_ACTIONTABLE, MCE_CLASS_TYPE_APPEARANCE, MCE_CLASS_TYPE_BONE, MCE_CLASS_TYPE_BONEDEFORMER, MCE_CLASS_TYPE_CAMERA, MCE_CLASS_TYPE_EFFECTSOURCE, MCE_CLASS_TYPE_FIGURE, MCE_CLASS_TYPE_GEOMETRICSHAPE, MCE_CLASS_TYPE_GRAPHICS3D, MCE_CLASS_TYPE_INDEXBUFFER, MCE_CLASS_TYPE_INTERSECTIONATTRIBUTES, MCE_CLASS_TYPE_LIGHT, MCE_CLASS_TYPE_MORPHDEFORMER, MCE_CLASS_TYPE_NODEDEFORMER, MCE_CLASS_TYPE_OBJECT3D, MCE_CLASS_TYPE_PARTICLE, MCE_CLASS_TYPE_TEXTURE, MCE_CLASS_TYPE_TEXTURETABLE, MCE_CLASS_TYPE_TRACKBALL, MCE_CLASS_TYPE_TRANSFORMTREE, MCE_CLASS_TYPE_VERTEXBUFFER
 
コンストラクタの概要
IndexBuffer(int stripLengthsNum)
          暗黙的 IndexBuffer を生成します。
IndexBuffer(int stripLengthsNum, int indicesNum)
          明示的 IndexBuffer を生成します。
 
メソッドの概要
 void fix()
          IndexBuffer を書込み禁止状態 (fix状態) にします。
 Appearance getAppearance()
          Appearance を取得します。
 GeometricShape getGeometricShape(int type)
          GeometricShape を取得します。
 int getIndexLengths(int[] result)
          ストリップ数と各ストリップ長を取得します。
 int getIndexType()
          インデックスタイプを取得します。
 int getIndices(short[] result)
          インデックスを取得します。
 int getPolygonCount()
          ポリゴン数を取得します。
 int getUserData(int index)
          ユーザデータを取得します。
 boolean isConvertStrip()
          TriangleStrip がリスト化されているかを検査します。
 boolean isFix()
          fix 状態であるかを検査します。
 void set(int type, int[] stripLengths, short[] indices)
          明示インデックスを設定します。
 void set(int type, int firstIndex, int[] stripLengths)
          暗黙インデックスを設定します (実際にはインデックスの長さのみ指定します)。
 void setAppearance(Appearance appearance)
          Appearance を設定します。
 void setGeometricShape(GeometricShape gs)
          GeometricShape を設定します。
 void setUserData(int firstIndex, int[] data, int start, int num)
          三角形のポリゴンに対してユーザデータを設定します。
 
クラス com.docomostar.opt.ui.eruption.Object3D から継承されたメソッド
dispose, equals, findObject3D, findObject3D, getClassType, getUserId, hashCode, isDisposed, isRenderEnable, setRenderEnable, setUserId
 
クラス Object から継承されたメソッド
getClass, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

MCE_POINTS

public static final int MCE_POINTS
点を表します(=1)。

関連項目:
定数フィールド値

MCE_LINES

public static final int MCE_LINES
線を表します(=2)。

関連項目:
定数フィールド値

MCE_LINE_STRIP

public static final int MCE_LINE_STRIP
線(ストリップ)を表します(=3)。

関連項目:
定数フィールド値

MCE_TRIANGLES

public static final int MCE_TRIANGLES
三角形を表します(=4)。

関連項目:
定数フィールド値

MCE_TRIANGLE_STRIP

public static final int MCE_TRIANGLE_STRIP
三角形(ストリップ)を表します(=5)。

関連項目:
定数フィールド値

MCE_TRIANGLE_FAN

public static final int MCE_TRIANGLE_FAN
三角形(ファン)を表します(=6)。

関連項目:
定数フィールド値

MCE_SPRITES

public static final int MCE_SPRITES
スプライトを表します(=7)。

関連項目:
定数フィールド値
コンストラクタの詳細

IndexBuffer

public IndexBuffer(int stripLengthsNum,
                   int indicesNum)
明示的 IndexBuffer を生成します。

生成時は unfix 状態となります。初期値は以下の通りです。

パラメータ:
stripLengthsNum - ストリップ長を格納する領域の個数を指定します。
indicesNum - 格納するインデックスの長さを指定します。この長さは格納するストリップの長さの合計になります。
※ MCE_SPRITES の種別を格納する場合には必要量の 6 倍の長さを指定する必要があります。
例外:
IllegalArgumentException -
stripLengthsNum が [1, 32767] 以外の場合に発生します。
IllegalArgumentException -
indicesNum が [1, 65535] 以外の場合に発生します。

IndexBuffer

public IndexBuffer(int stripLengthsNum)
暗黙的 IndexBuffer を生成します。

実際には STRIP の長さのみを格納します。頂点の並び順が STRIP である事を前提とします。
生成時は unfix 状態となります。

パラメータ:
stripLengthsNum - ストリップ長を格納する領域の個数を指定します。
例外:
IllegalArgumentException -
stripLengthsNum が [1, 32767] 以外の場合に発生します。
メソッドの詳細

set

public final void set(int type,
                      int[] stripLengths,
                      short[] indices)
明示インデックスを設定します。

ミニマム長は、点とスプライトが 1、線が 2、三角形が 3 になります。

パラメータ:
type - インデックスの種別を指定します。指定できる値は、以下の通りです。
stripLengths - インデックスの長さを配列で指定します。
indices - インデックスを配列で指定します。
例外:
NullPointerException -
stripLengths が null の場合に発生します。
NullPointerException -
indices が null の場合に発生します。
IllegalArgumentException -
type が不正な場合に発生します。
IllegalArgumentException -
stripLengths.length が [1, 32767] 以外の場合に発生します。
IllegalArgumentException -
indices.length が [1, 65535] 以外の場合に発生します。
IllegalArgumentException -
stripLengths の要素にミニマム長を下回るものが存在する。又は 65535 を越えるものが存在する場合に発生します。
IllegalArgumentException -
指定したインデックス、インデックスの長さが IndexBuffer の格納サイズを超えた場合に発生します。
IllegalArgumentException -
暗黙の IndexBuffer に対してこのメソッドを使用した場合に発生します。
com.docomostar.lang.IllegalStateException -
IndexBuffer が既に fix されている場合に発生します。
IllegalArgumentException -
indices の要素のいずれかの値が 0 未満の場合に発生します。

set

public final void set(int type,
                      int firstIndex,
                      int[] stripLengths)
暗黙インデックスを設定します (実際にはインデックスの長さのみ指定します)。

ミニマム長は、点とスプライトが 1、線が 2、三角形が 3 になります。

パラメータ:
type - インデックスの種別を指定します。指定できる値は、以下の通りです。
firstIndex - インデックスの開始位置を指定します。組合わせた VertexBuffer のこの位置から暗黙インデックスの適用を開始します。
stripLengths - インデックスの長さを配列で指定します。
例外:
NullPointerException -
stripLengths が null の場合に発生します。
IllegalArgumentException -
type が不正な場合に発生します。
IllegalArgumentException -
stripLengths.length が [1, 32767] 以外の場合に発生します。
IndexOutOfBoundsException -
firstIndexが 0 未満の場合に発生します。
IllegalArgumentException -
stripLengths の要素にミニマム長を下回るものが存在する。又は 65535 を越えるものが存在する場合に発生します。
IndexOutOfBoundsException -
インデックス値が 65535 を越える場合に発生します。
IllegalArgumentException -
指定したインデックス、インデックスの長さが IndexBuffer の格納サイズを超えた場合に発生します。
IllegalArgumentException -
明示 IndexBuffer に対してこのメソッドを使用した場合に発生します。
com.docomostar.lang.IllegalStateException -
IndexBuffer が既に fix されている場合に発生します。

fix

public final void fix()
IndexBuffer を書込み禁止状態 (fix状態) にします。

一度書込み禁止にすると最適化情報を生成するため元には戻せません。
Figure に使用する場合には書込み禁止状態にする必要があります。


isFix

public final boolean isFix()
fix 状態であるかを検査します。

戻り値:
返す値は、以下の通りです。
  • fix されている - true
  • fix されていない - false

getIndexLengths

public final int getIndexLengths(int[] result)
ストリップ数と各ストリップ長を取得します。

パラメータ:
result - ストリップ長の格納先となる配列を指定します。nullにすることで、ストリップ数のみの取得ができます。
戻り値:
ストリップの数を返します。

isConvertStrip

public final boolean isConvertStrip()
TriangleStrip がリスト化されているかを検査します。

MCM ファイルのロード時に 短いストリップをリスト化します。
この API が true を返す場合には getIndexLengths(int[]) で取得した最後の個数に該当するインデックスはリスト化されています。

戻り値:
返す値は、以下の通りです。
  • リスト化されている場合 - true
  • リスト化されていない、または MCE_TRIANGLE_STRIP以外の場合 - false

getIndices

public final int getIndices(short[] result)
インデックスを取得します。

パラメータ:
result - インデックスの格納先となる配列を指定します。nullにすることで、インデックスの個数のみの取得ができます。
戻り値:
インデックスの個数を返します。

getPolygonCount

public final int getPolygonCount()
ポリゴン数を取得します。

戻り値:
ポリゴン数を返します。

getIndexType

public final int getIndexType()
インデックスタイプを取得します。

戻り値:
生成時に指定したインデックスタイプを返します。

setUserData

public final void setUserData(int firstIndex,
                              int[] data,
                              int start,
                              int num)
三角形のポリゴンに対してユーザデータを設定します。

パラメータ:
firstIndex - ユーザデータ先頭のインデックスを指定します。
data - 設定するデータの配列を指定します。
start - 設定するデータの開始位置を指定します。
num - 設定するデータ数を指定します。
例外:
NullPointerException -
data が null の場合に発生します。
IndexOutOfBoundsException -
firstIndex < 0、もしくは firstIndex がポリゴン数以上の場合に発生します。
IndexOutOfBoundsException -
num <= 0、もしくは firstIndex + num がポリゴン数を超える場合に発生します。
IndexOutOfBoundsException -
start < 0、もしくは start が data.length を超える場合に発生します。
IndexOutOfBoundsException -
start + num が data.length を超える場合に発生します。
com.docomostar.lang.IllegalStateException -
内部不整合 (インデックスタイプが MCE_TRIANGLES, MCE_TRIANGLE_STRIP, MCE_TRIANGLE_FAN 以外) である場合に発生します。

getUserData

public final int getUserData(int index)
ユーザデータを取得します。

パラメータ:
index - ユーザデータのインデックスを指定します。
戻り値:
ユーザデータを返します。
例外:
IndexOutOfBoundsException -
index < 0、もしくは index がポリゴン数以上の場合に発生します。
com.docomostar.lang.IllegalStateException -
ユーザデータ格納用の領域が存在しない場合に発生します。

setAppearance

public final void setAppearance(Appearance appearance)
Appearance を設定します。

パラメータ:
appearance - 設定する Appearance を指定します。

getAppearance

public final Appearance getAppearance()
Appearance を取得します。

戻り値:
設定されている Appearance を返します。

setGeometricShape

public final void setGeometricShape(GeometricShape gs)
GeometricShape を設定します。

パラメータ:
gs - GeometricShape オブジェクトを指定します。
例外:
IllegalArgumentException -
gs の型が GeometricShape.MCE_GEOMETRICSHAPE_TYPE_SPHERE 以外の場合に発生します。
IllegalArgumentException -
gs が既に他の Figure や IndexBuffer に設定されている場合に発生します。

getGeometricShape

public final GeometricShape getGeometricShape(int type)
GeometricShape を取得します。

パラメータ:
type - 取得する GeometricShape のタイプを指定します。指定できる値は、以下の通りです。
戻り値:
GeometricShape オブジェクトを返します。
例外:
IllegalArgumentException -
type が不正な場合に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。