WYVRN Chroma Configuration
WYVRN 設定は、Chroma アニメーションの再生に対応しています。Chroma アニメーションファイルには、ChromaLink、ヘッドセット、キーボード、キーパッド、マウス、マウスパッドなどの Chroma デバイスカテゴリでエフェクトを再生するためのカラーパターンデータが含まれています。
ツール
- Web Chroma Editor は、さまざまな入力ソースから Chroma アニメーションやコードスニペットを作成できます。デザイナーはコードを一切書かずに Chroma アニメーションを作成可能です。 このツールセットは、動画、テキスト、カメラ、ウェブカメラ、デスクトップキャプチャ、グラデーション、パターン、画像、ブレンドアニメーションなどを入力ソースとして使用できます。

イベント名の設定
ゲームイベントは、WYVRN SDK の SetEvenName(STRING_ID) メソッドを使用して設定されます。Chroma の再生は、ゲーム外で設定された STRING_ID を使用して、外部からトリガーできます。次の JSON スニペットは、C:\Program Files (x86)\InterHaptics\HapticFoldersのサブフォルダー内にある Wyvrn.config で定義されています。
Chroma イベント(Chroma Events)
ExternalCommands 内の External_Command_ID は、SetEventName によって送信され、コマンドをトリガーする STRING_ID に対応しています。
{
"ExternalCommands": [
{
"External_Command_ID": "STRING_ID",
"Chroma_Events": [
]
}
}
スタート(Start)
Start 外部コマンドは、WyvrnSDK DLL が読み込まれたときに自動でトリガーされます。これは、ゲーム側で外部 Chroma を追加する機会となり、最初のコマンドはループの待機アニメーションを設定するために使用できます。
{
"ExternalCommands": [
{
"External_Command_ID": "Start",
"Chroma_Events": [
...
]
}
]
}
待機アニメーションの設定(Set Idle Animation)
待機アニメーションが設定されると、そのアニメーションは再生とループを開始します。別のアニメーションが再生されて終了すると、再生は待機アニメーションに戻ります。待機アニメーションは、主要なデバイスカテゴリに対して設定できます(ChromaLink、ヘッドセット、キーボード、キーパッド、マウス、マウスパッド)。
Chroma イベントでは、Chroma_Effect と "Idle": "set" の2つのパラメーターが必要です。Chroma_Effect には、Chroma アニメーションへの相対パスを指定します。Chroma アニメーションファイルによって、どのデバイスカテゴリに対して待機アニメーションが設定されるかが自動的に決まります。
{
"ExternalCommands": [
{
"External_Command_ID": "idle",
"Chroma_Events": [
{
"Chroma_Effect": "Idle_ChromaLink",
"Idle": "set"
},
{
"Chroma_Effect": "Idle_Headset",
"Idle": "set"
},
{
"Chroma_Effect": "Idle_Keyboard",
"Idle": "set"
},
{
"Chroma_Effect": "Idle_Keypad",
"Idle": "set"
},
{
"Chroma_Effect": "Idle_Mouse",
"Idle": "set"
},
{
"Chroma_Effect": "Idle_Mousepad",
"Idle": "set"
}
]
}
}
待機アニメーションの解除(Unset Idle Animation)
待機アニメーションが設定されていない場合、ループしないアニメーションが再生された後にフォールバックするアニメーションは存在しません。アニメーションはワンショットアニメーションの最後のフレームで停止します。これは、意図された挙動である場合もあります。待機アニメーションは、主要なデバイスカテゴリに対して解除できます(ChromaLink、ヘッドセット、キーボード、キーパッド、マウス、マウスパッド)。
Chroma イベントでは、Chroma_Effect と "Idle": "unset" の2つのパラメーターが必要です。Chroma_Effect には、Chroma アニメーションへの相対パスを指定します。Chroma アニメーションファイルによって、どのデバイスカテゴリに対して待機アニメーションが解除されるかが自動的に決まります。
{
"External_Command_ID": "unset_idle",
"Chroma_Events": [
{
"Chroma_Effect": "Idle_ChromaLink",
"Idle": "unset"
},
{
"Chroma_Effect": "Idle_Headset",
"Idle": "unset"
},
{
"Chroma_Effect": "Idle_Keyboard",
"Idle": "unset"
},
{
"Chroma_Effect": "Idle_Keypad",
"Idle": "unset"
},
{
"Chroma_Effect": "Idle_Mouse",
"Idle": "unset"
},
{
"Chroma_Effect": "Idle_Mousepad",
"Idle": "unset"
}
]
},
待機アニメーションの解除 - 全部(Unset Idle Animations)
すべてのデバイスカテゴリの待機アニメーションは、1回の呼び出しで解除できます。Chroma イベントでは、"Chroma_Effect": "", と "Idle": "none" の2つのパラメーターが必要です。Chroma_Effect は空欄です。Idle パラメーターは "none" です。
{
"External_Command_ID": "clear_idle",
"Chroma_Events": [
{
"Chroma_Effect": "",
"Idle": "none"
}
]
},
アニメーション再生 - ワンショット(Play Animation - One Shot)
Chroma イベントのデフォルトの再生動作では、アニメーションは1回だけ再生されます。別のアニメーションが再生中の場合、そのアニメーションは停止され、指定されたアニメーションがループなしで再生されます。
Chroma_Effect には、Chroma アニメーションファイルへの相対パスを指定します。どのデバイスカテゴリで再生されるかは、Chroma アニメーションファイルによって自動的に決まります。同じアニメーションがすでに再生されている場合は、アニメーションは最初からリセットされ、1回だけ再生されます。
{
"External_Command_ID": "play_animation",
"Chroma_Events": [
{
"Chroma_Effect": "Play animation - oneshot_ChromaLink"
},
{
"Chroma_Effect": "Play animation - oneshot_Headset"
},
{
"Chroma_Effect": "Play animation - oneshot_Keyboard"
},
{
"Chroma_Effect": "Play animation - oneshot_Keypad"
},
{
"Chroma_Effect": "Play animation - oneshot_Mouse"
},
{
"Chroma_Effect": "Play animation - oneshot_Mousepad"
}
]
},
アニメーション再生 - 割り込みなし(Play Animation - No Interrupt)
Chroma イベントは、視覚的なアーティファクトを避けるために、自身のアニメーションを中断せずに再生することができます。これは、マシンガンの発砲のような短いアニメーションの場合に有効です。1秒間に複数のイベントが発生する可能性がありますが、意図としてはアニメーションを最後まできれいに再生させることです。
この場合は、"Interrupt": false パラメーターを使用します。別のアニメーションが再生中の場合は、そのアニメーションが停止され、新しいアニメーションが再生されます。しかし、同じアニメーションがすでに再生中の場合は、完了させるために中断されません。Chroma アニメーションは1回のみ再生されます。
{
"External_Command_ID": "play_animation_nointerrupt",
"Chroma_Events": [
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_ChromaLink",
"Interrupt": false
},
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_Headset",
"Interrupt": false
},
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_Keyboard",
"Interrupt": false
},
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_Keypad",
"Interrupt": false
},
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_Mouse",
"Interrupt": false
},
{
"Chroma_Effect": "Play animation - oneshot - nointerrupt_Mousepad",
"Interrupt": false
}
]
},
Chroma アニメーション再生 - ループ(Play Chroma Animation - Loop)
一部の Chroma アニメーションは、明確な ON と OFF のイベントを持つエフェクトのためにループ再生が必要になります。いずれかのアニメーションが再生中の場合、そのアニメーションは停止され、ループアニメーションが再生されます。"Loop": "infinity" パラメーターを使用すると、Chroma アニメーションは停止されるまで無限にループします。
{
"External_Command_ID": "play_animation_loop",
"Chroma_Events": [
{
"Chroma_Effect": "Play animation - looping_ChromaLink",
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping_Headset",
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping_Keyboard",
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping_Keypad",
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping_Mouse",
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping_Mousepad",
"Loop": "infinity"
}
]
},
Chroma アニメーション再生 - ループ - 割り込みなし(Play Chroma Animation - Loop - No Interrupt)
Chroma イベントは、参照されているアニメーションがすでに再生中の場合にアニメーションを停止しないようにしつつ、ループ再生することができます。"Loop": "infinity" パラメーターを使用すると、アニメーションはループ再生されます。"Interrupt": false パラメーターは、アニメーションが自分自身を中断しないようにします。
{
"External_Command_ID": "play_animation_loop_nointerrupt",
"Chroma_Events": [
{
"Chroma_Effect": "Play animation - looping - nointerrupt_ChromaLink",
"Interrupt": false,
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping - nointerrupt_Headset",
"Interrupt": false,
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping - nointerrupt_Keyboard",
"Interrupt": false,
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping - nointerrupt_Keypad",
"Interrupt": false,
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping - nointerrupt_Mouse",
"Interrupt": false,
"Loop": "infinity"
},
{
"Chroma_Effect": "Play animation - looping - nointerrupt_Mousepad",
"Interrupt": false,
"Loop": "infinity"
}
]
},
待機時のみ再生(Play When Idle)
OnlyWhenIdle を使用して、待機アニメーションが再生されている場合にのみ Chroma アニメーションを再生するよう指定します。OnlyWhenIdle が true に設定されている場合、他のアニメーションが再生中であれば、指定した Chroma エフェクトは再生されません。
{
"External_Command_ID": "PlayWhenIdle",
"Chroma_Events": [
{
"Chroma_Effect": "PlayWhenIdle_ChromaLink",
"OnlyWhenIdle": true
},
{
"Chroma_Effect": "PlayWhenIdle_Headset",
"OnlyWhenIdle": true
},
{
"Chroma_Effect": "PlayWhenIdle_Keyboard",
"OnlyWhenIdle": true
},
{
"Chroma_Effect": "PlayWhenIdle_Keypad",
"OnlyWhenIdle": true
},
{
"Chroma_Effect": "PlayWhenIdle_Mouse",
"OnlyWhenIdle": true
},
{
"Chroma_Effect": "PlayWhenIdle_Mousepad",
"OnlyWhenIdle": true
}
]
},
アニメーション再生の優先度
Chroma イベントには優先度設定があり、低い優先度のアニメーションが高い優先度のアニメーションを中断することを防ぎます。優先度は、Chroma エフェクトの設定で指定された場合にのみ再生動作に影響します。優先度のオプションには、VeryHigh、High、Medium、Low、VeryLow があります。
"Priority": "VeryHigh",
"Priority": "High",
"Priority": "Medium",
"Priority": "Low",
"Priority": "VeryLow",
このサンプル JSON は、アニメーションをループせずに1回だけ再生し、最高優先度を指定します。
{
"External_Command_ID": "PlayPriorityVeryHigh",
"Chroma_Events": [
{
"Chroma_Effect": "PlayPriorityVeryHigh_ChromaLink",
"Priority": "VeryHigh"
},
{
"Chroma_Effect": "PlayPriorityVeryHigh_Headset",
"Priority": "VeryHigh"
},
{
"Chroma_Effect": "PlayPriorityVeryHigh_Keyboard",
"Priority": "VeryHigh"
},
{
"Chroma_Effect": "PlayPriorityVeryHigh_Keypad",
"Priority": "VeryHigh"
},
{
"Chroma_Effect": "PlayPriorityVeryHigh_Mouse",
"Priority": "VeryHigh"
},
{
"Chroma_Effect": "PlayPriorityVeryHigh_Mousepad",
"Priority": "VeryHigh"
}
]
},
別のアニメーションを再生してから継続再生
Chroma イベントの Push オプションを使用すると、現在のアニメーションはその時点のフレームで停止し、指定された Chroma エフェクトが完了するまで再生を一時停止します。指定されたエフェクトの再生が終了すると、元のアニメーションの再生が再開されます。元のアニメーションがループ再生されていた場合は、再生再開後もループを続けます。
{
"External_Command_ID": "PlayPushAnimation",
"Chroma_Events": [
{
"Chroma_Effect": "PlayPushAnimation_ChromaLink",
"Push": true
},
{
"Chroma_Effect": "PlayPushAnimation_Headset",
"Push": true
},
{
"Chroma_Effect": "PlayPushAnimation_Keyboard",
"Push": true
},
{
"Chroma_Effect": "PlayPushAnimation_Keypad",
"Push": true
},
{
"Chroma_Effect": "PlayPushAnimation_Mouse",
"Push": true
},
{
"Chroma_Effect": "PlayPushAnimation_Mousepad",
"Push": true
}
]
}
アニメーションの停止(Stop Animation)
Chroma イベントは、ワンショット再生およびループ再生中の Chroma アニメーションを停止することができます。"Stop_Animation": true を使用すると、指定したアニメーションのみを停止できます。これは、ゲーム内で ON と OFF の状態が別々のイベントとして扱われる場合に便利です。たとえば、火炎放射器の武器が ON で起動し、プレイヤーがボタンを離すなどの操作によって OFF が判定されるケースです。
Chroma_Effect には Chroma アニメーションへの相対パスを指定します。どのデバイスカテゴリのアニメーションを停止するかは、指定された Chroma アニメーションファイルによって自動的に決まります。待機アニメーションが設定されている場合、再生は待機アニメーションへフォールバックします。
{
"External_Command_ID": "stop_animation",
"Chroma_Events": [
{
"Chroma_Effect": "Play animation - looping_ChromaLink",
"Stop_Animation": true
},
{
"Chroma_Effect": "Play animation - looping_Headset",
"Stop_Animation": true
},
{
"Chroma_Effect": "Play animation - looping_Keyboard",
"Stop_Animation": true
},
{
"Chroma_Effect": "Play animation - looping_Keypad",
"Stop_Animation": true
},
{
"Chroma_Effect": "Play animation - looping_Mouse",
"Stop_Animation": true
},
{
"Chroma_Effect": "Play animation - looping_Mousepad",
"Stop_Animation": true
}
]
},
カテゴリ停止(Stop Category)
特定のアニメーションを参照せずに、デバイスカテゴリによりアニメーションを停止することができます。Chroma_Effect には空のパラメーターを使用します。Stop_Category パラメーターでデバイスカテゴリを指定します。待機アニメーションが設定されている場合、再生は待機アニメーションへフォールバックします。
``
{
"External_Command_ID": "stop_category",
"Chroma_Events": [
{
"Chroma_Effect": "",
"Stop_Category": "ChromaLink"
},
{
"Chroma_Effect": "",
"Stop_Category": "Headset"
},
{
"Chroma_Effect": "",
"Stop_Category": "Keyboard"
},
{
"Chroma_Effect": "",
"Stop_Category": "Keypad"
},
{
"Chroma_Effect": "",
"Stop_Category": "Mouse"
},
{
"Chroma_Effect": "",
"Stop_Category": "Mousepad"
}
]
},
すべて停止(Stop All)
すべての Chroma アニメーションは、Chroma アニメーションやデバイスカテゴリを指定せずに停止することができます。"Chroma_Effect": "", パラメーターは空欄にし、"Stop_All": true パラメーターを指定すると、すべてのデバイスカテゴリのアニメーションが停止されます。待機アニメーションが設定されている場合、再生は待機アニメーションへフォールバックします。
{
"External_Command_ID": "stop_all",
"Chroma_Events": [
{
"Chroma_Effect": "",
"Stop_All": true
}
]
}
クロスフェード(Crossfade)
クロスフェード(Crossfade)は、現在のアニメーションから新しいアニメーションへの遷移に使用されるフレーム数を指定します。再生は 1 秒間に 30 フレームで行われるため、クロスフェードを 60 に設定すると、2 秒間の遷移になります。
{
"External_Command_ID": "PlayCrossfade",
"Chroma_Events": [
{
"Chroma_Effect": "PlayCrossfade_ChromaLink",
"Crossfade": 60
},
{
"Chroma_Effect": "PlayCrossfade_Headset",
"Crossfade": 60
},
{
"Chroma_Effect": "PlayCrossfade_Keyboard",
"Crossfade": 60
},
{
"Chroma_Effect": "PlayCrossfade_Keypad",
"Crossfade": 60
},
{
"Chroma_Effect": "PlayCrossfade_Mouse",
"Crossfade": 60
},
{
"Chroma_Effect": "PlayCrossfade_Mousepad",
"Crossfade": 60
}
]
},
フォールバックコマンド (Fallback Commands)
WYVRN 設定には、FallbackCommands 配列が含まれており、これは ExternalCommands 配列と同じスキーマを使用します。FallbackCommands と ExternalCommands の両方で、Chroma_Events 配列および Haptic_Events 配列をサポートしています。
{
"ExternalCommands": [
{
"External_Command_ID": "EXTERNAL_ID",
"Chroma_Events": [],
"Haptic_Events": []
}
],
"FallbackCommands": [
{
"External_Command_ID": "FALLBACK_ID",
"Chroma_Events": [],
"Haptic_Events": []
}
]
}
ExternalCommands は完全一致で比較されるのに対し、FallbackCommands は正規表現によるマッチングを使用します。.* はワイルドカードとして部分的なイベント名にマッチさせることができます。
".*FALLBACK_ID"パターンは"FALLBACK_ID"で 終了する文字列 にマッチします。"FALLBACK_ID.*"パターンは"FALLBACK_ID"で 開始する文字列 にマッチします。".*FALLBACK_ID.*"パターンは"FALLBACK_ID"を 含む文字列 にマッチします。
{
"FallbackCommands": [
{
"External_Command_ID": ".*FALLBACK_ID.*"
}
]
}
エイリアスイベント(Alias Events)
AliasEvents は、ExternalCommands と FallbackCommands のマッチング処理が始まる前にイベント名をリネームするためのイベント名の配列です。この機能は、SetEventName によって送信される文字列識別子を修正し、期待されるイベント名へイベントを再ルーティングする際に便利です。
From の値は、SetEventName から受け取る文字列識別子を表します。To の値は、外部コマンドおよびフォールバックコマンドとのマッチングに使用されるべき本来の文字列識別子を表します。
{
"AliasEvents": [
{
"From": "EVENT_A",
"To": "EVENT_B"
}
]
}