WYVRN Chroma 灯效动画配置
WYVRN 配置支持 Chroma 动画播放。Chroma 动画文件包含用于在 Chroma 设备类别上播放效果的颜色模式数据,支持的设备包括 ChromaLink、耳机、键盘、键盘附件、鼠标和鼠标垫。
工具
- 在线Chroma编辑器 Web Chroma Editor 可从多个输入源创建 Chroma 动画和代码片段。设计师无需编写任何代码即可创建 Chroma 动画。该工具集支持的视频、文本、摄像头、网络摄像头、桌面捕捉、渐变、图案、图像以及混合动画等输入源。

设置命名事件方法(Set Event Name)
游戏事件可以通过 WYVRN SDK 使用 SetEvenName(STRING_ID) 方法进行设置。Chroma 可使用设置的事件名 STRING_ID 通过外部控制触发 Chroma 灯效播放,该播放行为在游戏外部进行配置。以下 JSON 片段定义在在 C:\Program Files (x86)\InterHaptics\HapticFolders 路径文件下的 Wyvrn.config 文件中。
Chroma 灯效事件(Chroma Events)
External_Command_ID 是 ExternalCommands 中的字段,与通过 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)
当空闲动画被设置后,动画将开始循环播放。当其他动画播放完毕后,系统将回退至空闲动画继续播放。空闲动画可设置在以下主要类别的设备上:灯效联动、耳机、键盘、键盘垫、鼠标和鼠标垫。 Chroma 事件需要两个参数:Chroma_Effect 和 "Idle": "set"。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)
如果未设置空闲动画,则在非循环动画播放完毕后不会有回退动画。动画将停留在单次动画的最后一帧。有时这可能是预期的行为。
可为以下主要类别的设备取消空闲动画设置:灯效联动、耳机、键盘、键盘附件、鼠标和鼠标垫。
Chroma 事件需要两个参数:Chroma_Effect 和 "Idle": "unset"。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)
所有设备类别的空闲动画可通过一次调用统一取消设置。
Chroma 事件需要两个参数:"Chroma_Effect": "" 和 "Idle": "none"。其中 Chroma_Effect 的参数为空,Idle 参数为 "none"。
The idle animations for all device categories can be unset with a single call. The Chroma Event requires two parameters for "Chroma_Effect": "", and "Idle": "none". The Chroma_Effect is blank. The Idle parameter is "none".
{
"External_Command_ID": "clear_idle",
"Chroma_Events": [
{
"Chroma_Effect": "",
"Idle": "none"
}
]
},
播放动画 - 单次播放(Play Animation - One Shot)
Chroma 事件的默认播放方式为单次播放。如果当前有其他动画正在播放,则会停止正在播放的其他动画,然后非循环播放一次指定的动画。Chroma_Effect 是指向 Chroma 动画文件的相对路径。Chroma 动画文件会自动决定该动画所对应的设备类别。如果当前播放的动画与新动画相同,则会重新再次播放。
{
"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 事件可以在播放新的动画时,不中断自身正在播放的动画,以避免视觉上的异常。这种方式适用于如机关枪射击这类短动画。在每秒可能多次触发相同事件的情况下,我们希望每段动画都能完整的播放。此时应使用 "Interrupt": false 参数。如果当前播放动画与新动画不同,它将被中断以播放新动画;如果当前播放的动画与新动画相同,则不会被打断,以确保每段动画的完整播放。在当前动画播放完成后,新的Chroma 动画将重头再次播放。
{
"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
}
]
},
播放动画 - 循环播放(Play Chroma Animation - Loop)
在遇到具有 ON和 OFF 状态事件的效果时,某些 Chroma 动画需要循环播放。
如果当前有动画正在播放,它将被停止以播放该循环动画。
"Loop": "infinity" 参数表示动画将持续循环,直到被停止。
{
"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"
}
]
},
播放动画 - 循环 – 非中断(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"
}
]
},
停止动画(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_Effect": "" 参数应为空,"Stop_All": true 参数表示将停止所有设备类别的动画播放。如果已设置空闲动画,播放将回退至空闲动画。
{
"External_Command_ID": "stop_all",
"Chroma_Events": [
{
"Chroma_Effect": "",
"Stop_All": true
}
]
}