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 を渡すこともできる。この方法を使えば、業者が設計したハードウェア特有のフォースを使用することができる。
周期的エフェクトのタイプ固有パラメータは、DIEFFECT の periodicForce メンバに含まれる DIPERIODICFORCE 型に格納されている。
周期的エフェクトの周期 (DIEFFECT.periodic.lPeriod) とサンプリング間隔 (DIEFFECT.lSamplePeriod) を混同しないように注意すること。周期は 1 つの波のサイクル全体を実行するのに要する時間である。サンプリング間隔は、すべてのエフェクトと同様に、マグニチュードを実際に調整する間隔の最小時間である。