第 9 章 待ち受けアプリケーション
12.2 赤外線リモコンAPI
12.2.2 IrRemoteControlFrame
IrRemoteControlFrame クラスは、個々のデータフレームを表現します。アプリケーションプ ログラムはこのクラスのコンストラクタを使用してオブジェクトを生成し、スタート部、ビットデ ータ部、ストップ部を設定することでデータフレームを構成します。
データフレームの設定項目には以下のものがあります。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
・ データフレームの送信間隔(setFrameDuration()メソッド)
そのデータフレームの送信開始時点から、次のデータフレームの送信を開始するまでの間隔を指定しま す。
・ データフレームの繰り返し送信回数(setRepeatCount()メソッド)
1つのデータフレームセットの中で、同じデータフレームを連続して送信する場合は、その回数を指定し ます。同じデータフレームを連続して送信しない場合は1を指定します。
・ スタート部の形式(setStartHighDuratoin()およびsetStartLowDuration()メソッド)
そのデータフレームにおけるスタート部のHigh区間およびLow区間の長さを指定します。
・ ストップ部の形式(setStopHighDuratoin()メソッド)
そのデータフレームにおけるストップ部のHigh区間の長さを指定します。
・ ビットデータの値(setFrameData()メソッド)
byte配列またはlong値の形で、ビットデータとして送出する値を指定します。
【DoJa-3.0】【DoJa-4.0】【DoJa-4.1】
DoJa-3.0プロファイルでは、どの機種でも送信することのできるビットデータ長は、1フレームあた
り48ビットです。またこの値は、DoJa-4.0プロファイルでは1フレームあたり512ビット、DoJa-4.1 プロファイルでは1フレームあたり1024ビットに拡大されています。
注意事項:
● データフレームの設定において、設定値の単位や設定可能な値の範囲はメソッドにより異なっています。メ ソッド毎の設定値の単位などについてはAPIリファレンスを参照してください。
● メーカーの採用する赤外線デバイスの特性によっては、APIで指定したスタート部、ストップ部およびデー タフレーム送信間隔に関するパラメータの値がそのデバイスで取り扱うことのできる値(単位)に補正され ることがあります。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
第 13 章 3D グラフィックス・3D サウンド
DoJa-4.0 プロファイル以降では、iアプリの演出表現能力の向上を目指し、iアプリから 3D グラ
フィックスおよび 3D サウンドを制御するための API が追加されています。
従来、3D グラフィックス描画機能はiアプリ拡張 API として提供されていましたが、本プロファ イルではこれを機能強化した上で、新たにiアプリ基本 API として規定しています。また、携帯 電話に搭載されたステレオスピーカーを有効に利用するため 3D サウンド制御機能を規定していま す。
本章では、これら 3D グラフィックス描画機能、 3D サウンド制御機能の概要について解説します。
なお、本プロファイルに対応した携帯電話では、標準の 3D グラフィックスエンジンとして株式会 社エイチアイの Mascot Capsule Engine Micro3D Edition のバージョン 4 が搭載されています。この エンジンを活用したiアプリプログラミング(DoJa-5.0 プロファイルで追加された衝突判定機能も 含みます)の詳細については、株式会社エイチアイより提供されるドキュメント「Micro3D Programming for iアプリ」を参照してください。
13.1 3D グラフィックス描画機能
13.1.1 3D グラフィックス描画機能
本プロファイルにおける 3D グラフィックス描画機能は、以前のプロファイルにおいてiアプリ拡 張 API として規定されていた高レベル 3D グラフィックス描画機能をベースとして、機能強化およ び一部機能の削除、およびそれらに伴うクラス構成、メソッド構成の変更が加えられています。高 レベル 3D グラフィックス描画機能がベースとなっていますので、比較的簡単な API 呼び出しで 3D モデルの描画を行うことができるようになっています。
3D グラフィックス描画機能は、com.nttdocomo.ui.graphics3d パッケージで提供されます。
また、 3D に関する数値演算のために com.nttdocomo.ui.util3d パッケージで提供されるユー ティリティ機能を使用します。
3D グラフィックス描画機能を構成するクラス群を以下に示します。これらクラス構成やクラス内
のメソッド、フィールド構成はオプションパッケージに含まれる(iアプリ拡張 API の)高レベ
ル 3D グラフィックス描画機能がベースになっていますが変更が加えられており、従来の API とは
その名前や使用方法も含めて互換性がありません。従来の高レベル 3D グラフィックス描画機能を
使用している既存アプリケーションを簡便に動作させるには、本プロファイルにおいてもオプショ
ンパッケージに含まれる高レベル 3D グラフィックス描画機能を使用することを推奨します。
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
図 23: 3D グラフィックス描画機能のクラス構成
各クラス、インタフェースの機能概要は以下の通りです。
クラス・
インタフェース 機能概要
Graphics3D 3Dグラフィックス描画機能をサポートするグラフィックスコンテキストが備えるべきメソッドを定 義するインタフェースです。Imageに対応するグラフィックスコンテキストがこのインタフェース をサポートするかどうかはメーカーにより異なります。
Object3D 全ての3Dオブジェクトの基底となるクラスです。3Dオブジェクトとは、3Dグラフィックスのレン ダリング結果に影響を与えるオブジェクト全般を指します。3Dオブジェクトには、フィギュアやプ リミティブのように直接レンダリングの対象物とすることのできるオブジェクトと、ライトやフォ グのようにレンダリング結果に効果を与える性質を持つオブジェクトに大別されます。このクラス では3Dオブジェクトの生成方法としてcreateInstance()を規定していますが、3Dオブジェク トの種類によってはコンストラクタを使用してオブジェクトを生成するものもあります。
ActionTable 3Dモデルのアクション(アニメーションデータ)を保持するクラスです。アニメーションデータは 市販の3Dオーサリングツールなどを利用して作成します。
ある特定の瞬間に3Dモデルが取るべきポーズをフレームと呼び、アクションは複数のフレームのシ ーケンスとして構成されます。ActionTableには複数のアクションを保持することができます。フ レームは全ての3Dオブジェクトが内部に保持している「現在時刻」と対応しており、後述のFigure オブジェクトに現在時刻を設定することで、3Dモデルにポーズを取らせることができます。
Fog フォグ効果を与えるためのデータを保持するクラスです。線形フォグモードと指数フォグモードを サポートします。
<<インタフェース>>
com.nttdocomo.ui.graphics3d.
Graphics3D
(*1) 3Dグラフィックス描画機能をサポートする携帯電
話では、Canvas.getGraphics()などによりシス テムから取得するグラフィックスコンテキストは com.nttdocomo.
ui.graphics3d.Graphics3Dインタフェースを 実装しています。
com.nttdocomo.ui.Graphics (*1)
com.nttdocomo.ui.graphics3d.
Object3D
com.nttdocomo.ui.graphics3d.
ActionTable
com.nttdocomo.ui.graphics3d.
Fog
com.nttdocomo.ui.graphics3d.
Light
com.nttdocomo.ui.graphics3d.
Texture
com.nttdocomo.ui.graphics3d.
DrawableObject3D
com.nttdocomo.ui.graphics3d.
Figure
com.nttdocomo.ui.graphics3d.
Group
com.nttdocomo.ui.graphics3d.
Primitive com.nttdocomo.ui.util3d.
FastMath
com.nttdocomo.ui.util3d.
Transform
com.nttdocomo.ui.util3d.
Vector3D
Copyright Ⓒ 2008-2012 NTT DOCOMO, Inc. All Rights Reserved.
Light 光源データを保持するクラスです。いくつまでの光源をサポートするかはメーカーにより異なりま
す(getMaxLights()メソッドで確認することができます)。環境光源、平行光源、点光源、スポ ット光源をサポートします。
Texture テクスチャのデータを保持するクラスです。テクスチャオブジェクトを使用することで、モデルマ
ッピングに使用するテクスチャと環境マッピングに使用するテクスチャの両方を取り扱うことがで きます。なお、本機能における環境マッピング用テクスチャの使用方法はiアプリ拡張APIの高レ ベル3Dグラフィックス描画機能における使用方法から変更されています。本機能では、環境マッピ ング用のテクスチャは3Dグラフィックスコンテキスト(Graphics3Dオブジェクト)ではなく各 モデルマッピング用テクスチャオブジェクトに設定して使用します。
DrawableObject3D レンダリング可能な3Dオブジェクトの基底となるクラスです。このクラスを継承するFigureクラ ス、Groupクラス、Primitiveクラスの各オブジェクトは、Graphics3D.renderObject3D() メソッドによるレンダリング対象とすることができます。また、3D空間内で2つのオブジェクト同 士が衝突しているかどうかを簡易に判定するためのメソッドや、ブレンド機能、テクスチャ歪み補 正機能などのメソッドを備えています。
Figure 3Dモデルのデータを保持するクラスです。このオブジェクトはレンダリング可能であり、
Graphics3D.renderObject3D()メソッドにレンダリング対象として指定することができます。
Group 3Dオブジェクトの集合体であるグループを表現するクラスです。このオブジェクトはレンダリング
可能であり、Graphics3D.renderObject3D()メソッドにレンダリング対象として指定すること ができます。複数のFigureオブジェクトやPrimitiveオブジェクトを属させて一度にレンダリ ングを行わせたり、FogオブジェクトやLightオブジェクトを属させてグループ内のレンダリング に効果を与えたりすることができます。
Primitive プリミティブ(点や線、面などの図形)を描画する際に用いる頂点情報などを格納するための、プ リミティブ配列を保持するクラスです。このオブジェクトはレンダリング可能であり、
Graphics3D.renderObject3D()メソッドにレンダリング対象として指定することができます。
FastMath 3D関連機能での使用を前提とした高速数値演算ユーティリティです。本プロファイルに対応する携 帯電話ではCLDC-1.1が搭載されているため浮動小数点数演算が使用できますが、このクラスでは浮 動小数点数演算を内部的に整数演算に置き換えます。このため、通常の浮動小数点数演算より大き な誤差を含む可能性はありますが高速に演算を行うことができます。
Transform 3次元アフィン変換用の行列を扱うクラスです。3Dモデルの回転や視点の移動には、このクラスの オブジェクトを使用します。
Vector3D 3次元ベクトルを表すクラスです。内積・外積計算、正規化といったユーティリティメソッドを備え ています。
注意事項:
● 本プロファイルに対応した携帯電話では、標準の3Dグラフィックスエンジンとして株式会社エイチアイの Mascot Capsule Engine Micro3D Editionのバージョン4が搭載されています。このエンジンを活用したiアプ リプログラミングの詳細については、株式会社エイチアイより提供されるドキュメント「Micro3D
Programming for iアプリ」を参照してください。
● iアプリ拡張APIの高レベル3Dグラフィックス描画機能(com.nttdocomo.opt.ui.j3dパッケージ)と 本機能を1つのiアプリの中で同時に使用することはできません。一方を使用中に他方を使用しようとする と例外がスローされます。
● 本機能では光源に関する機能強化(複数光源や点/スポット光源への対応)やフォグ効果、オブジェクトグル ーピング機能の新規導入など、従来の高レベル3Dグラフィックス描画機能と比較して機能強化が図られて います。一方、iアプリ拡張機能の高レベル3Dグラフィックス描画機能におけるコマンドリスト、および トゥーンシェーディングの機能はサポートされておらず使用することはできません。
● 従来の高レベル3Dグラフィックス描画機能では、浮動小数点型の存在しないCLDC-1.0上で3D機能のAPI を定義するために、整数型を使用して小数点以下の値を扱うための独自の単位系を使用していました。これ に対し本機能では、CLDC-1.1(本プロファイルのプラットフォーム)の浮動小数点型を使用したインタフェ ースに改められています。ただしシステム内部の演算では、性能を確保するために従来通り整数型を使用し た演算が行われます。