凛(kagring)のUE4とUnityとQt勉強中ブログ

2016 年から UE4 を触り始めました。勉強したもののメモ用のブログです。C++ での Qt、Unity も少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

Oculus で OnGUI を扱う

Oculus と通常のモードを切り替えて遊べるようなものを考えていて、
PC 専用で考えているので多少の重さは気にしないので OnGUI を使って 2D 関係を描画していました。

これが Oculus になるとどうもうまくいく方法が見当たらないので調べてみました。
結果、自分では見つけられなかったのですが、VRGUI というものを教えていただきました。

・Unity GUI Package + Example
https://developer.oculusvr.com/forums/viewtopic.php?f=37&t=4944
※ログインが必要です

中ぐらいに「VRGUI.zip」というリンクがあり、パッケージを落とすことができます。

これの使い方は簡単で、

// クラスを継承
public class ClassName : VRGUI {


こんな感じで「VRGUI」クラスを継承します。
「VRGUI」は「MonoBehaviour」を継承しているのであまり気にする必要はありません。

継承したものを作成したら「OnGUI」の代わりに
「OnVRGUI」という関数を作成します。この関数がないとエラーになります。
この「OnVRGUI」の中身は「OnGUI」と同じものでOKです。

// Oculus GUI 処理
public override void OnVRGUI()
{
// 描画
GUI.DrawTexture( new Rect(0,0,256,256),texture);
}


これで Oculus を使ったときにもちゃんと表示されるようになります。
こんな感じですね。
VRGUI000

注意点としては「OVRCameraController」をシーンに配置しないといけないのと
そのカメラの位置が反映されるので気をつけてください(多分初期状態だとアップになりすぎている)

さて、これで Oculus を使ったときにはちゃんと表示できたのですが
普通に遊ぶときは普通に OnGUI で表示したいところです。

クラスは継承しているのでそこをうまく制御すれば切り替えることができます。
ということでこんな感じに。

// Oculus GUI 処理
public override void OnVRGUI()
{
// 描画を実行
this.RenderGUI();
}

// GUI 処理
public new void OnGUI()
{
// オキュラスの場合
if(IsOculus()){

// ベースを呼ぶ
base.OnGUI();
}
// Oculus 以外
else{

// 描画を実行
this.RenderGUI();
}
}

// 描画関数(1クッション置くため用)
private void RenderGUI()
{
// 描画
GUI.DrawTexture( new Rect(0,0,256,256),texture);
}



と、こんな感じに書くことで通常と Oculus 描画を切り替えることができます。
C# の記述方法が間違っていたらすみません…。

判定部分をいつでも切り替えられるようにしておけばこんな感じになります。
VRGUI001 VRGUI000

一応うまく行ったのですが、ちょっと歪んだ平面みたいになっているのが気になるのですよね…。
色々調べてみようかと思います。

ちなみにこれマウスカーソルも Oculus に対応してるのは便利ですね。
マウスオペレーションができるのではないかと。
スポンサーサイト

| Unity | 23:16 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/55-bd88a3a2

TRACKBACK

PREV | PAGE-SELECT | NEXT