Unity

Unityでbuildして作られたファイルのコピー作業における問題点

Unityでbuildした後で、動作テストをする際には、開発環境で実施する他、インストール先で動作しないと困るので、別途必要なファイルだけ取り出して、別のPC上で動作確認を実施している。

今回 #VRCHBPのブラウザ側にファイルオープン機能を付けて、動作確認をしようとしたが、どうしても、開発環境では動作するが、別PCでは動作しないことが判明。何日も悩んでしまったが、開発環境ならば動くということで、開発環境のフォルダごと全てのファイルをコピーしたら動作することが判明した。つまりファイルのコピー状態がおかしい。そこで、WinMergeを使って確認したところ、同じファイル名でタイムスタンプも同じだが、中身が異なるものがbuildされていることが判明。そのファイルをExplorerでコピーしたら、問題無く動作する。

つまりコピー作業に問題があった。実は、フォルダのコピーにはExplorerでのコピーでは無くて、batファイルを起動すれば済むようxcopyコマンドを用いていた。その際、時間節約のため、同じファイル名ならばタイムスタンプが新しい場合だけコピー実施していたが、それが完全に裏目に出ていた。現在は、タイムスタンプに関係なく全て上書きコピーするように引数を調整した。これはUnityあるあるだろうなとは思う。

ちなみにUnityでbuildした際出来る実行ファイルは、必ずタイムスタンプが古い時間のファイルが作られるが、ファイル単位で、copyコマンドで処理していたので問題が発生していなかった。build後コピーするとタイムスタンプは古いタイムスタンプではなく、コピーした時間になるので、buildの違いが判るという効果もある。

広告
Unity · VRソフト

ローカル動画ファイル再生

#VRCHBPにて、ローカルの動画ファイル再生を実装してみました。使用してるUnity Assetは、Youtubeのストリーミング再生のみ対応しているAssetだったけれども、内部で使っているのは、UnityのVideoPlayerなので、URLの代わりにファイル名を渡すようにして、VideoClipを指定すれば、再生出来ました。

ネットワークドライブ上のファイル再生も出来たので(\\PC名\共有名\apc.mp3のような形式)、世の中のVR Video Playerでも対応することはできるのだろうと思う。

UnityのVideoPlayerでのローカルファイル再生は、軽めの動画ファイルで無いと重くて再生品質がよろしくなく、またファイルによっては、90度映像の向きがずれていて、この対応も考える必要があることが判ってきました。

それからフォーマット(360/180, ou/sbs)を手動で切り替えるのは、かなり面倒であることも理解できました。機能動作確認だとしょっちゅうHMDを付けたり外したりになるので、このあたりも改良が必要であり、動画ファイルを選ぶのもVR空間内で閉じないと、いまひとつであることは理解出来ました。これらひとつずつ解決していく必要があるでしょう。

Unity · VRソフト

VR180対応続き 3

#VRCHBP で再生可能なVR動画を増やすために、VR360 Up/Down(Over Under), Side by Side対応と、VR180 none, Up/Down, Side by Side の対応を進めてきたが、ひとつのマテリアルで、パラメーターだけ変更してということは、うまくできなかったのは先日記載した通り。結局のところ、都合6個のマテリアルを用意して、XBox ControlerのViewボタンをクリックしたら、マテリアルを切り替えるよう変更した。


void Update () {

if (Input.GetButtonDown(“XB1View”)) {
video_mode++;
if (video_mode > 5) {
video_mode = 0;
}

this.GetComponent().sharedMaterial=_material[video_mode];
RenderSettings.skybox = _material[video_mode];
video_mode_change = true;
}
}

概ね動作している様子だが、YouTubeの動画では正しいフォーマットで無いものも多く分かりにくいので、ローカルファイル再生機能を用意しようと検討中。

Unity · VRソフト

Oculus HomeのRecentアプリ一覧に登録させない方法

#VRCHBPが、Oculus HomeのRecentアプリ一覧に登録されるようになり、それではうまく使えないので、Oculusのフォーラムに質問を投げていたところ、御回答頂いた。

残念ながら解決策は無いとのことだが、VR側単独で起動したことは判るので、Desktop側を自分で起動させて連動させる方向で、検討する予定。

Unity · VRソフト

VR180対応続き 2

Unity上で、マテリアルのSkybox/Panoramicのパラメータ(_ImageTypeや_Layout)を動的に変更して、VR360とVR180の切り替えを実現させようと試作してきたが、マテリアルの取得も問題なく、EnableKeywordの設定も入れて、値の変更を実施してもエラーにはならないのだが、どうにもSkybox/Panoramicの設定は変更されない。

ただ色を変えるなどとは異なり、描画中に変更できる代物ではないのかなと思い立ち、複数のマテリアルを用意して、それを切り替える方向で再検討中。うまくいけば、VR180対応だけでなく、2Dの描画もできるだろうと思う。

Unity · VRソフト

ZfBrowserの音を止める

Asset提供元に問い合わせしていたのだが、返信が来ていた。結論としては音を止める手段は無いので、EvalJs機能で、表示しているコンテンツに対して介入せよとの御神託。

UnityではScene全体で音を止めることは可能であるが、ZfBrowser自身は、Audio sourceは無いが勝手に音を出しているようで困ったなと思う。これでは同じSceneにBrowserとPlayerを同居出来ないので、Sceneを分けることになるが、UI上イマイチだなと思う。

Unity · VRソフト

VR180対応試作中

#VRCHBP が使用しているUnity Video Playerの映像出力方法を変更して、Skybox/Panoramicを使うことにして、VR360ではなくVR180の動画が再生出来るようと試作中。

Textureのサイズは本来は動画の解像度に合わせるべきなのだが、Youtubeの場合、環境や動画によってまちまちなので、そうならばRiftやFOVEのLCD解像度に近くても良いだろうと、2160×1080にしてみると、YoutubeのVR360では、空間内で細く縦に隙間が一か所空いてしまう。とりあえず1280×720にすると隙間なくなったが、1920×1080を後で試してみようと思う。

またVR180を再生すると、どうもおかしいので、左右の目をそれぞれつむって確認したところ、左右のレンズに表示されるものが全く異なることが判明した。スマートフォン向けにはSide by Side形式のものがほとんどだと考え、それがデコードできるよう試作したのだが、両眼用の映像になっていないものが多いことになる。案外きちんと作ってあるものは少ないのだなと再認識。スマートフォンで表示している場合、3D感が低い場合が多く、そんなものだという認識で居たが、どうやら実は映像の方もサボっていることになる。それではVRを楽しめないわけで、RiftなどのHMDで見ている人は非常に少ないのだなと思う。

それからVR180は上下が球型に歪んでいるのでコンテンツに依るのだろうが、Skyboxではダメなのかもと思う。なかなか奥が深い。

 

VRソフト

Mute設定とVolume設定値を覚えるようにする

#VRCHBP 更新中。VRコンテンツを再生する際、毎回MuteとVolumeの設定がデフォルトに戻る実装にVer1.01ではなっていたが、それでは使いにくいので調べていました。

Unityではゲームのハイスコアなどを記録するPlayerPrefsというクラスが存在し、変数の値を簡単に記録することができるので、Mute/Volumeの設定を変えるたびに覚えるようにして、起動時にその値を読みだして設定するように修正しました。

[Unity][Unity3d]ゲームのスコア情報などを簡単に保存出来るPlayerPrefsクラス

YouTubeのコンテンツの場合、音が大きかったり小さかったりバラバラなので、音量制御は少しこだわった実装(Mute中でもVolume位置を変更できる)にしていますが、さらに使いやすくなったように思います。

さて次はVR180への対応と、Playlistへの対応。ブラウザをVR側に入れるのは現在保留中。