Microsoft DirectX 8.0 (Visual Basic)

周期的エフェクト

周期的エフェクトは波形エフェクトである。Microsoft® DirectInput® では、以下の波形を定義している。

周期的エフェクトにはエンベロープを適用することができる。「フォース フィードバックの基本概念」の例を参照すること。

周期的エフェクトのフェーズとは、エフェクトが始まる波形上のポイントである。フェーズは 0 から 35,999 までの範囲で、実角度の 100 倍で計測される。次の表は、選択したフェーズ値 (度単位) がさまざまな波形上のどこにあるかを示している。Max は波の最上部 (+) または最底部 (-) であり、Mid は波の中間ポイントである。これらの位置では、どちらの方向にもフォースは適用されていない。

波形 0 90 180 270
正方形 +Max +Max -Max -Max
サイン カーブ Mid +Max Mid -Max
三角形 +Max Mid -Max Mid
アップ鋸歯 -Max -Max/2 Mid +Max/2 (サイクルの反復の直前に +Max に達する)
ダウン鋸歯 +Max +Max/2 Mid -Max/2 (サイクルの反復の直前に -Max に達する)

ドライバにより、フェーズ値が直近のサポート値に丸められることがある。たとえば、ドライバによっては、サインエフェクトで 0 と 9,000 (コサインを生成するために) しかサポートせず、その他のエフェクトで 0 と 18,000 しかサポートしていないこともある。

周期的フォースを生成するには、DirectInputDevice8.CreateEffect メソッドの guid パラメータに、次に挙げる値のどれか 1 つを渡す。

DirectInputEnumEffects.GetType で返される値の下位バイトが DIEFT_PERIODIC に等しい場合は、DirectInputEnumEffects.GetEffectGuid メソッドで取得したほかの任意の GUID を渡すこともできる。この方法を使えば、業者が設計したハードウェア特有のフォースを使用することができる。

周期的エフェクトのタイプ固有パラメータは、DIEFFECTperiodicForce メンバに含まれる DIPERIODICFORCE 型に格納されている。

周期的エフェクトの周期 (DIEFFECT.periodic.lPeriod) とサンプリング間隔 (DIEFFECT.lSamplePeriod) を混同しないように注意すること。周期は 1 つの波のサイクル全体を実行するのに要する時間である。サンプリング間隔は、すべてのエフェクトと同様に、マグニチュードを実際に調整する間隔の最小時間である。