VCIのチュートリアルを試してみる
VCIのチュートリアルを2019/6/28にやったときの記事 チュートリアルで完成するもの
https://gyazo.com/30d050c1608033258128a5154a0ca85b
やってわかったこと
スクリプトのデバッグはバーチャルキャスト上でできる。バーチャルキャストの再起動は不要
VCIのアイテムを作る流れ
1. モデリング(省略。今回はキューブ)
2. Unity上でVCIの設定をする
コライダーや必要なスクリプト(VCI Objectスクリプト)、シェーダの設定をする
3. THE SEED ONLINEにアップする
4. バーチャルキャストでアップしたアイテムを使う
5. 4をすると生成されるディレクトリにluaスクリプトを書いていく。デバッグはそのままバーチャルキャスト上でできる
6. 5で作成したスクリプトと共に2で作成したVCIのアイテムをTSOにアップロードする
環境
Unity 2018.4.2f1
Virtual Cast
Unity 2018.4.2f1をインストール
※2019年6月現在、2018系なら問題ありまあせん。2018系の最終バージョンを選択してください。
余談:Unity Hub 2.0.2でインストールしたらインストールアニメーションが1つしかインストールしていないのに2つになったりしていた。再起動で直ったのでおそらく表示だけの問題 2019年6月25日時点での最新版のUnityPackageをダウンロード
Unityを立ち上げてログイン
新規プロジェクトを作成
API compatibilityを.NET Standard 2.0から.NET 4.xに変更
https://gyazo.com/f3f32a51abbd8f7077cb122fc723904f
マニュアルの誤植?
ランタイムを.NET 4.0に設定と書いてある箇所ではAPI compatibility levelの画像になっている。一方、インポート時にエラーが出る際にはランタイムを変更するとある。最初は文章が間違っていてランタイムではなくAPI compatibilityのこと?基素.icon
読み込み成功(してシーンをVCI_sampleとして保存したあと)
VCIを書き出した後も、セットアップに使ったSceneが必要になりますので、必ず保存してください。
https://gyazo.com/a35eb144c3ee3d9df3fcacb17240b9f9
ここまでで開発環境のセットアップは終了。
rootのgame objectを作成し、VCI Objectスクリプトをアタッチする
この下に実際に利用したいオブジェクトをはやしていく
VCI ObjectスクリプトのInformationに作者情報をのせる
VCI Objectで設定するInformationとは
作者名や、アイコンや、ライセンス情報などを管理するためのオプションです。
各設定項目の詳細については VCIコンポーネントの詳細 を確認してください。
「VCIコンポーネントの詳細」にはInformationの記載なし
SubItemを作成する(0.25mのcube)
https://gyazo.com/17b43352ccd9f9dbc2c1a47f06649b8b
VCI Sub Itemスクリプトをアタッチする
Grabbableかどうかセットできる
チュートリアルだとColliderを設定する記述がないが、デフォルトでBox Colliderがついている
実際にためしてみたところ、つかめた
アイテムには重力がかからないので、等速直線運動をする
TODO 追記
やってみて気づいたこと基素.icon
rootのscaleはSubItemのスケールに掛けられるっぽい
rootのscale.xが2でSubItemのscale.xが0.5ならscaleは1になりそう
VCIに設定するMaterialを作成する
手順通りに実施
THE SEED ONLINEにアップしたVCIのアイテムはVirtualCastで使えるのでアカウントをとっておく
THE SEEDにVCIを アップロードする
https://gyazo.com/28d4bb97084e0d6db6dea362e55f19dd
「アイテムを見る」をクリックすると表示される
VirtualCastとTHE SEED ONLINEを連携させる
もともと連携していた場合、連携を解除して再連携するまでアイテムが出現しなかった
再連携後
https://gyazo.com/b0f4be1f0d69b4c6b0757e5f18912ebc
アップしたアイテムがあることがわかる
実際にバーチャルキャストを使うと、アイテム欄に自作アイテムが登場する
https://gyazo.com/30d050c1608033258128a5154a0ca85b
アイテムを使った際にアイテムのディレクトリが生成される。その中のluaを編集することでVCIスクリプトの挙動を編集できる
C:/Users/__USER_NAME__/AppData/LocalLow/infiniteloop Co,Ltd/VirtualCast
template.luaをmain.luaにする
code:config.json
{
"niconico":
{
},
"embedded_script": {
# スタジオ内に入室した状態でlocalhost:8080にアクセスすることでVCIアイテムのデバッグ情報を見ることができる
"websocket_console_port": 8080,
# VR内にコンソール画面(デバッグ情報)を表示します
"vr_debug": true
}
}
この状態でバーチャルキャストを起動すると、コンソールが出現する。自分だけに見えるらしい
https://gyazo.com/fa9db6edb85e81f1a080d3eca9d20506
アイテムを出現するごとに、そのアイテムの出力うのためのウィンドウが増える
バーチャルキャスト上でVCIアイテムを出すと、対象のVCIフォルダが自動生成されます。
例えばVCIsampleというアイテム名であれば、VCIsample というフォルダが作成されます。
トラブル:ディレクトリが作成されない
[vci:updatelog:1.6.2a VirtualCast]からデフォルトでは作成されなくなったので、Unity側で設定変更が必要 バーチャルキャストに入出した状態で、PCブラウザで localhost:8080 でデバッグ出力が見られる
code:_
HTTP/1.0 500 INTERNAL ERROR
System.NullReferenceException: Object reference not set to an instance of an object.
at ReactiveConsole.FileMounter.Solve (System.IO.Stream s, ReactiveConsole.HttpSession session, ReactiveConsole.HttpRequest request) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.DispatchSolver.Solve (System.IO.Stream s, ReactiveConsole.HttpSession session, ReactiveConsole.HttpRequest request) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.HttpSession.Request (ReactiveConsole.HttpRequest request) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.HttpSession.ParseHeader (System.ArraySegment`1T bytes) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.HttpSession.PushBytes (System.ArraySegment`1T bytes) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.HttpSession.<Start>b__20_0 (System.ArraySegment`1T x) 0x00000 in <00000000000000000000000000000000>:0 at System.Action`1T.Invoke (T obj) 0x00000 in <00000000000000000000000000000000>:0 at UniRx.Observer+Subscribe`1T.OnNext (T value) 0x00000 in <00000000000000000000000000000000>:0 at UniRx.Operators.CreateObservable`1+CreateT.OnNext (T value) 0x00000 in <00000000000000000000000000000000>:0 at ReactiveConsole.TcpReadObservable+<>c__DisplayClass0_0.<BeginRead>b__0 (System.IAsyncResult ar) 0x00000 in <00000000000000000000000000000000>:0 at System.Threading.ThreadPoolWorkQueue.Dispatch () 0x00000 in <00000000000000000000000000000000>:0 他のアイテムでディレクトリが作成されるのかたしかめる
できた
できない
ディレクトリができないとスクリプトがあてられない。仕方ないので、とりあえず犬にスクリプトをあててみる
https://gyazo.com/fcd1d9b2fc61736730ef623640bec24e
動く