見出し画像

VRChat備忘録④ SDK3.0 物の出し入れ(手順編)

こんにちは、こむぎ* と申します。
VRChatの片隅を漂う無言勢の様な何かです。

今回は、SDK3.0での基本的な物の出し入れについて簡単にまとめたいと思います。

前回までの記事と順番逆じゃない?って感じですが、物の出し入れは他に有名な方のサイトなどが沢山有るので不要かと思ってたんです。
が、フレンドさんから、とりあえず同じサイト内でまとめておいた方が良いとの指示をいただいたので、一応書いておきたいと思います。


はじめに

今回は初めての人を想定して、一度触らないと説明の意味も入りにくい為

・最初に細かい解説抜きの手順のみ記載
・一度通してセッティングしてから簡単な解説

の順で書きたいと思います。
途中でうまくいかない場合は、記事最後のトラブルシューティングを見てください。
また、ほぼ全手順に画像を用意したため記事が大きくなったので、解説については別記事で分けて書きたいと思います。

アニメーション作成方法など、前回のParent Constraintの記事とやり方が違う部分が有りますが、今回は手順が少ない方法で書いています。
逆にかぶっている部分も多いですが、こちらの記事だけで完結するよう書いています。

この記事では、以下の前提で書いていきたいと思います。

SDK3.0でアバターのアップロードまでは出来る
Unityの基本的な操作(packageのインポートとか)などは出来る


手順1.アバターのセットアップ

スクリーンショット (257)

まず、SDK3.0、DynamicBone、シェーダー、アバター本体などをインポートして、通常通りアップロード出来る所までセッティングする。


手順2.出し入れするものの用意

スクリーンショット (262)

出し入れするものを用意します。今回は練習なので、ただのCubeを使います。
Hierarchyのアバターの上で右クリックして、3D Object > Cube をクリック。

スクリーンショット (264)

適当にサイズを変えて、自分の視界に入る位置に置いておきましょう。
後で動作確認さえ出来ればいいので、適当でいいです。
Hierarchyでの階層も、そのままで大丈夫です。

Cubeでは無く自分で用意した物を使っても良いですが、今回は最初の手順説明では最低限の内容しか記載しない為、途中でトラブルが起きる可能性が有ります。その場合は記事後半のトラブルシューティングを見てください。


手順3.Animator Controllerの準備

スクリーンショット (269)

Hierarchyでアバターを選択し、Inspector の VRC Avatar Descriptor > Playable Layers >FX を確認する。
上記画像の様に、ファイルが登録されていれば手順3は不要です。
「手順4.Cubeの出し入れのアニメーションの準備」に進んでください。


スクリーンショット (270)

上記画像の左右どちらかの状態であればファイルの作成が必要です。


スクリーンショット (272)

Projectウィンドウで、Assets > VRCSDK > Examples3 > Animation > Controllers を開き、vrc_AvatarV3HandsLayer というファイルを選択し、
Ctrl +D を押してファイルを複製する。


スクリーンショット (273)

複製された vrc_AvatarV3HandsLayer 1 というファイルの名前を、自分が分かりやすい名前に変える。今回は "Anwar_Hands"
ファイル名を変更するにはキーボードのF2か、ファイル選択後シングルクリック、もしくは右クリックからRenameです。


スクリーンショット (274)

名前を変えたファイルを、適当な場所に移動させる。
自分が分かればどこでも良いです。今回はアバターのフォルダ配下のanimeフォルダに移動しました。


スクリーンショット (277)

Hierarchyでアバターを選択、VRC Avatar Descriptor の Playable Layers が Customize ボタンになっていればクリック(①)、②の状態なら FX のDefault Non-Transform ボタンをクリック。


スクリーンショット (279)

先ほど複製して名前を変えたファイル (今回は "Anwar_Hands")を、FXの欄にドラッグ&ドロップ。


スクリーンショット (280)

FXの欄にファイルが登録されればOKです。


手順4.Cubeの出し入れのアニメーションの準備1(録画準備まで)

スクリーンショット (265)

Projectウィンドウで、適当なフォルダの空白部分で右クリック > Create > Animation で空のアニメーションファイルを作る。

スクリーンショット (267)

作ったファイルの名前を自分が分かる名前に変える。今回は "Cube_OFF" 。


スクリーンショット (282)

Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。


スクリーンショット (283)

Animatorウィンドウが開いたら、Layersタブの右上の + をクリック。


スクリーンショット (284)

新しく作られたLayerの名前を、自分が分かる名前に変える。今回は "Cube"



スクリーンショット (285)

今のLayer右側の歯車ボタンを押して、出てきたメニューの Weight を 1 にする。


スクリーンショット (287)

作ったLayer(今回は "Cube")を選択した状態で、右側の方眼紙みたいなエリアの空白部分で右クリック > Create State > Empty をクリック。


スクリーンショット (288)

New State が作成され、Entryから矢印がつながっていればOK。



スクリーンショット (290)

作ったState(オレンジ色のボックス)をクリック。


スクリーンショット (290)

Inspectorの内容を、一番上の名前の欄を自分が分かる好きな名前に変える。 今回は "Cube OFF" 。
下の方に有る Write Defaults のチェックを外す。


スクリーンショット (292)

手順4の先頭で作成した空のアニメーションファイル(今回は "Cube_OFF")を、先ほど用意した Cube OFF(オレンジ色のボックス)の Motion の欄にドラッグ&ドロップ。


スクリーンショット (293)

こうなってればOK。


スクリーンショット (294)

次に、アバターのInspectorを開き、FXの欄に登録されているファイルを、Animator > Controllor にもドラッグ&ドロップ。


スクリーンショット (296)

こうなればOK。


スクリーンショット (297)

Hierarchyでアバターを選択し、Animationウィンドウを開く。
Animationウィンドウは開いていないことも有るので、なければCtrl +6。


スクリーンショット (298)

Animationウィンドウの左上の▲▼が出ている部分をクリック。
出てきたファイル一覧から、先ほど自分が作った空のアニメーションファイルを選択。今回は "Cube_OFF" 


スクリーンショット (300)

こうなればOK。


手順5.Cubeの出し入れのアニメーションの準備2(録画、複製)

スクリーンショット (300)

自分が作ったアニメーションファイルが選択された状態で、赤丸の録画ボタンをクリック。


スクリーンショット (301)

録画ボタンの周りが赤くなれば録画中。


スクリーンショット (302)

HierarchyでCubeを選択、Inspector左上のチェックボックスをクリックしてチェックを外す。


スクリーンショット (303)

チェックが外れて、チェックボックスが赤くなっている事を確認。
また、アニメーションウィンドウの所に、画像のような項目が表示され、その右のチェックボックスが外れた状態である事を確認。


スクリーンショット (303)

もう一度録画ボタンを押して録画終了。


スクリーンショット (304)

チェックボックスの所と、録画ボタンの所が赤くなくなれば録画終了済み。
これでCubeを消すアニメーションは完成です。


スクリーンショット (305)

次に、Projectウィンドウで、さっき作った Cube_OFF のアニメーションファイルを選択。


画像79

Ctrl +D を押してファイルを複製。
複製された Cube_OFF 1 のファイルの、ファイル名をONにすると分かるよう好きな名前に変更。今回は "Cube_ON"


スクリーンショット (307)

今複製した Cube_ON のファイルをクリックして、青く選択した状態で、Animationウィンドウを開く。(タブを選ぶか選択状態でCtrl +6)


スクリーンショット (308)

Animationウィンドウの左上で自分が選択したファイルの名前が出ている事を確認の上、Game Object.Is.Active の右にある数値を 0 → 1 に変更。
適当に欄外をクリックして、Cube_ON のアニメーション作成完了。


画像47

Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。再度Animator を開く。


スクリーンショット (319)

先程作った Cube という Layer を選択し、空白部分で右クリック > Create State > Empty で新しい State を作成する。


スクリーンショット (321)

新しく灰色のNew State が作成される。(Entry から繋がっていないState は灰色)


スクリーンショット (324)

Cube_OFF の時と同じ要領で、今作成したNew State(灰色のボックス)をクリックし、上部の名前を Cube ON に変更(①)
先ほど複製したCube_ON というアニメーションを Motion の欄にドラッグ&ドロップ(②)
Write Default のチェックを外す(③)

これでONにするアニメーションの作成、登録は完了。


スクリーンショット (310)

アバターを選択し、Animator > Controller 欄のファイル名をクリック。
キーボードのDeleteキーを押してファイルの登録を削除する。
※間違えてFXの欄を削除しないこと。


スクリーンショット (311)

Controller の欄が None になればOK。


手順6.Expressions Menu、Expression Parameters の準備

スクリーンショット (312)

アバターを選択、VRC Avatar Descriptor > Expressions > Menu & Parameters を確認。
上記画像の様に、両方ともファイルが登録されていれば手順6は不要です。
「手順7.パラメーターの登録」へ進んでください。


スクリーンショット (313)

上記画像のどちらかの状態であればファイル作成が必要です。
Menu、Parameters どちらかだけ登録されていれば、不足分だけ作成します。


スクリーンショット (315)

Projectウィンドウの適当なフォルダ(今回は他のファイルと同じ、アバター配下のanimeフォルダにしました)で、右クリック > Create > VRChat > Avatars > Expression Parameters OR Expressions Menu のファイルを作成します。
上記確認時にどちらか片方だけ無ければ、足りないほうだけで大丈夫です。


スクリーンショット (316)

作成したファイルを、それぞれの枠にドラッグ&ドロップで登録。
今回は、"Anwar_ExMenu"、"Anwar_ExPara" という名前にして登録しています。


スクリーンショット (318)

両方の枠に、ファイルが登録されていればOKです。


手順7.パラメーターの登録

画像51

Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。再度Animator を開く。


スクリーンショット (326)

Animatorウィンドウ左上の、Parametersをクリックし、パラメーターのタブを開く。


スクリーンショット (327)

Parametersタブの右上の + を押し、出てきたリストから Bool を選択。


スクリーンショット (328)

New Bool というパラメーターが追加されることを確認。


スクリーンショット (329)

適当に分かる名前に変更。(今回は "Cube ON")


スクリーンショット (330)

Hierarchyでアバターを選択、VRC Avatar Descriptor > Expressions > Parameters に登録されているファイルをWクリック。


スクリーンショット (331)

パラメーター一覧が開いたら、Add をクリック。


スクリーンショット (332)

新しいパラメーター(Add押す直前の一番下のパラメーターのコピー)が作成される。


スクリーンショット (329)

作成された新しいパラメーターの名前を、先程Animator 側で作ったパラメーターと同じにする。(大文字小文字スペース有無全て同じに。コピペ推奨)
Type もプルダウンから先程と同じ Bool にする。
Default はチェックが外れている状態にする。
Saved はどちらでもいいですが、今回はチェックを入れています。


手順8.Animatorの遷移条件(Transition)の設定

画像60

Hierarchyでアバターを選択、VRC Avatar Descriptor > Playable Layers > FX に登録されているファイルをWクリック。またまたAnimator を開く。


スクリーンショット (366)

左上のLayersタブを選択して、CubeのLayerを選択する。


スクリーンショット (335)

先程作成した、Cube OFF の State(オレンジ色のボックス)の上で右クリック > Make Transition をクリック。


スクリーンショット (336)

白い矢印が出てくるので、もう一つの Cube ON の State(灰色のボックス)の上でクリック。Cube OFF から、Cube ON に向かって矢印が繋がればOK。


スクリーンショット (339)

矢印をクリックし、Inspector を開く。


スクリーンショット (340)

Has Exit Time のチェックを外す。
Transition Duration(s) の数値を 0 にする。
Conditions の右下の + を押して、画像の様に項目が1つ出ている状態にする。


スクリーンショット (342)

Conditions の一番左の欄をクリックし、出てきたリストから先程設定したパラメーター(今回はCube ON)を選ぶ。


スクリーンショット (343)

右側の欄が変化し、true になっている事を確認。
もしなっていなければ、右側の欄をクリックしてtrueにする。



スクリーンショット (338)

先程とは逆に、Cube ON の上で右クリック > Make Transition をクリック。


スクリーンショット (345)

白い矢印が出てくるので、もう一つの Cube OFF の State(オレンジのボックス)の上でクリック。Cube ON からCube OFF に向かって、先程と反対向きの矢印が繋がればOK。


スクリーンショット (347)

今追加したCube ON > Cube OFF の向きの矢印をクリックし、Inspector を開く。
先程の OFF > ON の矢印の時と同様、Has Exit Time のチェックを外す。
Transition Duration(s) の数値を 0 にする。
Conditions の右下の + を押して、画像の様に項目が1つ出ている状態にする。


スクリーンショット (348)

先程と同様、Conditions の左側の欄をクリックし、自分が作ったパラメーター(今回は Cube ON)を選ぶ。


スクリーンショット (349)

今度は右側の欄をクリックし、出てきたリストから false を選択する。


スクリーンショット (350)

こうなればOK。


手順9.ExpressionsMenuの登録

スクリーンショット (351)

Hierarchyでアバターを選択、VRC Avatar Descriptor > Expressions > Menu に登録されているファイルをWクリック。


スクリーンショット (352)

Inspector に ExpressionsMenuのファイルの中身が表示されるので、Add Control をクリック。


スクリーンショット (353)

New Control が追加されるので、左側の▶をクリック。


スクリーンショット (354)

該当のボタンの詳細が表示されるので、内容を編集していきます。


スクリーンショット (355)

Nameを適当な名前(今回はCube ON)に変更する。
Iconは設定しなくてもいいですが、右端の〇をクリックして選択できます。
今回は電球マークを選びました。
Type のボタンをクリックし、リストからToggle を選択する。


スクリーンショット (356)

最後に、Parameter のボタンを押し、リストから自分が用意したパラメーター(今回はCube ON)を選択。


スクリーンショット (357)

こうなってれば完成です。


手順10.動作確認

スクリーンショット (358)

動作確認の為、アバターをアップロードします。
今回は一度、オフラインテストという手順でアップロードして確認します。
上記 Build & Test ボタンを押します。


スクリーンショット (361)

Test Avatar Build のウィンドウが出ればOK。
VRChat内でアバターを選ぶ際、Hierarchy上のアバター名(今回であればAnwar_white)で選択する必要が有るので、名前を憶えておきましょう。


画像81

VRChatにログインし、アバター一覧のFavorite と Public の間辺りにある Other という欄から、先程テストアップロードしたアバターの名前を選びましょう。


画像82

VRモードならメニューボタン長押し、デスクトップモードならキーボードの "R" キーで、ExpressionsMenuを出します。


画像83

画像84

ボタンをONにするとCubeが出て、OFFにするとCubeが消えれば成功です。
お疲れさまでした。


この後、各手順の意味など説明しようかと思ったのですが画像が多くなりnoteの記事作成の動作が怪しくなってきたので、解説編は記事を分けることにします。
また、今回の手順の記事と見比べながらの方が分かりやすいかもしれません。


トラブルシューティング・小ネタ

・各種ファイルをドラッグする時など、ファイルをクリックしてしまうとInspectorが閉じてしまう事が有り不便

スクリーンショット (363)

Inspector右上の鍵マークをクリックして閉じた状態にしておくと、何か操作しても閉じなくなります。不要になったらもう一度クリックして鍵解除。
他のウィンドウも同様です。


・各種ファイル類の保存先が分からなくなった

スクリーンショット (364)

FXなど、各種ファイルを登録したところをクリックすると、Projectウィンドウで該当ファイルが置いてある場所が開きます。


・アニメーションの録画中に、なぜか録画が止まる

赤丸の録画ボタンを押して操作を記録しようとしても、途中で録画ボタンが元の状態に戻って録画が止まってしまう事が有ります。

画像88

これは、録画したいアニメーションを登録したところ(今回であればアバター本体)から、録画で操作したい物までの間に、Animator が付いたオブジェクトが有ると録画が止まってしまいます。
今回は手順通りにやっていれば Cube 等には付いていないので起こらない筈ですが、上記画像の様に自分で用意したオブジェクトなどに最初から付いている事が有ります。

自分がON/OFFしようとしている物や、その手前の物にAnimator が付いていないか確認し、付いていた場合はその中のController(上記画像緑枠) が空か確認してください。Noneであれば消してしまっても(基本的には)大丈夫なので、

画像89

Animatorコンポーネントの右上の歯車マークを押し、Remove Componentを選択して削除してしまいましょう。
Noneで無い場合は消すと問題が起きる可能性が有る為、今回の記事とは違う手順でアニメーションを作成する必要が有ります。
可能であれば次回以降書きたいと思います。


・ExpressionsMenu がいっぱいで追加できない

スクリーンショット (369)

ExpressinsMenuは、1つのExpressionsMenu(1階層)につき、8つまでしかボタンを追加出来ません。
元からExpressionsMenuが充実しているアバターなどの場合、最初から8つ埋まっている可能性が有ります。

もし、不要なボタンが有れば消してしまうのが早いです。

どうしても全てのボタンが必要な場合は、ExpressionsMenuのファイルをもう一つ作ります。
その後、元々のExpressionsMenuにSub Menuというボタンを追加し、先程作成した新しいExpressionsMenuが表示できるように設定する必要が有ります。
この辺りの手順は、次回以降の記事で書く予定です。
今知りたい方はGoogleで "ExpressionsMenu サブメニュー" とでも検索してみてください。

・ExpressionParameters がいっぱいで追加できない

スクリーンショット (367)

ExpressionParameters は、登録できるパラメーターの容量に限界が有ります。
上記画像の赤枠部分の数字の左側が現在使用中の容量、右側が上限(128)です。上の画像だと限界まで使っています。

上記画像の様に空白のパラメーターが有る場合は、枠だけ登録されて容量を食っているだけなので、削除しましょう。

スクリーンショット (368)

空白のパラメーターの欄の、枠部分をクリックし、上記の様に青く選択された状態にしてください。
その後、右上のDeleteボタンを押します。

スクリーンショット (370)

Total Memoryの欄が減っていればOKです。
ちなみに、追加するパラメーターが今回の手順の様にBoolの場合は容量1、それ以外のTypeは容量8を消費します。

もし、購入したアバター等で全ての欄に名前が付いたパラメーターが登録されている場合、どれが不要な物か(そもそも不要な物が有るのか)は、詳しく中を見てみないと分かりません…
アバターの説明書などにも書いてない場合は、最初のうちはそのアバターでパラメーター追加は難しいかと思います。


最後に

これで、SDK3.0での物の出し入れの記事の手順部分は終わります。
次回は仕組みなどについて書きたいと思います。

トラブルシューティングは、現時点で思いついたものを書きました。
また何か思いついたら追記します。

この記事が気に入ったらサポートをしてみませんか?