2014年10月28日

Unity Freeに対応したOculus SDK 0.4.3を試す

Oculus VR SDK 0.4 Version 0.4.3 Beta
https://developer.oculusvr.com/?action=hist&ver=21
> Unity 4.5.2 and 4.5.5 are supported; 4.5.3 and 4.5.4 are not. Also added support for Unity Free in Unity 4.5.5 and up.
期間限定Pro Licenseを借りているので、いったん返却してFreeに戻します。

Unity 4.xライセンスの管理 / Managing your Unity 4.x license
http://docs-jp.unity3d.com/Documentation/Manual/ManagingyourUnity4xLicense.html
Help -> Manage License... -> Return License で初期状態に戻ります。

ランタイムはまだ0.4.3に上げずに0.4.2の方がいいらしい...?

上記のtweetに続く野生の男さんとザバイオーネさんの会話を見ても安定板が見つかるまでは人柱雰囲気がプンプンします。まぁそんなもんでしょう。

以前のエントリでUnity Proで試したこれが、Free版で問題なくイケるかを試します。

【Oculus Rift DK2】Unity Proでオキュラスに嫁を召喚するマニュアル【MMD】
http://greety.sakura.ne.jp/redo/2014/10/OculusDeMMD.html


<環境>
Unity(4.5.5)
http://japan.unity3d.com/unity/download/
Oculus Rift SDK(Version 0.4.3 Beta、DK2本体のFirmware ver.は2.12。)
https://developer.oculusvr.com/?action=hist&ver=21
Stereoarts:MMD4Mecanim(MMD4Mecanim_Beta_20141020.zip)
http://stereoarts.jp/
モデル:Appearance Miku あぴミク
http://piapro.jp/t/KPU3
楽曲:サイバーサンダーサイダー
http://piapro.jp/t/_Anb
モーション:【MMD-DMC4】サイバーサンダーサイダー【モーション配布】
http://www.nicovideo.jp/watch/sm19635968

著作権等は各製作元に帰属します。ピアプロライセンスについてはこちらを参照ください。
http://piapro.jp/license/pcl/summary

<手順メモ>
・新規Projectを作成、名前はFree043に。
・OculusUnityIntegration.unitypackageをダブルクリック、ProjectにImport。
・MMD4Mecanim.unitypackageをダブルクリック、ProjectにImport。
・あぴミクさん、サイバーサンダーサイダー楽曲、サイバーサンダーサイダーモーションをAssets配下にフォルダ毎D&D。
・Appearance Miku/Appearance Miku.MMD4Mecanimを選択、Readme.txtを確認後、利用規約とPCLに同意。
・Advanced ModeのチェックをON、Vertex Scaleを12に増加、VMDにサイバーサンダーサイダー(さっちゃそ).vmdをセットしてApply->Process。
・ProjectタブからCreate->Animator Controllerを選択、apmiku等適当な名前に設定、ダブルクリックでAnimatorウィンドウをopen。
・生成されたAppearance Mikuモデル配下のサイバーサンダーサイダー(さっちゃそ).vmdをAnimatorウィンドウにD&Dして保存。
・Ctrl+sするとシーン名を聞かれるのでMainと入力してEnter。
・Cubeを0,-0.5,0でScale100,1,100にして床っぽく配置、Drectional Lightをななめ上に配置、あぴミクさんを配置してRotationを0,180,0にしてこちらを向かせます。最初から配置されているMain Cameraはちょっと遠いのでzを調整して近づけます。
・Hierachy上に配置したAppearance Mikuに先ほど生成したAnimator ConrollerをD&Dで適用。
・Hierachy上に配置したAppearance Mikuを選択してMMD4Mecanim ComponentのPhysicsタブで物理演算を有効に、Animタブで同期用音楽をセットします。wave曲の3D Soundチェックは外してApplyを選択。
・ここで再生してモデル・モーション変換とAudio適用が動作していることを確認。

・Main Cameraをおもむろに削除、代わりにAssetsからOVR/Prefabs/OVRPlayerControllerをHierarchy上に配置します。

ovr043.png

・OVRPlayerControllerの構造が変わってますね...。Use Player EyeHeightドコー?ひとまずえいやハックして、XBOX360コントローラで上下左右カメラが自由に動けるようにします。

i) Gravity Modifierを0にして重力をなくします。
ii) OVRPlayerController.cs UpdateMovement()内でisGroundまわりをちょっとコメントアウトして空中でもカメラが操作できるようにします。

    // No positional movement if we are in the air
// if (!Controller.isGrounded)
// MoveScale = 0.0f;

iii) GamePad Buttonの定義まわりが変わっていることに気を付けながら、L1/R1で高さが動く様にします。Update()後ろの方で、y方向のmoveDirectionを強制的に書き換えます。

    // L1/R2 Eye Height
    if(OVRGamepadController.GPC_GetButton(OVRGamepadController.Button.L1) == true)
    {
        moveDirection.y = -0.01f;
    }
    if(OVRGamepadController.GPC_GetButton(OVRGamepadController.Button.R1) == true)
    {
        moveDirection.y = +0.01f;
    }
    
    // Move contoller
    Controller.Move(moveDirection);

・適当にBuild Settingしてexeを生成、起動。
・DisMonでメインディスプレイを切り替えてもRiftじゃない方のディスプレイに出力される病が出たのでshift押し起動で回避。
・無事動作。75fpsで特におかしいところなし。めでたしめでたし。

free043.png

# 色収差が改善した気がして、起動時のCautionがすごい読みやすくなったなと感じたのですが、気のせいかもしれないので後で改めて確認しようと思います。

2014年10月22日

BowlRollの中の人によるMMDモデル他ゲームエンジン等への流用の話自分用まとめ

自分用まとめ

Unity、UE4等ゲームエンジン用のモデル配布に対する前提のお話
http://bowlroll.blog.jp/archives/14603237.html
Unity、UE4等ゲームエンジン用のモデル配布に対するBowlRollからの提言(利用させたくない場合)
http://bowlroll.blog.jp/archives/15147475.html
Unity、UE4等ゲームエンジン用のモデル配布に対するBowlRollからの提言(利用させてみたい場合)
http://bowlroll.blog.jp/archives/15375012.html
Unity、UE4等ゲームエンジン用のモデル配布に対するBowlRollからの提言(実際に利用させてみたい場合)
http://bowlroll.blog.jp/archives/15490204.html

MMDモデル他のゲームエンジン等への流用に関するBowlRollの中の人の話自分用まとめ
http://togetter.com/li/735522

どういう機会があれば話が進むのだろう?と思ったり、そもそも流用はムシが良い話なのかもしれないね、とも思ったり。でも惚れるとどうしようもない面がですね...。

2014年10月20日

Android 5.0 Lollipop概要 日本語訳

Android 5.0 Lollipop概要(new features)をえいやで日本語訳してみました。
http://greety.sakura.ne.jp/awiki/index.php?Android%205.0

概要が15節といつもよりちょっと少なめだなと感じたのですが、上述の概要に載ってなくて、Android 5.0 APIsの方だけに載ってる新機能が多く目についたので、以下にピックアップしておきます。

・If your app binds to a Service...
Context#bindServiceは明示的Intentのみ許容されるようになりました。暗黙のIntentはExceptionとなります。
・Directory selection
ドキュメントのツリー階層構造を扱ったり、create/reaname/deleteの様なファイル操作に対応した模様です。OPEN_DOCUMENT_TREE intentってのがあるらしいので、プリインアプリのUIが気になります。
・Android in the Workplace and in Education
「業務・教育現場でのAndroid」という章タイトルで、Managed provisioning, Device owner, Screen pinningという機能が追加されています。デバイス管理者がマルチユーザでの他のユーザにシステムアプリとしていくつかのアプリを強制的に有効にしたり、それをLauncherアイコンへのbadgeで見た目で分かるようにしたりできる模様です。エンタープライズ用途というやつですね。
・Render PDF as bitmap
PDFのレンダリングが来ました。iOSのそれはタイリングとか拡大縮小とか日本語の扱いとかかなり面倒なのですがサンプルソースコードであるPdfRendererBasic眺めるとざっくり丸まっている模様です。API IFとして表題の通りBitmapを返すので、recycleとかミスるとメモリ管理失敗して即死しそうな気がしますが。

2014年10月19日

#IMoNi会 で河原Oculus

imoni3.jpg

※よいこはマネしないでください

続きを読む "#IMoNi会 で河原Oculus"

2014年10月17日

日本Androidの会 VR部 #JAGVR 設立

日本Androidの会 VR部を設立してみました。
VRとかARとかなんたらRとか好きな人とか、流行りものとか2.5次元とかなんか面白そうなものが気になる人とか、お気軽に参加して一緒に遊んでもらえると喜びます。

MLはGoogle Groupで。
https://groups.google.com/forum/?hl=ja#!forum/jag-vr

ハッシュタグは #JAGVR で。

「VRで何かしよう」と思ったのはCardBoardやOculus Rift(DK2)が大変楽しいと感じたのですが、タオバイザーのクラウドファウンディングとかを見ててもコンテンツが足りないな、と思ったので。

「VR部」を作ろうと思ったのはきんねこさんが言ってて面白そうと思ったので。
FakeRiftとtaovisorをやってみてわかったこと
http://www.slideshare.net/kinneko/fakerifttaovisor

「部長」になってしまったのはきんねこさんが決めたので。

副部長はきんねこ(@kinneko)さんとがく(@tao_gaku)さんです。

さしあたってCardBoard/タオバイザー勉強会(ハッカソン)と、#ABC2014W 出展(展示+ハンズオンあたり)かな、と思っています。発表枠は運よくいただけてもとっちらかりそうですよねぇ...僕は別にコンテンツを何も持っていませんし(汗)まぁ2か月ぐらいゆっくり...いそいで考えます。

2014年10月 9日

「Unityゲーム開発 オンライン3Dアクションゲームの作り方」本で作ったゲームをOculus Rift対応にする

unidra2.png
@izmさんの「Unity本いっぱい出てるので、お勧め本を難易度別に並べてみる」を参考に、「新しい・Oculus Rift対応できそうな3Dであること・C#」というのを条件に、表題の「Unityゲーム開発 オンライン3Dアクションゲームの作り方」という本を買いました。

本に沿って一通り3Dアクションゲームを作ってみて、それにOculus Riftのカメラまわりをえいやと足してみた話になります。

【本書について】
SB Creativeの本書のサポートページに正誤表があるので最初に見ておいた方がいいと思います。
・3400円+税ってなってますが2800円+税でした。セクシー衣装データがちょっと気になります。
・ダウンロードデータの中に「各章の最後の状態」のUnity Project一式があるので、途中でつまづいた際にも復旧可能です。親切。
・他の本やWeb上のコンテンツでUnityを触ったことがある人は最初の3章が不要な感じかもしれません。
・10章ぐらいまではさくさく行きますがその後はスクリプト入れ替え等で失敗するとプロジェクトが壊れてキャーという感じになります。ちなみにスクリプト更新についてはExplorerから上書きすればOKというのを覚えておいてください。そのままUnityにドラッグ&ドロップすると残念なことになります。

unidra3.png

【Oculus Rift DK2のカメラをくっつけてみた版】
とりあえずくっついた、というだけなのでいろいろ足りないのですが以下に置いておきます。
unidraocu_20141013.zip

・WASDかゲームパッド左スティックで移動できます。右クリックかButton2(XBOXコントローラだとBボタン)で殴ります。
・ゲームは突然始まって、死ぬか赤いドラゴンを倒すとクリアです。
・Oculus Riftに対応させる際にムリがあるだろうと思ったUnityGUI部をざっくりと省いているため、ネットワークには対応していません。

以下、Oculus Riftに対応時のメモ。

続きを読む "「Unityゲーム開発 オンライン3Dアクションゲームの作り方」本で作ったゲームをOculus Rift対応にする"

2014年10月 6日

【Oculus Rift】OVRMainMenuを使ってGamePadでSceneを切り替える

menu1.png

Oculus Riftでお試しシーンを複数作成している際に、プロジェクトが分かれているとバイナリ(exe)切り替えが面倒なのですが、OVRPlayerControllerに含まれているOVRMainMenuを使うと(見た目はちょっと寂しいですが)、簡単にScene切り替えやLevel Reloadが実現できます。

OculusUnityIntegrationGuideの4.3.9 OVRMainMenuにちゃんと下記の様に書いてあるんですがいまさら理解しました...。

4.3.9 OVRMainMenu
OVRMainMenu is used to control the loading of different scenes.

続きを読む "【Oculus Rift】OVRMainMenuを使ってGamePadでSceneを切り替える"

2014年10月 5日

デ部でOculus Rift+Unity+MMDの話をした

andeb16.png

第16回 デ部 !Androidで喋ってきましたので資料を置いときます。
Oculus Rift+Unity+MMD

MikuMikuDance文化を3DAR/VRコンテンツまで持っていくのは概ねはカンタンですよ、という話。

Oculus RiftはDK2通販($350+送料$75)から気軽に始められる現実逃避です日々の現実から逃げたい人に心からオススメ!

2014年10月 3日

DK2やMMD4Mecanimでつまづいた際に見るメモ

hifi.png

備忘録。

○OVRPlayerControllerを配置してもEyeHightが5/6キーで上下しない

OVRCameraControllerの「User Player Eye Height」を外す。ユーザ設定の身長をベースにするか無視するかという設定の模様。

○OVRPlayerControllerを足したけどWASD移動が効かない

OVRPlayerController.csのisGroundedという「地面に着いてたら」フラグがポイント。
以下の様に空中移動をゆるしてない部分を2行ぐらいコメントアウトする。

 
	// No positional movement if we are in the air
	//if (!Controller.isGrounded)	
	// 	MoveScale = 0.0f;

○JoyStickでEyeHightを上下したい

Button.L1とButton.L2は取得できているならばOVRPlayerController.csのUpdateMovement()あたりに以下のコードを追加する。

 
	// L1/R2 Eye Height
	if(OVRGamepadController.GPC_GetButton((int)OVRGamepadController.Button.L1) == true)
	{
		Vector3 neckPosition = Vector3.zero;;
		CameraController.GetNeckPosition(ref neckPosition);
		neckPosition.y -= 0.01f;
		CameraController.SetNeckPosition(neckPosition);			
	}
	if(OVRGamepadController.GPC_GetButton((int)OVRGamepadController.Button.R1) == true)
	{
		Vector3 neckPosition = Vector3.zero;;
		CameraController.GetNeckPosition(ref neckPosition);
		neckPosition.y += 0.01f;
		CameraController.SetNeckPosition(neckPosition);
	}

○Extendedで60fpsで動作してしまう(※2014.10.03詳細不明、未解決)

Extendedしか動かないOptimusなPCで、Unity 4.5.4f1+Oculus SDK 0.4.2な私の環境では以下の様な現象に。

・DrirectToRift.exeを起動する→60fpsになってしまう
・RiftをPrimary Monitorにする→60fpsになってしまう
・RiftをPrimary Monitorにした上に、元のディスプレイをオフにする(Dismon的には-1d -2pオプション)→75fpsになる
・Oculus SDKを0.4.2から0.4.1に変更→変わらず
・Unityを4.5.4から4.5.2にダウングレード→RiftをPrimary Monitorにすることで75fpsにできるようになった。

○Oculus Rift向けexeをフルスクリーンではなくWindowモードで起動したい

Shiftを押しながらexeをダブルクリックして起動。

○複数のSceneを簡単に切り替えたい

OVRMainMenuを使ってGamePadでSceneを切り替えるを参照。

○こっちを見つめてもらいたい

銀の弾丸、はじめました:Unityでキャラクターに見つめてもらうを参考にHead Look Controllerをセットアップする。

Cursor Hitの設定先は、OVRPlayerControllerやOVRCameraControllerではなくCameraLeft等、ちゃんと高さが変化するオブジェクトである必要があるので注意。(厳密にはCameraLeftとCameraRightの間である必要があるはず)

2014年10月 1日

【Oculus Rift DK2】Unity Proでオキュラスに嫁を召喚するマニュアル【MMD】

4-2.png

Unity Pro TrialライセンスがOculus Game Jam参加登録者に配布されていまして良い機会だということでUnity Proで、Oculus Rift DK2向けにMMDな嫁を召喚するための手順をまとめてみました。

MMD4Mecanimの分かりやすいマニュアルで概ね十分ではあるのですが、以前OVRAgentベースで書いたものより画面キャプチャを多めにしてみました。現時点ではUnity Proでしか正式にOculus Rift SDKには対応していないのですが、Oculus ConnectにてUnity Freeに対応することが発表されました(ひと月程度と言われています)。リリースされた後に再度Free版で更新しようと思っています。

以下、本編です。

続きを読む "【Oculus Rift DK2】Unity Proでオキュラスに嫁を召喚するマニュアル【MMD】"

Archives(記事一覧はこちら)