Help us understand the problem. What is going on with this article?

【Oculus/SteamVR】バイブレーション機能の周波数の範囲を調べてみた【Unity】

TL;DR

多分この範囲、違ってたら教えてください

  • Rift: 160-320Hz
  • Rift S: 160-500Hz
  • Quest: 160-500Hz
  • SteamVR: 0-360Hz

はじめに

現行のOculus/SteamVRのバイブレーション機能のメソッドで共通しているfrequency(周波数)の範囲について調べてみました。

// Oculus Integration 17.0 (OVRPlugin 1.49.0)
SetControllerVibration (float frequency, float amplitude, Controller controllerMask)

// SteamVR Plugin V2
Execute(float secondsFromNow, float durationSeconds, float frequency, float amplitude, SteamVR_Input_Sources inputSource)

Oculusのバイブレーション機能

OculusのSetControllerVibration()ではfrequency0-1で指定します。

振幅と振動数の期待値は0から1の間の値(両端を含む)です。値が大きいほど、コントローラーの振動がより強くなるか、振動数が大きくなります。

引用元: Unity Haptics

上記のページには周波数の値について言及がないのですが、古いドキュメントに下記のような記載がありました。

振動を有効にするには振動数を指定します。0.0fを指定すると、160Hzで振動します。1.0fを指定すると、Riftでは320Hz、Rift Sでは500Hzで振動します。

引用元: Haptic Feedback

この範囲が変わっていないとすると、0-1指定はこのような対応になりそうです。

  • Rift: 160-320Hz
  • Rift S: 160-500Hz
  • Quest: 160-500Hz (Rift Sと同じコントローラーのはず1

SteamVR

SteamVRの場合はドキュメントのDescriptionに記載がありました。

// How often the haptic motor should bounce (0 - 320 in hz. The lower end being more useful)

引用元: Class SteamVR_Action_Vibration | SteamVR Unity Plugin

デバイス毎に違いがないのか気になるところですが、SteamVRでは0-360Hzの値を指定できるようです。

最後に(ポエム)

Oculusでは同じ0-1の指定で周波数の最大値が360Hz/500Hzと異なるデバイスがありますが、体験をデザインする上でこれって最適なんでしょうか?同じアプリでもRiftとRift Sでは感じ方が意図せず変わってしまうことを危惧しています。

例えば「軽めの振動と重めの振動」のような使い分けなら大丈夫そうですが、特定のモノ(リンゴなど)に触った時の最適な周波数は同じ値になる気がします。下記のような実装で一応固定値の指定はできますが、用意されているメソッドの使い道から外れていてかなり気持ち悪いです。どうするのがいいんでしょうね?

// 周波数を200Hzで指定する
var clampedFrequency = GetClamp01(200f);
OVRInput.SetControllerVibration (clampedFrequency, amplitude, controllerMask)

// デバイスの差異を無くすためのメソッド
float GetClamp01(float frequency)
{
    if(Rift)
    {
        return (frequency - 160f) / (360f - 160f);
    }
    if(RiftS || Quest)
    {
        return (frequency - 160f) / (500f - 160f);
    }
}

参考

[SteamVR Plugin V2] コントローラーへバイブレーション機能を付ける - Unity+UnrealEngine4+Blog.


  1. "QuestとRift Sは、共通の「Oculus Touch」コントローラーを使用しています。"(引用元: 「Oculus Quest」「Oculus Rift S」「Oculus Go」どれを買う? オススメVRデバイス徹底比較 | Mogura VR) 

nkjzm
特に明示されていない場合、記事中のソースコードはパブリックドメインです。 月額制のメンターサービスで初心者向けの開発サポートをしているので、分からないことがあれば是非こちらで質問してください! → https://menta.work/plan/1115
https://nkjzm.github.io/
unity-game-dev-guild
趣味・仕事問わずUnityでゲームを作っている開発者のみで構成されるオンラインコミュニティです。Unityでゲームを開発・運用するにあたって必要なあらゆる知見を共有することを目的とします。
https://unity-game-dev-guild.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした