アプリケーションはIDirect3DRMAnimation2インターフェイスのメソッドを利用して、位置、向き、ビジュアルオブジェクトのスケーリング、照明、ビューポートのアニメーションを行うことができる。
保持モードのアニメーションは、キーセットによって定義される。キーはスケーリング操作、方向、または位置に関連付けられた時間値である。Direct3DRMAnimationオブジェクトは、時間値に応じた変換の修正方法を定義する。アニメーションをDirect3DRMFrameオブジェクト上で動作するようにセットし、Direct3DRMVisual、Direct3DRMLightおよびDirect3DRMViewportオブジェクトの位置、方向、スケーリングのアニメーションを行うために使用することができる。
IDirect3DRMAnimation2::AddPositionKey、AddRotateKeyおよびAddScaleKeyの各メソッドは、単位が任意の時間値を指定する。アプリケーションが時間値99の位置キーを追加した場合、たとえば、時間値49の新しい位置キーは、アニメーションの(0を基準とした) 開始点と最初の位置キーとの間のちょうど中間で発生する。
アニメーションの操作は、IDirect3DRMAnimation2::SetTimeメソッドを呼び出すことで行われる。これは、ビジュアルオブジェクトの変換をアニメーション中の近くのキーの補間位置、方向、スケールにセットする。アニメーションキーを追加するメソッドと同様に、IDirect3DRMAnimation2::SetTimeの時間値は、アプリケーションがすでに追加済のキー位置に基づく任意の値である。
Microsoft DirectX version 6.0は、IDirect3DRMAnimation2インターフェイスを導入している。IDirect3DRMAnimation2は、アニメーションのキーへのアクセスを可能にするAddKey、DeleteKeyByID、GetKeysおよびModifyKeyメソッドを追加することで、それが置換する旧のIDirect3DRMAnimationインターフェイスを拡張する。これは、対応するアニメーションのフレームを返すGetFrameメソッドも追加する。Direct3D保持モードインターフェイスの履歴については、「インターフェイスの変更点」を参照すること。
IDirect3DRMAnimation2インターフェイスのメソッドは、以下のグループにまとめることができる。
キー | AddKey |
AddPositionKey | |
AddRotateKey | |
AddScaleKey | |
DeleteKey | |
DeleteKeyByID | |
GetKeys | |
ModifyKey | |
その他 | GetFrame |
SetFrame | |
SetTime | |
オプション | GetOptions |
SetOptions |
すべてのCOMインターフェイスと同様、IDirect3DRMAnimation2インターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは次の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
さらにIDirect3DRMAnimation2インターフェイスは、IDirect3DRMObjectインターフェイスから次のメソッドを継承する。
AddDestroyCallback |
Clone |
DeleteDestroyCallback |
GetAppData |
GetClassName |
GetName |
SetAppData |
SetName |
Direct3DRMAnimationオブジェクトは、IDirect3DRM3::CreateAnimationメソッドの呼び出しによって取得できる。
新しいキーを追加する。
構文
HRESULT AddKey (LPD3DRMANIMATIONKEY lpKey);
パラメータ
- lpKey
- 新しいキーを定義するD3DRMANIMATIONKEY構造体。構造体のdwIDメンバは無視され、返る時点で新しいキーのIDがセットされる。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
アニメーションに位置キーを追加する。
構文
HRESULT AddPositionKey(
D3DVALUE rvTime,
D3DVALUE rvX,
D3DVALUE rvY,
D3DVALUE rvZ
);
パラメータ
- rvTime
- アニメーションの中で位置キーを設定するときの時間。0を原点とする任意の単位の時間を指定することができる。最後のキーのrvTimeの値が99のとき、rvTimeが49であるキーがアニメーションのちょうど中間である。
- rvX, rvY, rvZ
- 位置。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドによって移動変換が行われるようになる。変換を含む行列計算については、「3D変換」を参照すること。
参照
アニメーションに回転キーを追加する。
構文
HRESULT AddRotateKey(
D3DVALUE rvTime,
D3DRMQUATERNION *rqQuat
);
パラメータ
- rvTime
- アニメーションの中で回転キーを設定するときの時間。0を基準とする任意の単位の時間を指定することができる。最後のキーのrvTimeの値が99のとき、rvTimeが49であるキーがアニメーションのちょうど中間である。
- rqQuat
- 回転を表す4次元行列。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドによって、回転変換が適用される。変換を含む行列計算については、「3D変換」を参照すること。
参照
アニメーションにスケールキーを追加する。
構文
HRESULT AddScaleKey(
D3DVALUE rvTime,
D3DVALUE rvX,
D3DVALUE rvY,
D3DVALUE rvZ
);
パラメータ
- rvTime
- アニメーションの中でスケールキーを記憶するときの時間。0を原点とする任意の単位の時間を指定できる。最後のキーのrvTimeの値が99のとき、rvTimeが49であるキーがアニメーションのちょうど中間である。
- rvX, rvY, rvZ
- スケール係数。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドによって、スケール変換が適用される。変換を含む行列計算については、「3D変換」を参照すること。
参照
キーをアニメーションから削除する。たとえば、アニメーションに時間tのスケールキーと時間tの回転キーがある場合、両方のキーが削除される。
構文
HRESULT DeleteKey(
D3DVALUE rvTime
);
パラメータ
- rvTime
- アニメーションから削除されるキーを識別する時間。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
固有のIDに対応するキーを削除する。
構文
HRESULT DeleteKeyByID (DWORD dwID);
パラメータ
- dwID
- 削除するキーのID。
戻り値
次の値のうち1つを返す。
D3DRMERR_NOSUCHKEY DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
アニメーションに対応するフレームを取り出す。
構文
HRESULT GetFrame (LPDIRECT3DRMFRAME3 *lplpFrame);
パラメータ
- lplpFrame
- アニメーションが参照する現在のDirect3DRMFrameオブジェクトのインターフェイスを受け取るポインタ。この値はNULLが可能である。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
固有の時間に対応するキーを取り出す。
構文
HRESULT GetKeys (D3DVALUE dvTimeMin, D3DVALUE dvTimeMax, LPDWORD lpdwNumKeys, LPD3DRMANIMATIONKEY lpKey);
パラメータ
- dvTimeMin
- 返されるキーの最小時間値。
- dvTimeMax
- 返されるキーの最大時間値。
- lpdwNumKeys
- 中に返されるキーの数を含む変数へのポインタ。lpKeyがNULLの場合、lpdwNumKeysは指定の時間にキーの数がセットされる。
- lpKey
- キー値がセットされるD3DRMANIMATIONKEY構造体へのポインタ。lpKeyがNULLの場合、lpdwNumKeysは指定の時間にキーの数がセットされる。lpKeyがNULLでない場合、lpdwNumKeysiで示されるキーの最大数まで指定の時間に対応するキーがセットされる。
戻り値
次の値のうち1つを返す。
D3DRMERR_NOSUCHKEY DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
アニメーションオプションを取得する。
構文
D3DRMANIMATIONOPTIONS GetOptions( );
戻り値
アニメーションオプションを示すD3DRMANIMATIONOPTIONS型の値を返す。
参照
キー値を修正する。
構文
HRESULT Modify (LPD3DRMANIMATIONKEY lpKey);
パラメータ
- lpKey
- 既存のキーの値を定義するD3DRMANIMATIONKEY構造体。構造体のdwIDメンバは、既存のキーでなければならない。
戻り値
次の値のうち1つを返す。
D3DRMERR_INCOMPATIBLEKEY D3DRMERR_NOSUCHKEY DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
キーのタイプを修正することはできない。キーのタイプを変更するには、オリジナルキーを削除し、新しいキーを追加しなければならない。キーの時間、位置、回転、スケール値を修正することはできる。
アニメーションにフレームを設定する。
構文
HRESULT SetFrame(
LPDIRECT3DRMFRAME3 lpD3DRMFrame
);
パラメータ
- lpD3DRMFrame
- アニメーションに設定するフレームを指定する変数のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
アニメーションオプションを設定する。
構文
HRESULT SetOptions(
D3DRMANIMATIONOPTIONS d3drmanimFlags
);
パラメータ
- d3drmanimFlags
- アニメーションオプションを指定するD3DRMANIMATIONOPTIONS型の値のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
アニメーションに現在の時間を設定する。
構文
HRESULT SetTime(
D3DVALUE rvTime
);
パラメータ
- rvTime
- アニメーションに設定する新しい現在の時間。0を原点とする任意の単位の時間を指定することができる。最後のキーのrvTimeの値が99のとき、rvTimeが49であるキーがアニメーションのちょうど中間である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。エラーのリストについては、「Direct3D保持モードの戻り値」を参照すること。
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.