10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アバターの横に、浮遊するサポートロボット(アバター)を浮かべる手順(VRChat忘備録)

Last updated at Posted at 2021-01-03

二足歩行ホビーロボットビルダーの みっちー です。
最近、ホビーロボットビルダーの仲間内で「VRホビーロボット集会」という名のVRChatのイベントが開催され始め、自分もQuest2の発売をきっかけに、しばらく離れていたVRの世界に戻ってきました。
さらに、そのままVRChat沼にハマってしまいました。(笑)

ロボットの製作にはモデリングソフトではなく、3D CADソフトを使うのが一般的ですが、3D CADのデータをblenderで編集可能な形式にコンバートして、ロボットのモデルをアバター化するのが、そのコミュニティの中で流行りはじめています。

ただ、VRChat内でコミュニケーションしていると、中途半端に作った自作アバターでは使いづらいと思うこともあり・・・
今回、"人間アバターだけど自作ロボットアバターも自慢できる"、そんなアバターを作りたい!っと思って、いろいろ探し回った結果、たどり着いたアバターの作成方法と、見つけた技術(アセット)を紹介したいと思います。

目標

人型アバターの横に、サポートキャラクターみたいな小さなアバター(ロボット)を浮かべて、かつ自分のアバターと同期して動かしたいと思います。

完成形はこんな感じです。↓↓↓
ezgif-2-118616936d73.gif

ちなみに、主人公にくっついてるサポートキャラって良いですよね。

  • カード〇ャプターさくらの「ケロちゃん」
  • 姫ちゃんの〇ボンの「ポコ太」
  • 幽遊〇書の「プー助」

・・・とか、みたいな感じですね。(年齢がバレるw)
普段作っているロボット自体も、そんなサポートキャラクター的位置づけのキャラクターとして製作しています。
(私、ぬいぐるみロボットとか作ってます。)

必要なもの

作業しながら集めても良いのですが、まず初めに必要なものを列挙しておきます。

  1. 単体のアバターのアップロードの知識

    ※ 自分はまず、zenさんのワニでもできる!モデリングforVRChatのかぼちゃアバターで練習しました。
  2. メインにしたいアバターのモデル

    ※今回は、boothで無料のアバターの中から、拾い部屋さんのシヴィーちゃんを使わせていただきます。
  3. 空中に浮かべたいアバターのモデル

    今回は、自作のKO-LINK3というキャラクターを使います。

    ※3D CADのロボットのデータをアバターにする方法は、@Ninagawa_Izumiさんの記事「Unity/VRChatにロボット系3Dモデルをインポートして動かす全行程」をご覧ください。
  4. Dynamic bone (Unityアセット) 約2,000円くらい(時々セールやってます)
  5. VRCHAT SDK2 (3.0でも可)
  6. ユニティちゃんトゥーンシェーダー2.0
  7. Drone Movement with Dynamic Bone (無料)

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3233313138352f66616436336562312d653163392d626461352d633266382d6232323365396434383435612e706e67.png
拾い部屋さんのシヴィーちゃん (Boothで無料!!)
https://booth.pm/ja/items/1663470

プロジェクトの作成

適当な名前で、まずは新しいプロジェクトを作ります。

image.png

下準備(必要なアセットのインポート)

キャラクターをインポートする前に、必要なものをUnityにどんどんインポートしていきます。
事前に、VRCHAT SDK2をダウンロードしておき、Unityの上部メニュー [Assets]->[Import Package]->[Custom Package] から、「VRCSDK2-2020.12.09.04.45_Public.unitypackage」を読み込ませます。

image.png

次にDynamic Boneをインポートします。こちらは、Unityのアセットストアで有料販売されているアセットのため、webページで事前に購入しておく必要があります。
購入済みの状態であれば、[Asset Store]のタブを開いてUnity内に表示されるwebページから、Unityにログインすると、[My Asset]の中に購入済みのアセットが並びますので、そこからImportします。
(ちなみに、シヴィーちゃんはDynamic Boneを使っていないようですが、これは後々インポートするDrone Movement with Dynamic Boneのための下準備です。)

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3233313138352f39653561316532302d303735652d333832392d636337382d3231356663613861383232622e706e67.png

CustomPackageと同じで、インポートするファイルの確認画面が出ますので、そのままインポートします。

image.png

続いて、シェーダーをインポートします。
シヴィーちゃんは、ユニティちゃんトゥーンシェーダー2.0を使っているようなので、ダウンロードしたzipを解凍し、そのなかから「UTS2_ShaderOnly_v2.0.7_Release.unitypackage」を選んで、インポートします。

image.png

3Dモデルのインポート

下準備が終わったので、続いて3Dモデルをインポートします。
拾い部屋さんのシヴィーちゃんをダウンロードし、zip解凍した上で、Import Packageから、シヴィーちゃんのフォルダの中にある「2A7VVVVproto_191123.unitypackage」をインポートします。

image.png

Assetsにシヴィーちゃんがインポートされたので、インポートしたシヴィーちゃんのfbxファイル(2A7_VVVVproto_191107VRC)をHierarchyの直下に放り込みます。
この時、もし下準備でシェーダーのインポートをしていないと、キャラクターのマテリアルが未設定の状態になり、単色で表示されます。インポートする順番を間違えないようにしましょう。

image.png

続いて、アバターにVRChatで使うための設定を行います。
Hierarchyの2A7_VVVVproto_191107VRCを選択し、[Add Component]から[VRC_Avater Descriptor]を選んで追加します。
この選択肢が出てこない場合は、VRC SDKのインポートに失敗しています。

image.png

VRC_Avater DescriptorからViewer Pointの設定と、Defoault Animationの設定を行います。
とりあえず、Viewer Pointは、X=0,Y=1.15,Z=0.08にしてみました。
SceneをWireFrame表示にすると視点の位置が表示されます。
Defoault Animationは、女の子アバターなので、Famaleです。

image.png

ここまで出来れば、とりあえず、シヴィーちゃん単体でのアップロードが可能な状態になっています。

浮遊するアバター(Drone)を設置する

ここからサポートキャラのアバターを設置したいと思います。
まずは、Drone Movement with Dynamic Boneをダウンロードして、zipを解凍し、「DroneMovementWithDynamicBone0.2.0.unitypackage」をAssetsにインポートします。

image.png

続いて、インポートしたDroneMovementWithDBの中からRuntime->Prefabs->DroneCosDelayMovementを選択し、Hierarchyのアバター(2A7_VVVVproto_191107VRC)の中にドラッグ&ドロップします。

image.png

続いて、浮遊させたいロボット(アバター)のFBXとメッシュの入ったフォルダをまるごとAssetsの中にドラッグ&ドロップします。
(既にアバターを作っていて、unitypackageがある場合は、インポートしても構いませんが、浮遊するアバターにVRC SDKの設定(VRC_Avater Descriptor)が入っている場合は、VRC_Avater Descriptorが2つになって衝突しますので、removeしておいてください。)

image.png

浮遊するロボット(アバター)のFBXを選択して、RigをアニメーションタイプをHumanoidにして、Applyしてください。Configueの設定はしなくても良いようです。

image.png

FBXを、Hierarchy内の、DroneCosDelayMovement->DlayMovement->Targetの中にドラッグ&ドロップします。
すると、足元(原点)にアバターが出現します。

image.png

浮かべたい位置に調整します。
DelayMovementをクリックし、Sceneに出現した三軸の矢印を操作して、デフォルト位置を設定します。

image.png

次に、このアバターが、メインのアバターのどの座標に追従するか設定しますHierarchyのDroneCosDelayMovementを選択し、Add ComponentからPosition Constraintを選択、追加します。

image.png

Position ConstraintのSouceのところの「+」ボタンを押し、そこに、メインアバターのArmatureから「Chest」をドラッグ&ドロップします。

image.png

Activateをクリックし、ドローンの追従が設定できました。

image.png

ドローンの設定は、ここまでです。
ただ、このままアップロードすると、サポートキャラクターのアバターは常にTポーズのまま浮遊しています。
動かないオブジェクトならこれでもOKです。

メインアバターに連動して、浮遊アバターを動かす

主アバターの動きを空中浮遊するアバターに追従させます。
ちなみに、こちらの設定は、NazellさんのVRChat 初心者向けUnity備忘録Ver.1.0.1を参考にさせていただきました。

まず方針として、空中で足をバタバタさせるのも変なので、上半身だけを主アバターと子アバターで同期させたいと思います。
関節の同期には、[Rotation constraint]という設定を行います。

ここからはすごく地道な作業です。
まずは、メインアバターの[Neck]と浮遊アバターの[Neck]を同期します。

浮遊するアバターのArmatureからNeckを選び、Add Componentから、[Rotation constraint]を追加します。

image.png

[IsActive]にチェックを入れ、sourceの「+」をクリックし、メインアバターの[Neck]をドラッグ&ドロップします。

image.png

これで、[Neck]は完了です。
続いて[Head]、[Left Shoulder]…という具合に同期させたい関節を、同じ要領すべて設定します。
ちなみに、このロボットアバターには指がないため[hand]まで設定したら、指は設定しません。
5本指があるアバターであれば、全部設定して下さい。本当に大変な単純作業です(^^;A
ちなみに、controlキーを押しながら関節をまとめて選んで、一括して[Rotation constraint]を追加するとちょっとだけ作業は楽になります。

image.png

全部設定し終えたら、完成です!
あとは、いつも通りアップロードしましょう。

おそらくこんな感じに動くはずです。

ezgif-2-118616936d73.gif

さて、ホビロボVRC勢なみなさん、これでVRC内で自作ロボットアバターを連れて歩きませんか!?

…しかし、VRChat奥が深いというか、まだまだ出来ることのほんの一部しか触れていないようです。
VRChatはじめたばかりの自分の忘備録として、こちらの記事を書きましたが、もっと効率的な方法とか、面白いギミックとかあったら教えてむしろ欲しいです。

ゆくゆくは、ロボットの変形もやりたいですし、あ、そういえばパーティクルに関してはまだ全然触っていません(^^;A
また、面白いものを見つけたら記事にしたいと思います。

そして、VRChat内でいろいろ教えてくれた皆さん、ありがとうございます。

Quest対応について

ちなみにQuest対応についてですが、Dynamic Boneを使っているのでPCと同じように浮遊させることは出来ませんが、Rotation constraintを使って、定位置で空中で同期動作させることだけは出来そうです。

Quest対応に関して、Dynamic Boneはもちろんですが、Rotation constraintもQuest非対応でした。
とりあえず、固定で浮かべておこうか…。
(2021/01/11 訂正)
175.jpg

参考にさせていただいたサイトや動画

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?