2020年まとめ

前回の記事でVRCアドベントカレンダー2020に参加するためにはてなブログ開設したものの,それっきりで何も生かせてないのでせっかくだからブロガーっぽく1年のまとめ記事出すかー!…と思いつつ年末のダラっとした空気を楽しみすぎて年明けになりました.
そういうとこやぞ.

細かくやった事を都度記事にしてればそれのリンクとかバシバシ貼ればいいのかもしれんが,生憎そんな事してこなかったのでつらつらと振り返って書く.
たまたま今年は新しい扉開けまくったってのが多いだけで,こんな事するの今年(去年)限りかもしれん.

 

今年はなんといっても自分の中の”VR元年”始まったなと!!!
以前から環境自体はあったんですが,没入したのは今年の4〜5月以降って感じ.

VRChatにどっぷりになってからは
Unity(VRC向けキャラ改変&ワールド製作),Blenderでのモデリング,フォトグラメトリ,シェーダーなどなど新しく色んな知識を仕入れてました.

NesoVRにもたまにお邪魔させてもらいに行ってたものの,基本的にVRChatに籠りっぱなしだったので今後は他のVRSNSにもお邪魔してみたいところ.
そのためにVRMとかも用意せねば…なのかな…おあああ.

 

Web

Web系でいうと今までなんとなくで使ってたNuxt.jsを学び直したりしていました.
途中で横道に逸れたばかりに途中で止まってますが…
こっちの技術はこれまでの軌跡を辿ってアニメーションで動的な方面とか,WordpressとかのCMSで更新しやすいサイトの基盤作りを進めていくかって感じになるんだろうけど,技術の取捨選択含めてどう舵取りしていくかまだちょっと悩み中だったりします.
(悩み中といいつつ,こういうのは走ってる中で必要なものを取り込んでくスタイル)

 

創作方面

Blenderとかも創作だけど,どちらかというと同人関係.
絵はあんまり描かなかったかなぁ…でも本は出しました.

まずComicVket1で出して,その後アップグレード紙版をVLifeにて発行したりしてました.
紙版の方を今通販してて,家で量産しております.お届けまでお待ちを!

そして例のアレが丸1年放置でごめんなさいごめんなさい.
やるべき事から目を背け続けて別の脇道をつっぱしってしまった1年だったので,軌道修正…というか元の道も進めつつを考えていきたいところ.

 

買って良かったもの

ValveIndex+トラッカー+トラッカーベルト→世界が変わったー

OculusQuest2→VirtualDesktopに負けて全然さわれてないので進めたい

OsmoMobile3→ジンバルよきー!沖縄旅行行った時に活躍しました
ご時世でお外あまり出なくなってしまったけど何かしら活用していきたい…

 

良かった本

基本的にあんまり読んでないけど,これからの将来どうなるかなみたいな感じの本をよく手に取ってた気がする.

プレシンギュラリティ

フードテック革命→読み途中だけど…SF的観点でも参考になる.「おいしさの錯覚」っていう本が大好きなのでこっちもあわせておすすめ.

ツァトゥストラはかく語りき→ずっと読みたいと思ってたけど、AmazonUnlimitedに加入したついでに読み始め!
即寝るので5ページくらいで敗退してAmazonUnlimitedの安い期間終了したので解約しました…


2021年やりたいこと

2020年に残してきた事がいくつもあるので消化を早くしたいと思いつつ…
やりたい事を細かくリストアップするのも可能だけど,そういうのがモチベーションに影響する人間ではないのでしない.

動画とかもちょっと触れるようになりたいかな.

今年も欲望駆動をするためにいっぱい欲望を高めていきとうございます.

VRChatでデスクトップ勢に膝枕してあげられる機構

副題「constraintを使ったワールド固定 +SDK3.0でEXメニューでの物の出し入れ  + VRC_StationでアバターにSit判定を入れる 応用」

 

この記事はVRChat Advent Calendar 2020(https://adventar.org/calendars/5102)の11日目の記事です.

 

f:id:ichikazu:20201211204103p:plain



【導入】

対象:

フルトラでいちゃいちゃしてる人たち見るけど、自分の相手がデスクトップモードだから諦めてるって人向けです.

以下の問題を解決することができます.

[メリット]

  • VRと違って浮く事ができないデスクトップモードの人も膝にのせる事ができる
  • 場所を選ばない(ワールドに横になる装置がなくても寝かせられる)
  • 足にsit判定をつけた時と違って,自分が動いても相手の視界がブレない

逆にこんな弱点もあります

[デメリット]

  • VRモードの人を座らせると視点との違いで酔うかも

 

え?それ以前に相手がいない?もしくは自分は膝枕されたい方だって?
愛っていうのは分け与える方から始まるものだよ!!!(訳:人を撫でるのだけでも楽しいぞ)

 

想定する力量:SDK3.0でアバターアップロードできる

 

[SUP]
記事の内容が難しいと思ったらより丁寧に解説してくれてる初心者向け改変サポートの本がフレンドのNazellさんから出てるからこっちをチェケラ!
勉強会Discordも存在するから,そっちで教えてもらうのもいいかも!?

https://nazell.booth.pm/items/2203578

 

では本題いくよー!

 

 

[TIPS]

ここに書いてある事をUnity上で全て詰め込んでからアップロードして動作確認するとどこがおかしいのか切り分けできなくなります.

いっこ変更したらアップロード→確認を繰り返して少しずつクリアしていきましょう.

  

【constraintを使ったワールド固定】

まずは自分の出した物体がワールドに固定できるようにしていきます!

 

左上のCreateからCreate Emptyを選択し,空のGameObjectを下記を参考に作ります.
(画像内の「Sit」だけ3DObject>Cubeで作成)

f:id:ichikazu:20201211222817p:plain


先ほど作った「World_C」オブジェクトのInspector上で[Add Componet]を押して,「Position Constraint」と「Rotation Constraint」を追加します.
それぞれのSourcesには「World_Point」をドラッグ&ドロップして設定しておきます.

f:id:ichikazu:20201211224201p:plain

 

「Pickup_C」オブジェクトには「Parent Constraint」をAdd Componentします.
Sourcesには「Pickup_Point」を設定します.

f:id:ichikazu:20201211224316p:plain

 

「Sit」キューブの位置を調整してから,「Pickup_Point」をArmatureの右Hand配下に入れます.

f:id:ichikazu:20201211225037p:plain


この後ワールド固定できるキューブを自由な場所で入れたり出したり,その場で固定したりできるようにしていきます.

 

[参考にした記事]

VRCでConstraintを使ったワールド固定&ピックアップ(Unity2018対応)|Beryllin|note

  

【SDK3.0でEXメニューでの物の出し入れ】

前の章で作成したキューブをEXメニューを用いて出し入れしたり,自由な場所で固定したりする仕組みを作っていきます.

 

予めキューブを手に持つアニメーションと,表示するアニメーションを作成しておきます.
ProjectのCreate>Animationから新しいAnimationファイルを作成し,「Pickup」と名付け,Pickup_C>Parent Constraint_Activeの項目をONにするアニメーションを作成します.

Keyを0:01にも追加し,LoopTimeにチェックを入れてください.

f:id:ichikazu:20201211225828p:plain

 

同じく新しいAnimationファイルを作成し,「Sit」と名付け,World_C>Game Object Is Activeの項目をONにするアニメーションを作成します.

f:id:ichikazu:20201211231325p:plain

 

先ほど作成したアニメーションをEXメニューで使う準備をします.

ProjectのVRCSDK>Examples3>Animation>Controllersから「vrc_AvaterV3HandsLayer」をコピーしてきます.

Animator画面から「Parameters」を選択し,[+]ボタンからInt項目を追加,それぞれ「ActiveSit」,「Pickupsit」と名付けます.

f:id:ichikazu:20201211232607p:plain

 

「Layers」を選択し,[+]ボタンから項目を追加,それぞれ「Sit」,「Pickup」と名付けます.
歯車アイコンからWeightを「1」に変更するのをお忘れなく.
また,それぞれONとOFF状態のStateを追加して(ブロックになっている部分)それぞれTransitionを繋ぎます(ブロックを繋ぐ矢印の部分).

f:id:ichikazu:20201211232939p:plain


ONのStateのMotionに先ほど作成した「Sit」アニメーションを設定します.

f:id:ichikazu:20201211234402p:plain

 

Transition部分のConditionsには,先ほどParametersで作成した項目が1の時と0の時の状態を設定します.

f:id:ichikazu:20201211234435p:plain

f:id:ichikazu:20201211234449p:plain

 

Pickupも同様に設定します.

 

ここからEXメニューに設定していきます.

ProjectのVRCSDK>Examples3>ExpressionsMenuから「DefaultExpressionParameters」と「DefaultExpressionMenu」をコピーしてきます.

それぞれパラメーターを追加します.

f:id:ichikazu:20201211235349p:plain

f:id:ichikazu:20201211235404p:plain

 

アバターを選択し,Expressionsに先ほど作成したファイルを指定します.

f:id:ichikazu:20201211235938p:plain


これでVRChatのEXメニューからキューブを出し入れしたり,位置の変更・固定ができるようになっているはず!

[参考にした記事]

[VRChat] Avatars3.0で物を出し入れする (EmoteSwitchみたいなもの) - がとーしょこらの技術録

 

【VRC_StationでアバターにSit判定を入れる】

では最後に出し入れできるようになったキューブにSit判定をつけていきましょう.

 

ProjectのVRCSDK>Examples3>Animation>Controllersから「vrc_AvaterV3SittingLayer」をコピーしてきます.

Stateに設定されているMotionを寝ているアニメーションに変更します.

f:id:ichikazu:20201212000843p:plain

今回はこちらのポーズ集を使用させてもらいました.

【約100種類 無料!】ポーズ詰め合わせ【Unity Animation】 - アンテナショップ【ねここや】 - BOOTH

 

最初に作成した「GameObject」に[Add Component]をクリックして「VRC Station」を追加します.

Animator Controllerに先ほどの「vrc_AvaterV3SittingLayer」を設定し,Player Enter Location,Player Exit Locationには「Location」を設定します.

f:id:ichikazu:20201212001139p:plain

 

これでキューブに寝そべるアニメーションのついたSit判定がつきました!


[参考にした記事]

fla (silent_bird) on Twitter: "アバター3.0にてVRC_Stationを使用しsit判定のある椅子を仕込む方法

VRC_Station - VRChat 技術メモ帳 - VRChat tech notes

 

【課題】

sitする位置によってビューポイントが変わったりしてるっぽい…?
あとconstraintのワールド固定は出した本人が動くとプルプルしちゃいますね…

改善できたら記事に追加しておきます。

  

【結び(その他宣伝)】

今回どのテーマで書くか悩みましたが,クリスマスに生かせるかなぁ?というものをチョイスしてみました.

他のテーマもどこかで発表していきたいですね…

  • 2人が近づいた時だけ見える指輪シェーダー
    →某ワールドに影響されてできた代物
  • バーチャルとリアルでVRChatの同人誌出した話
    →CVket1とVLifeで「××Tフォースの本」というのを出しました.
    https://www.v-market.work/ec/items/2985/detail/
    https://4dcube.booth.pm/items/2592128
  • フォトグラメトリで部屋をVRCワールドアップ
    →最初これにしようと思ってたけど,去年のアドベントカレンダー見たら同じ内容書かれてたのでアドベントカレンダーとしては見送り.
    ワールド公開してますきてねきてね.
  • デスクトップ勢に膝枕してあげられる機構
    →これ.
    やってる内容としては自分発祥の新しいものではないけど,組み合わせる事によってそれぞれの技術をどう生かすかってところを「膝枕したい」っていう願いを通して実現できたと思う.
    邪(よこしま)な目標が技術力をアップさせるので,欲望駆動大事だなって思いました.

 

VRChat Advent Calendar 2020次の日の記事はこちら!↓

blog.bootjp.me