まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

バーチャルキャストに3Dオブジェクトを持ち込んで、つかんだりする

バーチャルキャストに3Dオブジェクトを持ち込んで、小道具として使用する方法です。
「The Seed Online」にアップロードすることで簡単にバーチャルキャストで使用することができるのですが、アイテムを登録するだけではつかんだり移動させたりができませんでした。
seed.online

小道具をつかむ・移動させる・拡大縮小するためには、「VCI」として書き出さないといけないようです。
今回は小道具を持ち込み、バーチャルキャスト内でつかんだりして使用できるようにします。
急ぎで自分メモしたので、図なしの箇条書きで見にくくてすみません。

UnityはMacでも動きますが、VCIの開発環境がWindowsのみのため、Windowsマシンで行います。

記事を作成するにあたり、下記を参考にさせて頂きました。ありがとうございます。
(下記3つ、バージョンアップにより微妙に変わっているところがあります。この記事は2019年3/21時点の最新バージョンで行ったものです)
また下記のサンプルでは立方体を作ってアップロードしていますが、この記事はすでに作成済みの3Dモデルをアップロードしています(.glbファイル推奨ですが、FBXもできました。おそらく書き出しのときに変換しているかと)。
virtualcast.jp
https://niconare.nicovideo.jp/watch/kn4137
https://niconare.nicovideo.jp/watch/kn4199

こんな感じで某激レアさんのフリップボード?(司会のアナウンサーさんがホワイトボードに貼り付けてるアレ)を作ってみました。サイズ的にもちょうどいい感じ。
f:id:prince9:20190321064856j:plain

ちなみに背景をアニメーションさせる場合はこちらです。
virtualcast.jp


UnityでVCIを書く環境を整える(初回のみ)

1.最新版のUnity(ベータ版ではない方)をダウンロード&インストールする
2.Unityを開いて新規プロジェクトを作成する。このときプロジェクト名は英語で「VCI_Test1」など分かりやすい名前をつける。
「Enable Unity Analytics」は一応ONにしておく
3.「Edit」メニュー→「Project Settings」を選択し、左側の「Player」をクリック。次に右側の「Other Settings」をクリック
4.「Configuration」と書かれた太字の項目を探し、「Scripting Runtime Version」の項目を「.NET 4.x Equivalent」にする。
変更した場合は「Restart」というボタンが出てくるので、それを押してUnityを再起動する
5.2.で作ったUnityプロジェクトを開いた状態で、下記からUniVCIのUnityPackage最新版をダウンロードする
github.com

6.ダウンロードしたUnityPackageを「Assets」にドラッグ&ドロップし、「Import」ボタンを押す

UnityでVCIを書く環境を整える(2回目以降はここから下を実行)

1.Unityを開いて新規プロジェクトを作成する。このときプロジェクト名は英語で分かりやすい名前をつける。
「Enable Unity Analytics」は一応ONにしておく
2.下記からUniVCIのUnityPackage最新版をダウンロードする
github.com

3.ダウンロードしたUnityPackageを「Assets」にドラッグ&ドロップし、「Import」ボタンを押す

サンプルを作成する

公式でも発表があったように、「root」の中に操作したいオブジェクトを複数突っ込む形です。また操作したいオブジェクトの下に操作したいオブジェクトを置くことはできません。

1.「Hierarchy」→「Create」をクリックし、「CreateEmpty」を選択する
2.空の「GameObject」ができているので、「GameObject」をクリックして「root」に名前を変更する
3.「root」がクリックされている状態で、右側の「Inspector」を見て、「Transform」→「Position」「Rotation」が(0,0,0) 、「Scale」が(1,1,1)になっているか確認する
4.そのまま「Add Component」をクリックし、検索窓に「VCI」と入力して「VCIObject」をクリックする
5.「VCIObject(Script)」が追加されていることを確認し、「Information」を下記のように入力する。ここはライセンスなどを入力するところで、VRMでいうアバター名などの設定項目に該当する
・「Title」→ 英語名で
・「Version→ 「1」
・「Autho」→ 制作者の名前を英語名で
・「Description」→空欄でもOK、アイテムの説明
6.「Assets」に「.glb」または「.fbx」の拡張子がついた3Dモデルをドラッグ&ドロップして読み込む(「.glb」ファイルはメタセコ等の3Dアプリで書き出し可能)
7.3Dモデルのファイル名のついた青い立方体を「Hierarchy」にドラッグ&ドロップする
8.人型の3Dモデルを読み込んでおき、7.のオブジェクトのサイズを調整する
9.サイズ調整が終わったら、7.のオブジェクトを「Hierarchy」の「root」にドラッグ&ドロップして、rootの子にする

つかめるようにするか・浮くようにするか設定する

1「root」にドラッグ&ドロップしたオブジェクトをクリックし、右側の「Inspector」の「Add Component」をクリックする
2.検索窓に「VCI」と入力して「VCISubItem」をクリックする
3.「VCI Sub Item(Script)」がInspectorに出ていることを確認し、「Grabbable」にチェックを入れる
「Grabbable」にチェックを入れて、後述のColliderを設定することで掴めるようになります
4.大きさを変えたい場合は「Scalable」と「UniformScaling」にチェックを入れる。
UniformScalingは同じ比率で拡大縮小させる場合にチェックを入れる
5.「Rigidbody」の「Use Gravity」のチェックを外す。「Use Gravity」のチェックを外す(重力を無視する)+「Is Kinematic」にチェックを入れないと、離したときに落下していくので注意
6.空中に留まっていて欲しいので、「Is Kinematic」にチェックを入れる
7.そのまま「Add Component」をクリックし、検索窓に「Box Collider」と入力して「Box Collider」をクリックする
8.オブジェクトの大きさに合うように「Center」「Size」の値を調整する。「X」の文字にマウスカーソルを合わせて左右に動かすと、画面を見ながら数値を変化させることができる。
もしくは「Edit Collider」ボタンをクリックして画面上で緑の■を動かすと、画面を見ながら大きさを変更することもできる


シェーダを設定する

1.「Assets」→「読み込んだ3Dオブジェクト名.Materials」フォルダを探し、マテリアルをクリックする
2.その状態で「Inspector」→「Shader」→「Standard」をクリックする
3.シェーダを「UniGLTF」→「UniUnlit」に変更する(VRM→MToonもOK)
※影をつけない場合は「UniUnlit」、影をつける場合は「StandardVColor」にする。アニメっぽくする場合は「MToon」に


書き出す

1.「Hierarchy」の「root」をクリックし、「VCI」メニュー→「UniVCI-バージョン」→「Export VCI」を選択する
2.ウィンドウが開くので、「新しいフォルダー」をクリックし、「Sample」と名前をつける
3.「Sample」フォルダをダブルクリックし、英語でファイル名をつけて「保存」を押す



The Seed Onlineにアップロードする

1.Unityを終了し、「The Seed Online」にアクセスする
seed.online

2.アカウント登録後、「アップロード」ボタンを押す。その後「利用規約に同意する」にチェックを入れる
3.「投稿するアイテムタイプ」を「小道具(VCI・GLB)」に変更し、立方体アイコンをクリックする
4.先ほど作ったUnityのプロジェクトフォルダを探し、「Assets」→「Sample」→「.vci」(「書き出す」3.で保存した.vciファイル)を探してクリック、「開く」を押す
5.「アップロードされました」との表示が出たら、「アイテムを見る」をクリックする
6.立方体が表示されていることを確認し、「アイコンを撮影」のボタンを押す。そうするとアイコン画像が登録される
7.「アイテム名」を変更する
8.下の方の「利用規約に同意する」にチェックを入れる
9. バーチャルキャストとThe Seed Onlineを連携した上でバーチャルキャストに入ると、アイテムのところに出てくるので使えるようになる