![見出し画像](https://assets.st-note.com/production/uploads/images/54832908/rectangle_large_type_2_4d3f09de625b4bde94954674b9f4ff9e.png?width=1200)
VRChat備忘録④ SDK3.0 物の出し入れ(手順編)
こんにちは、こむぎ* と申します。
VRChatの片隅を漂う無言勢の様な何かです。
今回は、SDK3.0での基本的な物の出し入れについて簡単にまとめたいと思います。
前回までの記事と順番逆じゃない?って感じですが、物の出し入れは他に有名な方のサイトなどが沢山有るので不要かと思ってたんです。
が、フレンドさんから、とりあえず同じサイト内でまとめておいた方が良いとの指示をいただいたので、一応書いておきたいと思います。
はじめに
今回は初めての人を想定して、一度触らないと説明の意味も入りにくい為
・最初に細かい解説抜きの手順のみ記載
・一度通してセッティングしてから簡単な解説
の順で書きたいと思います。
途中でうまくいかない場合は、記事最後のトラブルシューティングを見てください。
また、ほぼ全手順に画像を用意したため記事が大きくなったので、解説については別記事で分けて書きたいと思います。
アニメーション作成方法など、前回のParent Constraintの記事とやり方が違う部分が有りますが、今回は手順が少ない方法で書いています。
逆にかぶっている部分も多いですが、こちらの記事だけで完結するよう書いています。
この記事では、以下の前提で書いていきたいと思います。
SDK3.0でアバターのアップロードまでは出来る
Unityの基本的な操作(packageのインポートとか)などは出来る
手順1.アバターのセットアップ
まず、SDK3.0、DynamicBone、シェーダー、アバター本体などをインポートして、通常通りアップロード出来る所までセッティングする。
手順2.出し入れするものの用意
出し入れするものを用意します。今回は練習なので、ただのCubeを使います。
Hierarchyのアバターの上で右クリックして、3D Object > Cube をクリック。
適当にサイズを変えて、自分の視界に入る位置に置いておきましょう。
後で動作確認さえ出来ればいいので、適当でいいです。
Hierarchyでの階層も、そのままで大丈夫です。
Cubeでは無く自分で用意した物を使っても良いですが、今回は最初の手順説明では最低限の内容しか記載しない為、途中でトラブルが起きる可能性が有ります。その場合は記事後半のトラブルシューティングを見てください。
手順3.Animator Controllerの準備
Hierarchyでアバターを選択し、Inspector の VRC Avatar Descriptor > Playable Layers >FX を確認する。
上記画像の様に、ファイルが登録されていれば手順3は不要です。
「手順4.Cubeの出し入れのアニメーションの準備」に進んでください。
上記画像の左右どちらかの状態であればファイルの作成が必要です。
Projectウィンドウで、Assets > VRCSDK > Examples3 > Animation > Controllers を開き、vrc_AvatarV3HandsLayer というファイルを選択し、
Ctrl +D を押してファイルを複製する。
複製された vrc_AvatarV3HandsLayer 1 というファイルの名前を、自分が分かりやすい名前に変える。今回は "Anwar_Hands"
ファイル名を変更するにはキーボードのF2か、ファイル選択後シングルクリック、もしくは右クリックからRenameです。
名前を変えたファイルを、適当な場所に移動させる。
自分が分かればどこでも良いです。今回はアバターのフォルダ配下のanimeフォルダに移動しました。
Hierarchyでアバターを選択、VRC Avatar Descriptor の Playable Layers が Customize ボタンになっていればクリック(①)、②の状態なら FX のDefault Non-Transform ボタンをクリック。
先ほど複製して名前を変えたファイル (今回は "Anwar_Hands")を、FXの欄にドラッグ&ドロップ。
FXの欄にファイルが登録されればOKです。
手順4.Cubeの出し入れのアニメーションの準備1(録画準備まで)
Projectウィンドウで、適当なフォルダの空白部分で右クリック > Create > Animation で空のアニメーションファイルを作る。
作ったファイルの名前を自分が分かる名前に変える。今回は "Cube_OFF" 。
Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。
Animatorウィンドウが開いたら、Layersタブの右上の + をクリック。
新しく作られたLayerの名前を、自分が分かる名前に変える。今回は "Cube"
今のLayer右側の歯車ボタンを押して、出てきたメニューの Weight を 1 にする。
作ったLayer(今回は "Cube")を選択した状態で、右側の方眼紙みたいなエリアの空白部分で右クリック > Create State > Empty をクリック。
New State が作成され、Entryから矢印がつながっていればOK。
作ったState(オレンジ色のボックス)をクリック。
Inspectorの内容を、一番上の名前の欄を自分が分かる好きな名前に変える。 今回は "Cube OFF" 。
下の方に有る Write Defaults のチェックを外す。
手順4の先頭で作成した空のアニメーションファイル(今回は "Cube_OFF")を、先ほど用意した Cube OFF(オレンジ色のボックス)の Motion の欄にドラッグ&ドロップ。
こうなってればOK。
次に、アバターのInspectorを開き、FXの欄に登録されているファイルを、Animator > Controllor にもドラッグ&ドロップ。
こうなればOK。
Hierarchyでアバターを選択し、Animationウィンドウを開く。
Animationウィンドウは開いていないことも有るので、なければCtrl +6。
Animationウィンドウの左上の▲▼が出ている部分をクリック。
出てきたファイル一覧から、先ほど自分が作った空のアニメーションファイルを選択。今回は "Cube_OFF"
こうなればOK。
手順5.Cubeの出し入れのアニメーションの準備2(録画、複製)
自分が作ったアニメーションファイルが選択された状態で、赤丸の録画ボタンをクリック。
録画ボタンの周りが赤くなれば録画中。
HierarchyでCubeを選択、Inspector左上のチェックボックスをクリックしてチェックを外す。
チェックが外れて、チェックボックスが赤くなっている事を確認。
また、アニメーションウィンドウの所に、画像のような項目が表示され、その右のチェックボックスが外れた状態である事を確認。
もう一度録画ボタンを押して録画終了。
チェックボックスの所と、録画ボタンの所が赤くなくなれば録画終了済み。
これでCubeを消すアニメーションは完成です。
次に、Projectウィンドウで、さっき作った Cube_OFF のアニメーションファイルを選択。
Ctrl +D を押してファイルを複製。
複製された Cube_OFF 1 のファイルの、ファイル名をONにすると分かるよう好きな名前に変更。今回は "Cube_ON"
今複製した Cube_ON のファイルをクリックして、青く選択した状態で、Animationウィンドウを開く。(タブを選ぶか選択状態でCtrl +6)
Animationウィンドウの左上で自分が選択したファイルの名前が出ている事を確認の上、Game Object.Is.Active の右にある数値を 0 → 1 に変更。
適当に欄外をクリックして、Cube_ON のアニメーション作成完了。
Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。再度Animator を開く。
先程作った Cube という Layer を選択し、空白部分で右クリック > Create State > Empty で新しい State を作成する。
新しく灰色のNew State が作成される。(Entry から繋がっていないState は灰色)
Cube_OFF の時と同じ要領で、今作成したNew State(灰色のボックス)をクリックし、上部の名前を Cube ON に変更(①)
先ほど複製したCube_ON というアニメーションを Motion の欄にドラッグ&ドロップ(②)
Write Default のチェックを外す(③)
これでONにするアニメーションの作成、登録は完了。
アバターを選択し、Animator > Controller 欄のファイル名をクリック。
キーボードのDeleteキーを押してファイルの登録を削除する。
※間違えてFXの欄を削除しないこと。
Controller の欄が None になればOK。
手順6.Expressions Menu、Expression Parameters の準備
アバターを選択、VRC Avatar Descriptor > Expressions > Menu & Parameters を確認。
上記画像の様に、両方ともファイルが登録されていれば手順6は不要です。
「手順7.パラメーターの登録」へ進んでください。
上記画像のどちらかの状態であればファイル作成が必要です。
Menu、Parameters どちらかだけ登録されていれば、不足分だけ作成します。
Projectウィンドウの適当なフォルダ(今回は他のファイルと同じ、アバター配下のanimeフォルダにしました)で、右クリック > Create > VRChat > Avatars > Expression Parameters OR Expressions Menu のファイルを作成します。
上記確認時にどちらか片方だけ無ければ、足りないほうだけで大丈夫です。
作成したファイルを、それぞれの枠にドラッグ&ドロップで登録。
今回は、"Anwar_ExMenu"、"Anwar_ExPara" という名前にして登録しています。
両方の枠に、ファイルが登録されていればOKです。
手順7.パラメーターの登録
Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。再度Animator を開く。
Animatorウィンドウ左上の、Parametersをクリックし、パラメーターのタブを開く。
Parametersタブの右上の + を押し、出てきたリストから Bool を選択。
New Bool というパラメーターが追加されることを確認。
適当に分かる名前に変更。(今回は "Cube ON")
Hierarchyでアバターを選択、VRC Avatar Descriptor > Expressions > Parameters に登録されているファイルをWクリック。
パラメーター一覧が開いたら、Add をクリック。
新しいパラメーター(Add押す直前の一番下のパラメーターのコピー)が作成される。
作成された新しいパラメーターの名前を、先程Animator 側で作ったパラメーターと同じにする。(大文字小文字スペース有無全て同じに。コピペ推奨)
Type もプルダウンから先程と同じ Bool にする。
Default はチェックが外れている状態にする。
Saved はどちらでもいいですが、今回はチェックを入れています。
手順8.Animatorの遷移条件(Transition)の設定
Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。またまたAnimator を開く。
左上のLayersタブを選択して、CubeのLayerを選択する。
先程作成した、Cube OFF の State(オレンジ色のボックス)の上で右クリック > Make Transition をクリック。
白い矢印が出てくるので、もう一つの Cube ON の State(灰色のボックス)の上でクリック。Cube OFF から、Cube ON に向かって矢印が繋がればOK。
矢印をクリックし、Inspector を開く。
Has Exit Time のチェックを外す。
Transition Duration(s) の数値を 0 にする。
Conditions の右下の + を押して、画像の様に項目が1つ出ている状態にする。
Conditions の一番左の欄をクリックし、出てきたリストから先程設定したパラメーター(今回はCube ON)を選ぶ。
右側の欄が変化し、true になっている事を確認。
もしなっていなければ、右側の欄をクリックしてtrueにする。
先程とは逆に、Cube ON の上で右クリック > Make Transition をクリック。
白い矢印が出てくるので、もう一つの Cube OFF の State(オレンジのボックス)の上でクリック。Cube ON からCube OFF に向かって、先程と反対向きの矢印が繋がればOK。
今追加したCube ON > Cube OFF の向きの矢印をクリックし、Inspector を開く。
先程の OFF > ON の矢印の時と同様、Has Exit Time のチェックを外す。
Transition Duration(s) の数値を 0 にする。
Conditions の右下の + を押して、画像の様に項目が1つ出ている状態にする。
先程と同様、Conditions の左側の欄をクリックし、自分が作ったパラメーター(今回は Cube ON)を選ぶ。
今度は右側の欄をクリックし、出てきたリストから false を選択する。
こうなればOK。
手順9.ExpressionsMenuの登録
Hierarchyでアバターを選択、VRC Avatar Descriptor > Expressions > Menu に登録されているファイルをWクリック。
Inspector に ExpressionsMenuのファイルの中身が表示されるので、Add Control をクリック。
New Control が追加されるので、左側の▶をクリック。
該当のボタンの詳細が表示されるので、内容を編集していきます。
Nameを適当な名前(今回はCube ON)に変更する。
Iconは設定しなくてもいいですが、右端の〇をクリックして選択できます。
今回は電球マークを選びました。
Type のボタンをクリックし、リストからToggle を選択する。
最後に、Parameter のボタンを押し、リストから自分が用意したパラメーター(今回はCube ON)を選択。
こうなってれば完成です。
手順10.動作確認
動作確認の為、アバターをアップロードします。
今回は一度、オフラインテストという手順でアップロードして確認します。
上記 Build & Test ボタンを押します。
Test Avatar Build のウィンドウが出ればOK。
VRChat内でアバターを選ぶ際、Hierarchy上のアバター名(今回であればAnwar_white)で選択する必要が有るので、名前を憶えておきましょう。
VRChatにログインし、アバター一覧のFavorite と Public の間辺りにある Other という欄から、先程テストアップロードしたアバターの名前を選びましょう。
VRモードならメニューボタン長押し、デスクトップモードならキーボードの "R" キーで、ExpressionsMenuを出します。
ボタンをONにするとCubeが出て、OFFにするとCubeが消えれば成功です。
お疲れさまでした。
この後、各手順の意味など説明しようかと思ったのですが画像が多くなりnoteの記事作成の動作が怪しくなってきたので、解説編は記事を分けることにします。
また、今回の手順の記事と見比べながらの方が分かりやすいかもしれません。
トラブルシューティング・小ネタ
・各種ファイルをドラッグする時など、ファイルをクリックしてしまうとInspectorが閉じてしまう事が有り不便
Inspector右上の鍵マークをクリックして閉じた状態にしておくと、何か操作しても閉じなくなります。不要になったらもう一度クリックして鍵解除。
他のウィンドウも同様です。
・各種ファイル類の保存先が分からなくなった
FXなど、各種ファイルを登録したところをクリックすると、Projectウィンドウで該当ファイルが置いてある場所が開きます。
・アニメーションの録画中に、なぜか録画が止まる
赤丸の録画ボタンを押して操作を記録しようとしても、途中で録画ボタンが元の状態に戻って録画が止まってしまう事が有ります。
これは、録画したいアニメーションを登録したところ(今回であればアバター本体)から、録画で操作したい物までの間に、Animator が付いたオブジェクトが有ると録画が止まってしまいます。
今回は手順通りにやっていれば Cube 等には付いていないので起こらない筈ですが、上記画像の様に自分で用意したオブジェクトなどに最初から付いている事が有ります。
自分がON/OFFしようとしている物や、その手前の物にAnimator が付いていないか確認し、付いていた場合はその中のController(上記画像緑枠) が空か確認してください。Noneであれば消してしまっても(基本的には)大丈夫なので、
Animatorコンポーネントの右上の歯車マークを押し、Remove Componentを選択して削除してしまいましょう。
Noneで無い場合は消すと問題が起きる可能性が有る為、今回の記事とは違う手順でアニメーションを作成する必要が有ります。
可能であれば次回以降書きたいと思います。
・ExpressionsMenu がいっぱいで追加できない
ExpressinsMenuは、1つのExpressionsMenu(1階層)につき、8つまでしかボタンを追加出来ません。
元からExpressionsMenuが充実しているアバターなどの場合、最初から8つ埋まっている可能性が有ります。
もし、不要なボタンが有れば消してしまうのが早いです。
どうしても全てのボタンが必要な場合は、ExpressionsMenuのファイルをもう一つ作ります。
その後、元々のExpressionsMenuにSub Menuというボタンを追加し、先程作成した新しいExpressionsMenuが表示できるように設定する必要が有ります。
この辺りの手順は、次回以降の記事で書く予定です。
今知りたい方はGoogleで "ExpressionsMenu サブメニュー" とでも検索してみてください。
・ExpressionParameters がいっぱいで追加できない
ExpressionParameters は、登録できるパラメーターの容量に限界が有ります。
上記画像の赤枠部分の数字の左側が現在使用中の容量、右側が上限(128)です。上の画像だと限界まで使っています。
上記画像の様に空白のパラメーターが有る場合は、枠だけ登録されて容量を食っているだけなので、削除しましょう。
空白のパラメーターの欄の、枠部分をクリックし、上記の様に青く選択された状態にしてください。
その後、右上のDeleteボタンを押します。
Total Memoryの欄が減っていればOKです。
ちなみに、追加するパラメーターが今回の手順の様にBoolの場合は容量1、それ以外のTypeは容量8を消費します。
もし、購入したアバター等で全ての欄に名前が付いたパラメーターが登録されている場合、どれが不要な物か(そもそも不要な物が有るのか)は、詳しく中を見てみないと分かりません…
アバターの説明書などにも書いてない場合は、最初のうちはそのアバターでパラメーター追加は難しいかと思います。
最後に
これで、SDK3.0での物の出し入れの記事の手順部分は終わります。
次回は仕組みなどについて書きたいと思います。
トラブルシューティングは、現時点で思いついたものを書きました。
また何か思いついたら追記します。
この記事が気に入ったらサポートをしてみませんか?