====== VCIの作成方法 ====== VCIの開発環境が整ったら、実際にVCIを作成してゆきます。 今回はテスト用のアイテムを作成しますが、作りたい物によって素材となるデータを用意する必要があります。 VCIで使用可能な素材は下記の通りとなります。 * 3Dデータ (.fbx .obj .glb 等) * 2Dデータ (.png .bmp 等) * [[https://docs.unity3d.com/ja/2018.1/Manual/Audio.html|オーディオ]] (.wav, .ogg, .mp3 等。.wavとして格納するのでサイズにご注意くださいvci0.27より[[https://github.com/virtual-cast/VCI/releases/|mp3に対応しました]]。mp3だけは、wavに展開されません。それ以外のフォーマットは依然として.wavに変換されてしまうため注意してください。) * [[https://docs.unity3d.com/ja/2018.1/Manual/AnimationSection.html|アニメーション]] (UnityEditorでの作成を推奨) * Luaスクリプト ===== サンプルの作成 ===== ※[[vci:unitypackage]]の[VCI_sample]Scene作成後からの手順になります。 それでは、実際にチュートリアルとして使用するサンプルのVCIを作成します。 ==== root Objectの作成 ==== {{vci:vci_tutorialitem_1.png?direct&400|}} 1.Hierarchyの中で右クリックを押してメニューを出します。 2.[CreateEmpty]で空のgameobjectを作ります。 3.名前が[GameObject]になってるので分かりやすい名前に変更します。\\  今回は[root]としました。\\ ※一応…transformのPosition,Rotationは(0,0,0) scaleは(1,1,1)に揃えておいてください。 ==== VCIObjectの設定 ==== {{vci:vci_vciobject.png?400|}} 1.Hierarchyの root を選択した状態で[Add Component]を押す。\\  [VCIObject]で検索して[VCIObject]を選択してInspectorに追加します。 2.チュートリアル用のVCIなので、下記のように入力してください。\\  [Title] > [VCIsample]\\  [Version] > [1]\\  [Author] > [test]\\  [Description] > [チュートリアル用]\\  ※その他項目はデフォルト設定でOK === VCIObjectで設定するInformationとは === 作者名や、アイコンや、ライセンス情報などを管理するためのオプションです。 各設定項目の詳細については [[vci:component:sdk:subitem|VCIコンポーネントの詳細]] を確認してください。 ==== SubItemの作成 ==== {{vci:vci_sample.png?direct&400|}} 1.Hierarchyの[root]を選択した状態で右クリックでメニューを出します。 2.[3D Object]>[cube] からcubeを作ります。 3.cubeの名前を** [Subitem1] **に変更してください。\\ ※今後のチュートリアルで重要になるので名前は必ず Subitem1 にしてください。 4.[Position]のYの値を[1]に変更してください。 5.[Scale]の値をすべて[0.25]に変更してください。 === Scaleの設定について ==== Unityのcubeはデフォルト設定は1㎥です。VRで見た時も現実の1㎥に基づいた表示になります。 Scaleを調節する際は実際にアバターと並べてVCIを作成すると感覚がつかみやすいです。 1㎥は大きすぎるので、このチュートリアルでは0.25㎥としました。 ==== VCISubItemの設定 ==== {{vci:vci_addsubitem.png?direct&400|}} 1.HierarchyのSubitem1を選択した状態で[add Component]を押す。\\  [VCISubItem]で検索して[VCISubItem]をInspectorに追加します。\\  この時、自動で[Rigidbody]も追加されます。 2.[VCISubItem]の[Grabbable]にチェックして有効にしてください。\\  アイテムをつかめるようになります。 3.[Rigidbody]の[Use Gravity]のチェックを外して無効にしてください。\\  重力の設定項目なので、SubItemに重力が働かなくなり宙に浮くようになります。\\  作りたいアイテムによって使い分けましょう。 === Colliderについて === つかめるようにするには[Rigidbody]と[Collider]の両方が必要です。 Colliderとは、当たり判定の機能を持ったComponentで、Rigidbodyは物理演算の機能を持ったComponentです。 Unityでは2つが組み合わさる事によって「物をつかむ」といった動作を実現しています。 使用できるColliderについては[[vci:component:unity_collider]]を参照してください。 ==== Materialの設定 ==== {{vci:vci_createfolder.png?400|}} 1.[Project]タブの[Assets]のフォルダ内で右クリックを押してメニューを出します。\\  [Create]>[Folder]を押すと[New Folder]が作成されます。\\  [Material]など、分かりやすい名前を付けてください。 2.[Assets]>[Material]のフォルダ内で右クリックを押してメニューを出します。\\  [Create]>[Material]を押すと[New Material]が作成されます。\\  [Subitem1]など分かりやすい名前を付けてください。\\  以上で、VCIに設定するMaterialができました。 {{vci:vci_tutorial_material.png?direct&400|}} 3.作成したMaterialを選択して[Shader]を変更します。\\  VCIの場合は[UniGLTF]または[VRM/MToon]の中から選択するようにしてください。\\  今回は[UniUnlit]を使用します。 | UniGLTF|| | StandardVColor | VRM VCI向けのStandardShaderです。陰影処理を行います。 | | UniUnlit | VRM VCI向けのUnlitShaderです。Unlitとは陰影の処理を行わないという意味です。 | {{vci:vci_tutorial_material_2.png?direct&400|}} 4.Inspectorから[Color]のカラーピッカーを変更すると、Materialの色を変更する事ができます。\\  試しに任意の色に変更してみましょう。チュートリアルでは青としました。\\  テクスチャを使用する場合は[Main Tex]から使用するテクスチャを割り当てます。 {{vci:vci_tutorial_material_3.png?direct&400|}} 5.Materialの適用はMaterialをSceneタブのオブジェクトへドラック&ドロップします。\\  Materialが適用されて色が変わればOKです。 以上が、基本的なVCIの作成手順になります。 ==== VCIをエクスポートする ==== VCIをファイルとしてエクスポートするには、メニューから行う方法と、インスペクタから行う方法があります。 どちらも出力結果は同じです。 **※VCIスクリプトのデバッグを行う場合 VCIObject の Script Enable Debugging にチェックを入れて有効にしてください。** === メニューからエクスポート === {{vci:vci_export.png?direct&400|}} 1.HierarchyのVCIのGameObjectを選択した状態にします。\\ 2.Unityのメニューバーから[VRM > UniVCI-x.x > Export VCI]を選択します。\\ 3.保存先を選択して、名前を付けて保存すればVCIの書き出しは完了です。 === VCIObjectのインスペクタからエクスポート === {{:vci:export_vci.png?400|}} 1.VCIObjectを選択した状態にします。\\ 2.VCIObjectのインスペクタ下部にある[Export VCI]ボタンを押してください。\\ 3.保存先を選択して、名前を付けて保存すればVCIの書き出しは完了です。 ===== ゲームオブジェクトの階層について ===== {{vci:sample:vcigameobject.png?direct&200|}} VCIのRoot(1番)となるゲームオブジェクトは1つだけ作ります。 その下の階層にSubItemを任意の数だけ追加してゆきます。 SubItemはRootの直下に置かれてる必要があります。 **※SubItemの下の階層にSubItemを配置する事はできません。** ※SubItemの下の階層にSubItemではないオブジェクトを追加する事は可能です。主に見た目のためのメッシュなど、スクリプトで制御する必要のないオブジェクトを配置します。 VCIはハリセンのような単一のオブジェクトで完結するものもあれば、トランプのような複数のオブジェクトで一体となるものもあります。 なので、VCI1個につき1個のオブジェクト(SubItem)という形式ではなく、VCI1個の中に対してオブジェクト(SubItem)を複数追加できるようになっています。(上限数はあります)