VR,VRChat

アバターの身長サイズの調整と等身の変更

Unity 上で簡易的にやってみます。
ねこみみは後付けでつけてます。

簡易的に変更してるので、フルトラで横向きになったりすると、変に伸びてしまいます。

アバターのヒエラルキーでPlatinumを指定して、Scaleを0.9、0.78、0.9となってることを確認します。
以前はここをいじってましたが、メニューからアバターのスケールを変更できるようになったあたりからここで変更してもだめになりました。

もう一つ下の ArmatureのScaleを0.92、0.92、0.85にしました。

階層のHip
1.05、1、1.05

階層のChest
1.02、1、1.02

階層のHead
1.17、1.52、1.17

階層のUpper Leg.L / Upper Leg.R
1.2、1、1.2

わすれずに目の位置もちょうどいい位置に変更しておきます。

 

Uncategorized,巨大娘

巨大娘を題材にしたyoutubeの動画があります。

巨大だったり小さかったりするワールド集

チャンネル Jadasa さんの動画です。

東京っぽい街なのですが少し小さい町です。

Size Shibuya By Terranek
https://vrchat.com/home/world/wrld_2a1f8a35-fd52-4998-8a3f-ed4c4169fcf8

Size Room With City V1․3 By Hoshiyume
https://vrchat.com/home/world/wrld_fe8eaf5f-2778-4b6b-bc8e-2dfa7bd94519

Yoll_God_GG_Sanctuary By Kami_God_GG
https://vrchat.com/home/world/wrld_da6d2f7c-8cf7-48f0-aa86-76e4800f1382

The Miniature City By Craft_Freeman
https://vrchat.com/home/world/wrld_6f78a563-5223-4cfa-807f-8f1393ace478

Just Mouth By YM[ワイエム]
https://vrchat.com/home/world/wrld_d2d6f879-a776-42e1-82e9-e7e02ee77f24

VR,VRChat,巨大娘

VRのプラットフォームのVRChat上に、巨大娘や縮小化を体験できるワールドがあります。
いくつかここにメモとして記載します。

Lady snow‚ Ready grow

ワールドに入ると、ちっちゃい子がいます。見上げてる先にはお皿に入ってるクッキーがあります。
ユーザがクッキーをクリック(食べると)すると、目の前のちっちゃい子が大きくなります。

クッキーはいろいろなところに隠されてます。
何回かクッキーを食べると、お家の中に入りきらなくなります。
まだまだクッキーはあるので、さらにでっかくなりますよ。

VR,VRChat,VRCSDK3

やりたいこと

vrchat 用のワールドで、クリックするとランプが点灯するなどの仕掛けがあります。
物はアセットやBOOTHで入手したものを使用することができます。
ランプなど、クリックすると点灯する仕掛けがあるものもあります。

ランプをクリックしたり部屋の電気をつけた状態が他人の同じワールドにいる人からも同じ状態になっていてほしいことがあります。

cyan_trigger というのを入れることで、プログラミングやノードの操作(UDON)無しに作りこむことができます。

ゴール

2人でテスト用のワールドに入ってからネコミミの子がランタンをクリックしてランプをつけた状態です。
別のPCで別アカウントで同じワールドに入ってみて、ランタンが点灯しているのを確認したのが下の画像です。
後からワールドに入った人がランタンをクリックして消灯したり点灯したりしても、最初に入った人で見ても同期されているのを確認できました。

VR,VRChat,VRCSDK3

vrchat 用ワールドのイベント処理

ボタンを押したときの同期のしかたですが、Udonsharp は直に使わず、cyan_trigger を使ってます。
以下のようにしてみました。合ってるかわかりませんが動いています。
UI の同期のしかたがわからないので、球体をボタンにしてます。
Unity で普通に UI を作り大きさを合わせて設置します。
ラジオボタンの位置に球体を適当に大きさを合わせて設置します。
球体にAdd ComponentからCyan Triggerを追加します。
Add EventからInterructを指定して挿入します。ここではLocal のままにします。
Actionsにオーナーを設定するためのNetworking.SetOwnerと、他のCyan Triggerにイベントを送るためにSendCustomEventを追加します。
Cyan Trigger の0.4以降からはCyan TriggerのSendCustomEventはなくなっており、UdonBehaviour.SendCustomEventになっています。
SetOwnerにはLocal Playerとイベントの送り先Sub_Spaceにします。
(このワールドでは宇宙の中を移動するために、宇宙のほう(Sub_Space)を移動させて、自分がいる宇宙船はUnityの中では動かさないようにしています)
SendCustomEventではInputの一覧に、ヒエラルキーからSub_Spaceのオブジェクトをドロップして指定して、_Set_Earthを指定します。
他のボタンも似たようにします。
このワールドでは各シーンを指定できます。各シーンに応じた惑星を移動させたり、宇宙船などのオブジェクトを動かします(アメリカ映画のインターステラーの再現ワールドです)。

Sub_Spaceオブジェクトの設定をします。
Add ComponentからCyan Triggerを追加します。
シーンの状態を示すint変数を追加します。
Variablesの下の+を押してint変数を追加して名前(sub_space_state)を指定します。
最初は1が選択されるので1を指定します。横の設定値は「Synced」にします。
メニュー選択後に他の人がJoinしてきたら、今選択されている番号のシーンに切り替わりましたが、アニメーションは最初から再生されました。
別途アニメーションの再生位置も同期しないといけないことがわかりました。ここでは無視して先に進みます。

Cyan Triggerのカスタムイベントを定義します。
Add EventからCustom Eventを指定して、Nameに_Set_Earthを記載します。
このイベントの処理はCyan Triggerの変数を変更するだけにします。☆マークのvalue -> int -> int.setを指定します。
inputに設定する値とoutputにCyan Triggerの変数を指定します。これをシーン分つくります。

次に、変数が変化したときの処理を作ります。
Add EventでData -> OnVariableChangedを追加します。変数の値が変化したときに動くイベントです。
参照する変数(sub_space_state)を指定します。
AnyoneとSend To Allはこれで良いのかわかりません。
Actionsを指定していきます。
ここでは
if 文でシーン1かを判断し、1なら処理。if 文の elseif 文で次のシーン2かを判断していくことにしています。
if の condition に適当な名前を指定します(適当でいいのか不明)。
☆から value -> int -> int.Equality を指定します。int を 2つ追加し、1つ目はvariable の sub_space_state を指定。2つ目は比較内容の1を指定します。
out boolはcond_to_earthを指定します(condition variableにした値)。これを if の中の Condition(“cond_to_earth") の中へ移動させます。
次は ConditionBodyの中です。
処理は以下のように記載しています。
実際に記載するときは必要な処理で良いと思います。
1. 他のCyan TriggerへSendCustomEventを送る (宇宙船のアニメーション開始)
2. アニメーションの再生位置をスタート位置にするためにfloatを送る。
3.現在の状態を示す変数に1をセット。
4.メニューの選択されてないシーンのマテリアルを水色にセット。
5.メニューの選択されているシーン(1)のマテリアルを青色にセット。
等の処理をしています。
アニメーションの制御はSDK2アイコンのAnimationsの一覧から適切なものを指定してイベントを設定しました。
マテリアルの変更はSDK2アイコンのMaterialsからRenderer.SetMaterialを指定して選択したメニューの球体の色を変更しています。
主にボタンを押したらアニメーションを開始したりするのがほとんどなのでこのようにしています。

Uncategorized,VR,VRChat,VRCSDK3

アバターの身長とサイズの調整(ちび化)

今日は BOOTH の Ficsnade で発売されているオリジナル3Dモデル『Lua』をちび化してみます。

左から元のアバター。真ん中はちび化したもの。右はVRの中で鏡に映ってるものを写真でとったもの。
FBXとか、元の3dファイルをちび化して調整したほうが良いのですが、unity だけでサイズ変更をします。
unity だけでスケールを変更すると、フルトラで寝たときとか、斜めになったとき、体が縦サイズで縮んだり、横向きになったときに横に伸びたりします。
でもその代わりに、お手軽に変更ができるのと、もうかわいいので気に入っています(もってかえりたい)。
服は別途購入したパーカーを着せています。

サイズ調整

調整した箇所を一覧で記載します。
調整する箇所は以下の赤枠の箇所です。
Scale と 下の View の View Position です。View Position は目線の高さです。

元は Scale に「1、1、1」となっているのを変更するイメージです。

階層(ヒエラルキー) の LuaV3_Standard_PhysBones の下から記載します。
LuaV3_Standard_PhysBones
Armature Scale 「0.9209915、0.9209915、0.9209915」→「0.83、0.83、0.67」

Armature -> Hips -> Spine -> Chest -> Neck -> Head
Scale 「1、1、1」→「1.28、1.44、1.28」

Armature -> Hips -> Spine -> Chest -> Neck -> Head -> HairRoot-> KemomimiBase.L
Armature -> Hips -> Spine -> Chest -> Neck -> Head -> HairRoot-> KemomimiBase.R
Scale 「1、1、1」→「1、1.2、1」

目線のView Position
「0、1.279688、0.05414041」→「0、0.95、0.088」

あとはお好みで、各サイズを調整すればよいかなと思います。

 

VR,VRChat

ORGANISM
有機物 – 生命体に着目した大きなワールド。
ワールドに入って最初のほうです。
窓ガラスに水滴がついてます。中にはブラウン管のテレビがあり、秘密の通路もあります。

巨大な建築物とか、謎っぽいワールドが好きならおすすめです。

VRChat,VRCSDK3,マインクラフト

マインクラフトをUnityとかVRChatのワールドへ取り込む方法をメモします。

◆ 必要なもの
マインクラフト (Java 版)
mineways
blender
MCPrep(blenderのプラグイン)

1. 取り込みたいマインクラフトのワールドを整備します
2. mineways を起動します。jmc2obj でもできると思いますがためしてません
3. マインクラフトのワールドを開き、取り込む範囲と高さ、深さを指定します

4. ファイルメニューから「Open Level」を指定し、一覧からマインクラフトのワールドを指定します。

5. 左クリックで移動し、右ボタンを押してドラッグすると範囲を選択できます

6. ファイルメニューから「Export for Rendering」を指定し、ファイルへ出力します。

7. 出力
オプションが出てきます。
左の列は出力時のマテリアル設定です。デフォルトで良いと思います。
真ん中の列は、出力された3dモデルの指定でまとめるか、タイプごとに分割するかの指定です。
とりあえず下記の画像のオプションにします。

ファイルを出力すると、obj と mat 、それとテクスチャの画像ファイルが出力されます。

8. blender によるファイルの調整
blender を起動します。
MCprep という blender のプラグインが入ってなければ有効にします。
編集メニューの「プリファレンス」を開き、アドオンタブを指定し、画面上のインストールボタンをクリックします。
MCprep を別途ダウンロードし、zip ファイルを指定します。
Object:MCprep のチェックを有効にします。

blender の余計なものを削除します。選択して「x」メニューから削除を選びます。消すのは立方体とライトとカメラです。
ファイルメニューの「インポート」からWavefront (.obj)を指定してminewaysで出力したファイルをインポートします。

「N」キーを押して、右にタブでてきたタブメニューから「MCprep」を指定します。
Prop Material ボタンを押し、OK を押すと取り込んだモデルにテクスチャが入ります。
これを blender 形式で保存します。

9. UNITY への取り込み

任意のプロジェクトを作成し、ディレクトリに出力したblenderファイルとテクスチャをドラッグ・ドロップします。

右クリックメニューから「Create」→「Material」マテリアルを新たに作成します。
作成したマテリアルを選択して、プロパティの「Metalic」を0にします。また、画面上の□ Albedo にテクスチャの(minecraft_flat-RGBA.png)をドラッグします。
テクスチャ(minecraft_flat-RGBA.png)を選択し「Aplha is Transparency」のチェックを入れます。
下のほうのFilter Modeの箇所の設定を「Point (no filter)」にしてApplyを押して反映します。
マテリアルを再び選択して、Rendering Modeを「cutout」にします。
ヒエラルキーにblenderのファイルをドロップし、シーンに追加します。
blenderのファイルをヒエラルキーにドロップした状態では真っ白ですが、展開してオブジェクトにマテリアルをドラッグして割り当てます。
テクスチャが表示されるので、全部に指定します。
アニメーションはされないですが、たいまつの形や、窓の透明部分も反映されていると思います。

 

VR,VRChat

VRChat には有志が作成した原作再現ワールドがあります。

作品が好きならVRで体験型のコンテンツとして体験してみると良いでしょう。

ディスプレイごしに見るコンテンツと、VRを使用して、向いた方向の景色が見え、両手、あるいはフルトラッキングなら私の姿勢とVRでのアバターの姿勢がシンクロするため、仮想現実感がより高まると思います。好きなキャラが等身大でそばに立っているとかも体験できるのではと思います。

■ けものフレンズ

■ Kemono Friends EP12 Ending Location
1期の12話のエンディングのあと。「おわり」の文字が出てる場面の再現です。
VRなので、すきな角度から見ることができます。
かばんちゃんとサーバルちゃんなどがいますが動きません。ワールドに設置してあるだけで、等身大フィギュアのような感じです。
「おわり」の文字はつかんでどこかに放り投げることができるようにしています。

けものフレンズEP12

Kemono Friends

Uncategorized,VR,VRChat

VRとART系の作品は調和性が良いのではと思います。

まずはこれ。
VRChat の「Starry Night Forest」というワールドです。
元の絵の作者は Vincent van Gogh.

星月夜. The Starry Night ですね。

VRの中で作品を感じることができます。