2014年1月19日日曜日

Oculus VR SDK - Class Reference OVR::DeviceManager (非公式翻訳)

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはユーザ登録のうえhttps://developer.oculusvr.com/?action=docを参照して下さい。
This document is unofficially translated by users. Please refer to the original document here as a registered user: https://developer.oculusvr.com/?action=doc.
Copyright © 2013 Oculus VR, Inc. All Rights Reserved.

OVR::DeviceManager クラス リファレンスabstract
HMD およびセンサーなど OVR が対応したデバイスを維持しアクセスを提供する More...
#include <OVR_Device.h>
OVR::DeviceManager の継承ダイアグラムは:

詳細な説明

HMD およびセンサーなど OVR が対応したデバイスを維持しアクセスを提供する。
通常プログラム開始時に DeviceManager のインスタンスが一つ作成され、デバイスが列挙体と共に作成されます。DeviceManager の参照カウントが行なわれ、作成した子デバイスにより参照追加されたうえ、結果的にリリースされる最後のオブジェクトとなります。
DeviceManager に MessageHandler をインストールすることでデバイスが接続または外されたことを検知します。次のコードによりマネージャおよび最初の利用可能な HMDDevice を作成します。そのうえで必要なくなったときに解放します:
DeviceManager* manager = DeviceManager::Create(); HMDDevice* hmd = manager->EnumerateDevices<HMDDevice>().CreateDevice();
if (hmd) hmd->Release(); if (manager) manager->Release();

パブリック 型

enum  
このデバイス型に対する Static 定数、テンプレート型キャストのチェックで使用
- Public Types inherited from OVR::DeviceBase
DeviceBase の列挙体を作成することで、全てのデバイスの列挙体が作成される

パブリック メンバー関数

DeviceManager ()
デフォルトのコンストラクタ
virtual DeviceType GetType () const
DeviceBase 実装. More...
virtual DeviceManager * GetManager () const
マネージャを取得 More...
template<class D >
DeviceEnumerator< D > EnumerateDevices (bool availableOnly=true)
指定クラスの全ての利用可能なデバイスの列挙体を作成し、最初のデバイスを参照する列挙体を返す More...
virtual DeviceEnumerator EnumerateDevicesEx (const DeviceEnumerationArgs &args)=0
デバイス列挙体の内部実装を提供し、DeviceEnumerationArgs で指定されたデバイス型にもとづいてデバイスの列挙体を作成 More...
- Public Member Functions inherited from OVR::DeviceBase

Static パブリック メンバー関数

static DeviceManager * Create ()
新規の DeviceManager を作成More...

メンバー 関数 ドキュメンテーション


static DeviceManager* OVR::DeviceManager::Create()
static
新規の DeviceManager を作成
DeviceManager のインスタンスは一回に一つのみ作成すべきです。
戻り値
失敗した場合 null

template<class D >
DeviceEnumerator<D> OVR::DeviceManager::EnumerateDevices(bool availableOnly = true)
inline
指定クラスの全ての利用可能なデバイスの列挙体を作成し、最初のデバイスを参照する列挙体を返す。
利用可能なデバイスがない場合、空の列挙体を返す。DeviceEnumerator を通じて次のAPIが公開される:
DeviceEnumerator::GetType() - デバイス型のチェック。もしデバイスが見つからなかった/参照されてなかった場合は Device_None を返す。 DeviceEnumerator::GetDeviceInfo() - デバイスに関する情報を取得。 DeviceEnumerator::CreateDevice() - デバイスのンスタンスを作成 DeviceEnumerator::Next() - 次のデバイスに移動。
テンプレート引数
Dd の種類
引数
availableOnly(任意) 利用可能のみか指定
戻り値
.

virtual DeviceEnumerator OVR::DeviceManager::EnumerateDevicesEx(const DeviceEnumerationArgs & args)
pure virtual
デバイス列挙体の内部実装を提供。DeviceEnumerationArgs のなかで動的に指定されたデバイス型にもとづいてデバイスの列挙体を作成。
エンドユーザは代わりに DeumerateDevices<>() を使用すべき。
引数
args引数
戻り値
.

virtual DeviceManager* OVR::DeviceManager::GetManager()const
inlinevirtual
マネージャを取得
戻り値
失敗した場合 null 、それ以外の場合はマネージャを返す
OVR::DeviceBase から再実装

virtual DeviceType OVR::DeviceManager::GetType()const
inlinevirtual
DeviceBase 実装
戻り値
OVR::DeviceBase から再実装

このクラスのドキュメンテーションは次のファイルから生成:

Oculus VR SDK - Class Reference OVR::DeviceEnumerationArgs (非公式翻訳)

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはユーザ登録のうえhttps://developer.oculusvr.com/?action=docを参照して下さい。
This document is unofficially translated by users. Please refer to the original document here as a registered user: https://developer.oculusvr.com/?action=doc.
Copyright © 2013 Oculus VR, Inc. All Rights Reserved.

OVR::DeviceEnumerationArgs クラス リファレンス
DeviceManager::EnumerateDevicesEx のデバイス列挙体の引数を提供 More...
#include <OVR_Device.h>

詳細な説明

DeviceManager::EnumerateDevicesEx のデバイス列挙体の引数を提供 

パブリック メンバー関数

DeviceEnumerationArgs (DeviceType enumType, bool availableOnly)
コンストラクタ More...
bool MatchRule (DeviceType type, bool available) const
ヘルパー関数。引数が指定した列挙体と一致すれば true More...

コンストラクタ & デストラクタ ドキュメンテーション


OVR::DeviceEnumerationArgs::DeviceEnumerationArgs(DeviceType enumType,
bool availableOnly 
)
inline
コンストラクタ
引数
enumType列挙体の型
availableOnly利用可能のみの場合は true

メンバー関数 ドキュメンテーション


bool OVR::DeviceEnumerationArgs::MatchRule(DeviceType type,
bool available 
)const
inline
ヘルパー関数。引数が指定した列挙体と一致すれば true
引数
type
available利用可能であれば true
戻り値
成功した場合 true 、失敗した場合 false

このクラスのドキュメンテーションは次のファイルから生成:

2014年1月18日土曜日

Oculus VR ベストプラクティス ガイド(非公式翻訳)

本ドキュメントの最新バージョンの翻訳は次のリンクにあります:

Oculus VR ベストプラクティス ガイド【DK2対応】(非公式翻訳)

以下のドキュメントは過去バージョンであるDK1に対応した内容となります:

------------------

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはhttp://developer.oculusvr.com/best-practicesを参照して下さい。
This document is unofficially translated by users. Please refer to the original document here: http://developer.oculusvr.com/best-practices
Copyright © 2014 Oculus VR, Inc. All Rights Reserved.


Oculus VR ベストプラクティス ガイド

v0.007 (2014年1月16日)


最新版およびもっとも最新の情報については下記サイトを訪問下さい:

作者 :
Richard Yao
Tom Heath
Aaron Davies
Tom Forsyth
Nate Mitchell
Perry Hoberman

このガイドの目的は開発者が次の観点を最大化するバーチャルリアリティを実現することです:

  • 眼球運動の快適さ - 目の疲れを回避
  • 身体的な快適さ - 方向感覚の欠如と吐き気
  • ポジティブなユーザ体験 - 楽しく、没入し魅力ある体験

注意:他のどのような媒体でもいえるように休憩なしの過剰な使用は開発者、エンドユーザ、あるいはデバイスそのもののためにも推奨しません。

本資料はドラフトであり法律および医学の専門家による監修待ちです。


ベストプラクティスの全体サマリ

レンダリング

  • Oculus VR の歪みシェーダを使用下さい。独自の歪みプログラムで近似すると、たとえ「あまり問題なく見える」 ようであってもユーザにとって不快感が生じる場合があります。
  • 投影行列は完全に正しいものとしましょう。頭部の動作に伴う現実世界の視線とのずれは小さな差異でも眼球運動の快適さや身体的な快適さを劣化させます。
  • バーチャルリアリティの没入感は開始から終了まで維持して下さい。Rift を通してユーザの視界に静的なイメージを固定しないで下さい。
  • 各々の目で完全に異なるコンテンツを表示することは避けて下さい。もしレンダリング エフェクトを使う場合、両方の目で分割させるようにしてランダムな差異を含めないようにして下さい。脳がイメージを正しく統合できなくなります。
  • スーパーサンプリングおよびアンチエイリアスの使用により外見上の低解像度などは解消して下さい。特に各々の目の中心部では影響が大きいものです。

レイテンシの最小化

  • コードは最低でも 60fps 、垂直同期バッファなしで動作させて下さい。タイムラグやフレーム落ちはバーチャルリアリティで不快感を生じます。
  • 理想的には、動作から表示までの目標時間(motion-to-photon)を 20ms 以下として下さい。コードを整理してセンサー融合(Riftセンサーの読み取り)からレンダリングまでの時間を最小化して下さい。
  • SDKのプレディクティブ トラッキングを使用し、関数呼び出しに対して正確な時間を引数として渡してください。

最適化

  • レンダリング バッファ解像度を減らしてビデオメモリを節約しフレームレートを増加させてください。

ヘッドトラッキングおよびビューポート

  • 環境の中でユーザの安定感を損なう機能は避けて下さい。ユーザ環境の水平線を回転させたり移動することはユーザにとって不快感を生じる場合があります。
  • ディスプレイはヘッドトラッキングおよびビューポート変更に例外なく、常に反応すべきです。例えゲームがポーズされたりカットシーンを表示させる場合もユーザは見回すことが出来るようにすべきです。
  • カメラの回転および移動は頭部の動作と整合性をもって行なうべきです。差異が生じることは不快感を生じます。

加速

  • 加速は視覚と(内耳の)前庭覚との不整合を生じます。そのような不整合の時間および頻度は最小化して下さい。加速はできるかぎり短く(望ましくは瞬間的)、少ない頻度として下さい。
  • 「加速」とは正面にスピードアップするケースだけではありません。ユーザのあらゆる動作に当てはまります。減速したり停止したり、移動中または静止中に曲がったり、足踏みをしたり、横に押されたりすることも加速のパターンのひとつです。
  • 加速はできるかぎり必ずユーザが発動して制御するものとして下さい。カメラを揺らしたり、痙動したり、あるいは上下させることはプレイヤーにとって不快感を生じさせます。

速度

  • ユーザにとってバーチャル環境中の移動でもっとも快適となるのは現実世界での速度です。歩行速度は 1.4 m/s がもっとも快適です。
  • 一つの方向への移動するときに別の方向をみることは方向感覚の欠如を生じる場合があります。ユーザが移動方向と別の方向をみる必要性は最小化し、特に歩行速度より速い場合はなおさらです。

カメラ

  • ユーザの視点変更を強制することは動作および加速による不快感を生じることがあります。わずかな動作と思えるようなもの、例えば照準合わせのためわずかに銃の上に視点をシフトさせることでさえ方向感覚を欠如させ不快感を生じさせることがあります。
  • カメラでズームインまたはズームアウトさせることはシミュレータ酔いの発症または悪化につながることがあり、特にカメラの動作速度が頭部の動作速度と異なる場合はなおさらです。
  • 第三者視点のコンテンツの場合、カメラの加速や動作がアバターのしていることに関わらず吐き気の原因となる場合があります。さらに、ユーザには常に環境を見回せるようにすべきであり、このことはコンテンツのデザイン自体にも影響する場合があります。
  • Oculus 頭部モデルを適用して、正確で快適な座標系を作成して下さい
  • オイラー角はできるかぎり避け、望ましくはクォータニオンを使用して下さい。真っ直ぐ上や下をみることでカメラのテストを行い、安定させるとともに常に顔の向きと整合性をとってください。
  • 頭の揺れ(bobbing)は避けて下さい。垂直方向に小さく連続的な不快感を生じる加速が発生します。

シミュレータ酔い管理およびテスト方法

  • コンテンツのテストは偏りのない様々なユーザで行い、幅広い客層にとって快適であるようして下さい。開発者自身はテストにもっとも不向きです。繰り返しRiftに触れて、コンテンツに親しみを持つことでシミュレータ酔いに影響を受けにくくなっており、初めてのユーザと比べてコンテンツの不整合も気付きにくくなります。
  • 酔いに対する人々の反応や耐性は様々であり、視覚による乗り物酔いはコンピュータやテレビ画面と比較すると、バーチャル リアリティ ヘッドセットのほうが直ちに発生しやすいものです。客層は激しい体験を強く乗り越えようとはしません。
  • ユーザが調整できるオプションの一部として、モノスコピック映像 (従来の映像) モードを準備してカメラ間の距離をゼロにする(つまり、両方の画像を同一にする)ことができるようにして下さい。これにより敏感なユーザのシミュレータ酔いや目の疲れを軽減できます。
  • ユーザが視覚体験の強度を調整できるメカニズムの実装も考慮して下さい。これはコンテンツ依存となりますが、調整することとしては移動速度、加速の大きさ、表示された視野角の範囲などが含まれます。そのような設定のデフォルト値は強度の弱い体験とすべきです。
  • シミュレータ酔い管理にユーザが調整できる設定の全てにおいて、ユーザはリアルタイムで変更したいことがあります(例えば、バーチャルリアリティに慣れたり、疲れたりするため)。できるかぎり、ユーザがスタートからやり直しとなることなくゲーム内で設定変更できるようにして下さい。

ゲーム内の衝撃や衝突

  • 衝撃や衝突の際に、ユーザの制御なしにカメラを移動させないで下さい(わずかにカメラを揺らしたり、痙動したりするだけであっても)。加速、向き、または回転に予想しない、制御できない変更が入ることを意味するため不快感を生じます。
  • ユーザが調整できるカメラ動作の設定を考慮して下さい。設定が低い値の場合は衝撃や衝突を一切許可しないようにして、設定が高い値の場合は許可するようにして下さい。ステレオスコピック深度の度合い(立体視の度合い)などが候補です。
  • 個別のリアリティや正確にスケールされた世界では左右の目のカメラをユーザプロファイルの瞳孔間距離に合わせてセットして下さい。リアリティには欠点があることに留意して下さい:比較的距離の近い範囲では、立体視の度合いは弱くなります。カメラ間距離を広げることでステレオスコピック深度を強化させたい気持ちは抑えてください。
  • ユーザの視界のなかで目立って配置させる静的な視覚上の物体(例えばHUDなど)をバーチャル世界でユーザから 50 cm 以内の距離にしないで下さい。それだけ近い物体に視点をあわせることで目の疲れを生じたり、くっきりとレンダリングされた物体がぼやけて見える場合さえあります。ユーザが依然として環境の中の物体に近づこうとする場合はありますが、出来るかぎり強制的にそういう状況に陥ることを避けるべきです。

ユーザインタフェース

  • UIはバーチャル世界の3D部分であるべきで、理想的には視点から少なくとも 50cm 以上離すべきです。例えユーザの目の前に浮遊する平らなポリゴン、シリンダ、または球に描画された場合であっても同様です。
  • ユーザが眼球を回転しないとUIが見れない状況にしないで下さい。UIは画面の真ん中 1/3 の範囲に収めて下さい、そうでない場合も頭部の動作により確認できるようにすべきです。
  • 頭部の動作によりUI 要素が移動したり拡大/縮小する場合は注意して下さい(例えば、スクロールする長いメニューで頭を動かすことで読めるような場合)。ユーザの動作に対して正確に確実に反応させ、気が散る動作や不快感を生じることなく容易に読めるようにして下さい。
  • UI要素は3D世界に対して直感的で没入感を持たせるように考慮して下さい。例えば、残り弾数は浮いたHUDの上でなく、ユーザの武器の上に表示させるなど出来ます。
  • 照準線、目盛り線またはカーソルをターゲットするオブジェクトと同じ深度で描画して下さい。そうしない場合は目の焦点を合わせてない平面の深度にあるときにぼやけたり、さらに(または)二重のイメージとして映ったりします。
  • 一般的にユーザが焦点合わせを急速および頻繁に行なわせることは避けて下さい。例えば遠くのオブジェクトと近くのHUD要素でフォーカスを変えることが必要な場合など考えられます。

アバターの制御

  • Riftを被っているときは、ユーザ入力デバイスを見ることが出来ません。ユーザにはデフォルト入力方法など、慣れたコントローラの使用方法を許可して下さい。もしキーボードがどうしても必要ならば、ユーザは触覚によるフィードバックで操作しないといけないことを念頭に入れて下さい。
  • 頭部の動作そのものを入力制御として使用する、または制御するスキーム全体の中で文脈依存性を導入するの一つの方法として考慮下さい。

音声

  • 音声を設計するとき、ヘッドフォンを使用する場合は出力音源がユーザの頭部の動作に追従するけれど、スピーカーを使用するときは追従しないことを念頭に入れて下さい。ユーザがゲーム設定のなかで出力デバイスを選択できるようにして、ゲーム内の音声が正しい場所から発するよう、頭部の位置と出力音源の相対的な位置関係を考慮して下さい。

コンテンツ

  • ユーザの体部分も準備して下さい。下方向を見て体がないことにユーザは当惑することなり、曖昧でゴーストのような見映えから完全な客ラクターアバターを用意することでユーザがバーチャル世界に夢中にさせることが出来ます。
  • 他のシステムと同様に、解像度が問題となるところでは自身のアート作品のサイズやテクスチャに配慮して下さい(例えば、細いオブジェクトは避けて下さい)。
  • ユーザの現実世界から発生していない、予想しない垂直方向の加速、例えばボコボコや起伏のある地形の上を歩く、などは不快感を生じることがあります。歩く表面を平らにすることを考えたり、そのような地形を渡るときはユーザの視界をブレさせない、などして下さい。
  • ユーザが経験したことのない没入感を体験していることを意識して下さい。ゾッとしたり、ショッキングなコンテンツにより、過去のメディアでは実現できなかった度合いで、ユーザに重篤な効果があること(特にセンシティブなもの)を認識して下さい。プレイヤーにそのようなコンテンツがあることの警告を受けるようにして、心の準備があるのか選択できるようにして下さい。
  • バーチャルリアリティでは、興味深い形やテクスチャを見ることだけでも興味をそそる体験になる場合があります。モニターで映すと単なるショーウィンドウにすぎない場合も、バーチャルリアリティでは主要な注目点になりえます。
  • コンテンツに深度の効果を出すため、立体視のエフェクトだけに依存しないで下さい。ライティング、テクスチャ、視差(ユーザの移動に合わせてオブジェクトが動くように見える事象)、および他の視覚的な機能は深度および空間の効果を出すにあたり等しく重要(あるいはより重要)です。
  • 環境や相互作用を設計する時、正面を向いたままの横移動(Strafe)、後退や、スピンの必要性は最小限にとどめて下さい。
  • 安定した、正面方向の動作がバーチャル世界のユーザにとって最も快適です。
  • 人が一般的に頭や体を動かすタイミングは、現在焦点を合わせているものから15-20度離れたものを注視するときです。ユーザにそのような視界の移動を強制させることを避けて、筋疲労や目の疲れを予防して下さい。
  • ユーザはどんなときでもどのような方向も見られることを忘れず、その際に没入感を壊すものは見せないで下さい(環境をレンダリングする際のチートなど)。

健康および安全

  • Riftのの使用に伴う注意事項(付録 L)を良く読んで実践することで、自身、開発者、そしてユーザの健康および安全を保証して下さい。

本編にあたる付録の翻訳は以下を参照して下さい
http://gamesonytablet.blogspot.jp/2014/02/oculus-vr-appendix.html



Copyright © 2014 Oculus VR, Inc.

本資料はドラフトであり法律および医学の専門家による監修待ちです。

Oculus VR SDK - Class Reference OVR::DeviceInfo(非公式翻訳)

このドキュメントは有志により翻訳されたもので、オフィシャルではありません。オリジナルのページはユーザ登録のうえhttps://developer.oculusvr.com/?action=docを参照して下さい。
This document is unofficially translated by users. Please refer to the original document here as a registered user: https://developer.oculusvr.com/?action=doc.
Copyright © 2013 Oculus VR, Inc. All Rights Reserved.

OVR::DeviceInfo クラスリファレンス

デバイスおよびそれで出来ることを表し、GetDeviceInfo 呼び出しをすることで取得できる More...
#include <OVR_Device.h>
OVR::DeviceInfo の継承ダイアグラムは:

詳細な説明

デバイスおよびそれで出来ることを表し、GetDeviceInfo 呼び出しをすることで取得できる。
このベースクラスはデバイス依存の機能のみ含む。ユーザは詳細なデバイス情報の取得には HMDInfo または SensorInfo を通常使用します。

パブリック型

enum  
名前の最大の長さを表す値

パブリック メンバー関数

DeviceInfo ()
デフォルト コンストラクタ

パブリック属性

const DeviceType InfoClassType
希望する DeviceInfo に対するデバイスの種類 More...
DeviceType Type
表すデバイスの種類 More...
char ProductName [MaxNameLength]
プロダクト名の文字列:"Oculus Rift DK1"、等
char Manufacturer [MaxNameLength]
製造元[ 名称の最大の長さ]
unsigned Version
バージョン

メンバー データ ドキュメンテーション


const DeviceType OVR::DeviceInfo::InfoClassType
希望する DeviceInfo に対するデバイスの種類
これはHMDInfo 構造体に対して Device_HMD がセットされ、Device_None がセットされる場合があるため、実際のデバイスの種類と異なる場合があることに留意して下さい

DeviceType OVR::DeviceInfo::Type
表すデバイスの種類
InfoClassType != Device_None の時 InfoClassType と同じである必要があります

このクラスのドキュメンテーションは次のファイルから生成:

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿