5. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
改変元のオリジナルプログラムは
ApiDemosサンプル中の
Graphics/OpenGL/GLSurfaceView
キューブ2個→8×8×8(512個)
<5> (C)2011 HI CORPORATION. All Rights Reserved.
6. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
1.サンプルプログラムを自分のワークスペース配下に展開
2.Package ExplorerもしくはFileメニューからImport
General/Existing Projects into Workspaceを選択
3.Select root directoryからサンプルプログラムを展開
したディレクトリを選択
<6> (C)2011 HI CORPORATION. All Rights Reserved.
7. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
4. Projectsの欄に2本のサンプルが表⽰されていることを
確認して、Finishボタンを押す。
Projectメニューの”Build Automatically”がチェックさ
れていれば、自動的にビルドが完了する。
<7> (C)2011 HI CORPORATION. All Rights Reserved.
8. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
サンプルのビルドに失敗する場合
・サンプルはAndroid2.1-update1を使用
それ以外のSDKを使う場合には、プロジェクトの
PropertyのAndroidの項目にある“Project Build Target”
をインストール済のSDKと合わせる必要あり。
・リソース関連のエラー(R.java)が発⽣する場合、
プロジェクトをRefresh(F5)することや、Cleanしてみる
ことで、解決する場合もある。
<8> (C)2011 HI CORPORATION. All Rights Reserved.
10. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
Cube.java GL_FIXED(固定⼩数点)で、
0x10000が1.0fを意味します。
int one = 0x10000; (-1.0)
int vertices[] = { ③ ②
-one, -one, -one, (0)
one, -one, -one, ① (+1.0)
one, one, -one, ② ⑦ ⑥ (+1.0)
-one, one, -one, ③
-one, -one, one, ④ (0) ①
one, -one, one, ⑤ Y
one, one, one, ⑥
-one, one, one, ⑦
}; (-1.0)④ ⑤
(-1.0) (+1.0)
Z X
<10> (C)2011 HI CORPORATION. All Rights Reserved.
11. 1. SDK(Java)サンプルを使い、OpenGL ESの基礎を解説
左の要素からRGBAを表します。
Cube.java
スムースシェーディングで着⾊する
各頂点の⾊を指定します。
int colors[] = {
0, 0, 0, one, ⿊
one, 0, 0, one, ③ ②
赤
one, one, 0, one, ⻩
0, one, 0, one, 緑
0, 0, one, one, ⻘ ⑦ ⑥
one, 0, one, one, マゼンタ
one, one, one, one, ⽩ (0) ①
0, one, one, one, シアン
};
④ ⑤
<11> (C)2011 HI CORPORATION. All Rights Reserved.
27. 3. その他の⾼速化ポイント
・圧縮テクスチャの使用
ATITC (Qualcomm系チップ)
PVRTC (PowerVR系チップ)
DXT (nVidia系チップ)
※環境ごとに別の圧縮テクスチャが必要
OpenGL ES2.0以降、ETC1は標準で使用可能だが、
アルファ(マスク)のデータを持つことができず使いにくい。
圧縮テクスチャは、展開されずそのままGPUの描画に
使用され、データの転送帯域が⼩さくて済むことから、
処理が⾼速化される場合が多いのがポイント。
<27> (C)2011 HI CORPORATION. All Rights Reserved.
28. 3. その他の⾼速化ポイント
・Triangle Listではなく、Triangle Strip形式の活用
http://en.wikipedia.org/wiki/Triangle_strip より引用
Stripが⻑くなればなるほど、インデックスバッファの⻑さと、
ポリゴン数の⽐が1:1に収束する。
(Triangle Listの場合には常に3:1)
ハードウェアが既にセットアップ済の2頂点を再利用して
描画するため⼀般的にTriangleListよりも⾼速。
<28> (C)2011 HI CORPORATION. All Rights Reserved.
29. One more thing!
OpenGL ESを使えば、⾼速にポリゴンが描画できる。
しかし、それでアプリを作るのに必要な機能は充分?
例)
ボーンアニメーション
カメラ制御
3Dツールで作成したデータの読み込み
3Dの当たり判定
<29> (C)2011 HI CORPORATION. All Rights Reserved.
30. One more thing!
MascotCapsule eruption ST
・今までの3D描画エンジンと比べて処理速度が速くなり、ポリゴンの表示能
力が飛躍的に向上。
・機器を選ばないライブラリ実装で、ネイティブ、Javaなどさまざまな環境
でのサポートが可能。
・国際標準規格であるOpenGL® ESに対応した、3Dアクセラレータチップの
連携が可能。 OpenGL® ES 2.0にも対応。
・市販3Dツールで作成したデータを専用フォーマットへ変換して使用可能。
・MascotCapsule V3のmbac/mtraデータの描画も可能。
・従来のeruptionに対して、立体視機能拡張が追加されています。
<30> (C)2011 HI CORPORATION. All Rights Reserved.
31. One more thing!
MascotCapsule eruption ST 主要機能
モーションブレンド モーフィング エフェクト(パーティクル)
モーションブレンドを使うことで、滑ら モーフィング機能を使い、例えばフェイ パーティクル(粒⼦)の運動、形状変化
かにモーションデータを切り替えられま シャルアニメーションのような演出が可 等のパラメータに基づき、粒⼦の集合体
す。 能になります。 をまとめて描画可能です。データは専用
のエフェクトエディタで作成します。
⾛り 中間 歩き 笑い 中間 怒り
テクスチャタイリング バンプマッピング プロジェクションシャドウ
物体の表⾯に凹凸があるように⾒せるこ
少ないテクスチャ領域で、地⾯や壁といっ 物体の影をよりリアルで正確に投影する
とができます。(BREW3などOpenGL
たサイズの大きな部分をカバーすること ことができます。
ES1.0対応機種は非対応)
ができます。
法線マップ
<31> (C)2011 HI CORPORATION. All Rights Reserved.
32. One more thing!
MascotCapsule eruption ST 主要機能
⽴体視対応 V3Loaderサポート
MascotCapsule V3用のmbac/mtra
裸眼⽴体視に対応した左目用、右目用の画像を自動的に⽣成可能です。
データの描画が可能です。
OpenGL ES2.0対応
SHARP ⽴体視対応Android端末及び OpenGL ES2.0のShaderを取り扱う
(SH-03C / SH-12C等) APIをサポートしています。
ES2.0環境では、ES1.1の固定機能APIが
Docomo FOMA ⽴体視対応Prime端末 削除されていますが、独自の
Shaderエミュレーションレイヤを実装
(SH-10C / CA-01C / F-09C等) していますので、ES1.1向けのコンテン
ツもそのまま動作させることが可能です。
では、端末標準搭載のためライセンス不要!
<32> (C)2011 HI CORPORATION. All Rights Reserved.
33. ご清聴ありがとうございました。
http://www.hicorp.co.jp
http://www.mascotcapsule.com
<33> (C)2011 HI CORPORATION. All Rights Reserved.