VRChatパブリックログ

VRChatでの体験を紹介します

VRChatパブリックログ%180810

ぼったくる商店

f:id:mekokka:20180810001517p:plainXacsさんのワールド。ファンタジー集会所のようななんとなくだべるのに適したワールドを目指してるそう

f:id:mekokka:20180810001752p:plain喫煙所もある。とても博愛的。

f:id:mekokka:20180810001944p:plainワールド巡りしていたらフレンドとばったり出会う。ここはAgidonさんのアバターワールド。可愛い改変ナックルズがメインの珍しいワールドです。

f:id:mekokka:20180810002829p:plainぼったくる商店の中庭の水面が特定のアバターでしか見えない不具合を発見。フレンドがHE-MANタンクなら見えることを発見し、結果商店は戦車に蹂躙された。

f:id:mekokka:20180810003149p:plain撮って!撮って!ってせびるので撮りました。溺れてるウガンダを表現しているそうです。

f:id:mekokka:20180810003323p:plain装甲戦闘車両の乗り入れは禁止に。

f:id:mekokka:20180810003539p:plain次に入店拒否される物が何か分かった気がする。

f:id:mekokka:20180810003658p:plainここが新しいウガンダ集会所ね!

f:id:mekokka:20180810003811p:plain

ビッグブッダ

f:id:mekokka:20180810004054p:plain開店前から連日なかなかの動員ですよ!

f:id:mekokka:20180810004229p:plain今のところの品揃えはタバコ一本とうちわと画力汁の三種。冬将軍は店番が堂に入りすぎている。

任意のメッシュを自身にだけ不可視にする方法【VRChat技術情報】

自分のメッシュが邪魔で前が見えない問題

f:id:mekokka:20180807134652p:plain
お分かりいただけただろうか・・・。アバターの目の前のキューブ、鏡に映っていても自分には見えないのである!

よくボクセルアバター作成者から、「カメラの位置(VRC SDKのView Positionのこと)を工夫しないと自分のメッシュで前が見えなくなる。でもカメラずらしすぎて操作性が悪い」という話を聞きます。今回はそのような場合に、自分の任意のメッシュを自分のカメラにのみ映さないようにする方法を紹介します。

今回の情報は、Unityのテクニックと言うより、VRChatの隠れ仕様のようです。(詳しくないのでよく分かりません)

今回は私のフレンドのXacsさん(@xacs_i)がこの仕様を発見して教えてくれました。

隠れ仕様解説

まず上の画像のような自分に見えないキューブの再現方法を説明します。

f:id:mekokka:20180807135516p:plain

こうです。妙なことは全くしていません。アバターのアーマチュアのHeadボーンのオブジェクトの下にCubeを作って置いただけです。*1

このままアップロードすれば、自分には見えず、他人からは見えるオブジェクト(メッシュ)になります。

つまり、Headボーンのオブジェクトの下にメッシュを置くと、自身のカメラからのみ不可視になると言うことです。

これは自身の一人称カメラからのみの不可視化で、鏡とか、例えばVRモードの自撮り用カメラなどには通常通り映ります。

これをどうアバターに活用するのか?

冒頭でも例に出しましたが、カメラに自分の顔のメッシュや前髪が映り込んでしまう問題の解決策になります。

f:id:mekokka:20180807140344p:plain

つまりこういうことです。頭周りのメッシュがカメラにかかってが邪魔な場合、邪魔なメッシュをHeadのオブジェクト以下に移動させましょう。(このアバターの場合Eye、Face、Hairのメッシュ。Bodyは自分の腕や体なので表示させたまま)

このとき注意が必要です。メッシュのオブジェクトをアーマチュア内に移動させるとPrefabが編集されます。アバターを構成している元データの方を編集することになります。同じプロジェクトファイルで同じ元データを参照しているアバターは全て影響を受けて同じ変更が加わります。(これがPrefabの機能です)

念のためあらかじめPrefabのバックアップを取っておくと良いと思います。バックアップの取り方はProject画面の該当ファイルを左クリックしてCtrl+Dです。

あるいは同じPrefabを参照しているアバターのうち、一つのアバターのみ変更したい場合はHierarchy上のアバターをProject画面にD&Dすれば新しいPrefabが生成され、そのアバターのみ新しいPrefabに紐付けされなおします。これで編集してもひとつのアバターにしか影響を及ぼさなくなります。

自分のメッシュが映り込まないようにView Positionを大きく動かすと、VR、デスクトップ共に操作性が著しく悪化します。この方法で頭の周りのメッシュを不可視化すれば、カメラの位置のZ座標は0でもよくなります。

ボクセルアバターの場合は恐らく全身一つのメッシュになっていることが多いと思いますが、頭周りの消したいメッシュをモデリングソフト上で分割しておけば、今回の方法で自分から不可視にすることができます。

ちなみに

この仕様の発見者のXacsさんはたばこの3Dモデルを販売しています。

100円と大変リーズナブルなので、「今回の情報で助かった~!」って人は以下の3Dモデルを購入することで本人に直接お礼ができます。いい時代ですね!

booth.pm

 

*1:Headの下に空のオブジェクトを作ってさらにその下にCubeを置いても同様でした。Head以下のどこかならいいようです

光の当たり方を調整するTips【VRChat技術情報】

顔だけ暗い、目が真っ暗になるなどの問題

f:id:mekokka:20180806152819p:plain
テクスチャの画像上では顔と体の肌色は同じ色だが、光源の影響で色あいに段差ができている

光源とその影響に関する計算は、オブジェクト(メッシュ)ごとに行われます。

なので、顔と胴体のメッシュが分かれている場合、ワールドによっては画像のように顔と胴体の色が違うかのように表示されてしまいます。

フルスクラッチアバターならば頭と胴体のメッシュを統合してしまう方法もありますし、そのような影響を受けにくいシェーダーに切り替える/書き換えるという方法もありますが、メッシュ統合は作業性が悪化しますし、シェーダーで対応するのも万能の解決策ではない上、技術的敷居が高いです。

でも実際には、Unity上で簡単な設定をするだけで、これらの問題を解決できます。

今回はその方法を紹介します。

今回は本当に簡単に設定できるので、Unityの知識が無い人でも分かるようにできる限り細かく説明します。

なにをいじれば良いか

3DモデルをUnityのHierarchyに放り込むと、いくつかのオブジェクトが入れ子状に配置されると思います。

初心者にはどれがメッシュにあたるのか理解しにくいと思いますので、まず見分け方を説明します。

f:id:mekokka:20180806153955p:plain

これが私のアバターを読み込んだときの表示です。赤の点が打ってある物がメッシュのオブジェクトです。大体がアバターのオブジェクトの一番上の所に配置されているのが特徴です。しかし、3Dモデルによってはまれにアーマチュア(このアバターの場合Bonesと名前がつけられたオブジェクト内)の中にメッシュが格納されている場合もあるので注意して下さい。*1

見分け方は、Hierarchy上でそれぞれのオブジェクトをクリックしたときにInspector画面にでてくるコンポーネントの構成です。

f:id:mekokka:20180806154426p:plain

Skinned Mesh Rendererというコンポーネントが配置されているオブジェクト、これがメッシュが格納されているオブジェクトとなります。

どういじればいいか

さて、先ほど上で示した画像はSkinned Mesh Rendererのデフォルト設定です。お手元のアバターのメッシュの設定も上のようになっているのではないでしょうか。

今回は光の当たり方を調整したいので、当然Lightingの項目をいじっていくことになります。

主にいじるのは、「Anchor Override」「Cast Shadows」「Receive Shadows」です。*2

・顔と胴体の光の当たり方を一緒にしたい場合

f:id:mekokka:20180806155140p:plain

FaceのメッシュとBodyのメッシュの光の当たり方を一緒にしたい場合、上の画像のようにします。

Anchor Overrideの項目に、BodyのオブジェクトをD&Dで指定しました。

(あとで判明したのですが、ここにはメッシュのオブジェクトではなく、アーマチュアの適当なオブジェクトHeadやChest等を入れたほうがライティングが安定します。)

こうすることでFaceのメッシュはBodyのメッシュと同じ座標を基準に光の当たり方を計算するようになるので、胴体と顔の色あいに段差ができることは無くなります。

 

・目が異常に暗くなってしまうことがある場合

こちらは原因が様々考えられますが、デフォルトでは影の影響を受ける設定になっているため、これによって眼球(アニメ調の場合ほとんどがパラボナアンテナ型の凹面)がまるまる影におさまってしまい、その結果黒く変色していることが原因の一つとして考えられます。そこで、ここでは眼球に限り影が発生しないように設定してしまいます。

f:id:mekokka:20180806155907p:plain

Cast ShadowsとReceive Shadowsを両方オフにしました。これで影の影響を受けなくなります。Cast Shadowsは影を発生させるかどうかなので、おそらく直接は関係ありませんが、念のためという意味と、どうせ奥まっているメッシュの影の計算をしてもリソースの無駄なのでオフにしました。

f:id:mekokka:20180806160326p:plain

こんな感じに色合いに段差ができなくなりました。めでたし。

*1:DynamicBoneと書いてあるものは私が作業の都合で追加した物なので気にしないで下さい

*2:その他の設定でも様々に変化しますが、この記事では解説しません。実際に試してみて下さい

VRChat著作権に関する違反報告のやり方

VRChat上で著作権侵害が発生した場合の対処方法

この記事は、VRChatユーザー、または一般の3Dモデルやイラスト、音楽等、VRChat上で流用されうる作品の著作者の方々に向けた記事です。

VRChatユーザーでなくても理解しやすいよう気を付けて記述するつもりですが、もし分かりにくいところがありましたら、コメントなどで質問して下さい。

この記事は、私自身がVRChat運営に著作権侵害の報告をした経験を元に作成しています。たった一回の経験が根拠ですので、対応した担当者の違いによってこの記事の記述と異なることが起こる可能性はあります。あくまでも参考という形にとどめておいて下さい。

私が経験した件については以下の記事で紹介しています。

VRChat運営への報告方法

まず、あなたの立場によって必要な手順が増える場合があることに注意してください。

・あなたが著作権侵害を受けている著作者本人である場合

特に追加の手続きは必要ありません。

・あなたがそれ以外の第三者である場合

基本的にあなたには著作権侵害を訴える権限がありません。著作者本人から直接代理人に指定されている必要があることに注意して下さい。代理人の指定に書類等は必要ありませんが、独断で行うために自身を代理人と偽って行動することのないようにしましょう。

 

著作権侵害に関するVRChat運営への申し立ての受け付けメールアドレスは以下です。

copyright@vrchat.com

運営へのメールは日本語でも問題ありません

ただし、メールの書式が定められているので、以下の書式通りにメールを作成して下さい。

1. A physical or electronic signature of a person who is authorized to act on behalf of the applicable copyright owner.

(メール送信者本人の本名)


2. Identification of the copyrighted work(s) that you believe is/are infringed by content on VRChat.

著作権侵害にあたるVRChat上のコンテンツを提示する項目。スクリーンショットを示すのが適当。指定したコンテンツがどのように著作権侵害にあたるかなどを補足説明すれば十分。日本語でもかまわない。)


3. Information that will allow us to contact you (such as an address, phone number, and an email address).

(連絡先として、メール送信者本人の住所、電話番号、Eメールアドレス)


4. The following statement: “[I] have a good faith belief that use of the material in the manner complained of is not authorized by the copyright owner, its agent, or the law.”

上記の声明に同意したことを示すため、””で囲まれた文章をコピーして入力する。

5. A statement that the information in your notice is accurate, and under penalty of perjury, that you are “authorized to act on behalf of the owner of an exclusive right.”

(このメールの内容が正確なことを宣誓し、著作者ならば自分が著作者本人であること、代理人ならば著作者から直接代理人に指定されていることを宣誓する項目。日本語でもかまわない。)

The above requirements can be found in Section 512(c) of the United States Copyright Act.

 VRChatユーザーでない著作者が報告する場合の問題点と解決策

VRChat上のコンテンツを確認するためには、VRChatのクライアントとアカウントが必要です。クライアントはPCの要求スペックも高いため、著作権侵害を示すための材料を集めるのが困難な場合が多いと思います。

考えられる対応策はいくつかあります。

 

1.直接VRChat運営に相談する

VRChat運営は日本語でもコミュニケーションが可能です。(あちらからの返信は英語ですが、こちらの日本語は通じています)著作権侵害の事実までしか知らず、必要な材料が揃えられないことを相談すれば、何らかの方法を提示してくれるかも知れません。

私の経験上、VRChat運営のサポートは迅速で丁寧です。時間帯にかかわらず数時間でメールの返信や対応をしてくれます。

メールでの相談は総合窓口の

feedback@vrchat.net

に送信すると良いと思います。適切な窓口へ案内してくれるはずです。

 

2.VRChatユーザーに協力を依頼する

VRChatユーザーの知人や、協力を申し出てくれている人がいればその人に調査と材料集めを依頼することをおすすめします。著作権侵害の状況に対して、どのユーザーを訴えるべきかなど密に打ち合わせることができる上、運営が対応した後、実際にどのように効果を発揮したかなど、事後についても詳細に知ることができます。

 報告メールに記載する個人情報についての注意

先ほど示した書式に含まれる本名や住所等といった個人情報は、アメリカの法律に基づいて一般に掲示される規定となっています。(それに基づいて、訴えられた側は異議申し立てを行う仕組み)ここで言う法律は具体的にはデジタルミレニアム著作権法のことで、この手続きはノーティス・アンド・テイクダウンと呼ばれるものの一環です。

個人情報が公に掲示されるリスクがあることを理解して下さい。

 

伸縮するワイヤーの表現方法(&物置きの応用)【VRChat技術情報】

のびのびワイヤー

上から糸で吊られている操り人形、電磁力で引き寄せる武器、油圧ロボットの間接部分。伸縮し、アバターの動きに追従する糸状の物体を表現したい場面はしばしばあります。

今回は以前紹介した「物を置く方法」を応用して、指で触ったらねばーっと粘液がくっついてくる表現を作ってみます。

f:id:mekokka:20180804024437p:plain

まずは物を置く方法について参照

今回はこの記事で作成したアバターを改造します。記事に従って作成する場合、上記の記事のアバターをまず作成して下さい。

ワイヤーのモデルデータ作成

Blenderの画面で説明します。

平面を細長くしたものを二つ、十字に並べます。シェーダーで両面表示にすればいいので、頂点は全てで8つのデータになるはずです。私はなんとなく中央でループカットしましたが、基本的にはゆがみやすくなるだけで特に意味はありません。

f:id:mekokka:20180804022202p:plain

そして図のように両端にボーンを配置します。ボーンの長さは今回意味がないので適当に見やすい長さにして下さい。それぞれのボーンには親子関係が無いようにしています。それぞれ独立して位置を操作する使い方をするので、これが一番スマートです。

f:id:mekokka:20180804022705p:plain

ここまで書けば言うまでも無いですが、それぞれの末端の頂点を対応するボーンに対して1でウェイトを塗ります。

f:id:mekokka:20180804022902p:plain

f:id:mekokka:20180804022921p:plain

テクスチャのためのUV展開をすればモデルデータは完成です。

Unity上の設定

Unity上の作業に移ります。上の記事で作成したアバターを改造していきます。

最初に「Release_Object」の下のCubeは不要なので削除します。

f:id:mekokka:20180804023157p:plain

次に、先ほど作成したモデルをインポートし、アバターのオブジェクトの中のアーマチュアの外側に置きます。実際は置く位置はどこでも良いです。たくさん配置する場合は空のオブジェクトを作ってフォルダがわりとし、中に入れて整理してもいいでしょう。

水色になっている「spark」というオブジェクトはメッシュデータです。このオブジェクト無効化することでデフォルトで非表示にします。ワイヤーのオブジェクト全体を無効化すると、表示だけで無く位置座標の計算も止まってしまうため、再度表示したときに表現が破綻してしまうので注意して下さい。

f:id:mekokka:20180804025516p:plain

アーマチュアの中に入っている「start」と「end」がBlender上で配置した二つのボーンです。これを人さし指の先端あたりにくるように配置します。完全に重なるように二つのボーンを同じ位置に配置して下さい。*1

次にワイヤーのアーマチュアコンポーネントを追加します。

f:id:mekokka:20180804030956p:plain

f:id:mekokka:20180804031011p:plain

「L.Hand-Grab_Sistem」の名前が「Index-Grab_Sistem」に名前が変更されていますが。名前の通り、該当のオブジェクトは人さし指のボーンの下に配置し直しました。

再生ボタンを押して、ワイヤーのメッシュを有効化して表示状態にし、Release_Objectの位置を動かして動作確認しましょう。テクスチャが伸縮していれば設定完了です。

あとは上の記事で実装した物を置くアニメーションに、ワイヤーのメッシュの有効化するキーを追加すれば実装完了です。

初期状態では何も持っていませんが、作成したアニメーションをアニメーションオーバーライドで呼び出すと、その時点の人さし指の位置が粘液の始点となり、指をひくと糸を引くようになります。

常に糸に繋がれているキャラクターを表現するならば、表示/非表示のアニメーションはそもそも必要ありません。その場合は初期状態ででメッシュを有効にして表示する設定にして下さい。

f:id:mekokka:20180804031946p:plainf:id:mekokka:20180804032005p:plainf:id:mekokka:20180804032042p:plainこれは退席状態で脱力している姿がかっこよすぎる人

*1:今回は伸びる粘液なのでこうなりますが、肩と手が糸で繋がっているキャラクターにしたいなら肩と手それぞれつなげます。編集画面での位置関係が保持されるのように動くので、表現によって配置は換わります

VRChatパブリックログ%180801

お隣の子供の成長日記みたいなもの

f:id:mekokka:20180801205437p:plain獣とはいえ素体のまま持ってくるのはちょっとまずくないですかね。せめて色ね。

f:id:mekokka:20180801205627p:plainやっぱりCrothコンポーネントはダメ

f:id:mekokka:20180801210226p:plain恵まれない子に布を分けてやる透明人間

f:id:mekokka:20180801210559p:plain他所の子の成長は早い

f:id:mekokka:20180801210716p:plain問:マイクミュート勢なのにリップシンク動いてるのはなぜ?

f:id:mekokka:20180801210906p:plainウガンダロボ。発進。

f:id:mekokka:20180801210951p:plainウガンダロボ、勝てない(確信)

f:id:mekokka:20180801211047p:plain前見ろ。

f:id:mekokka:20180801211209p:plain服を買うための服。「それな」

f:id:mekokka:20180801211454p:plain技術勢はいつみても「わからん」

f:id:mekokka:20180801211856p:plainけもフレ3期待ってます。

f:id:mekokka:20180801212352p:plain君たちはどうゆう集まりなんだっけ?

f:id:mekokka:20180801212514p:plainドリアード二人組。二人ともマイクミュートなの、なんかすごい。

f:id:mekokka:20180801212625p:plainじゃれ合っているうちに変化解けてる

f:id:mekokka:20180801212818p:plainウガンダスーパーお絵かきタイム。

f:id:mekokka:20180801212951p:plainやっぱりウガンダってサイテー。

f:id:mekokka:20180801213039p:plainそんな顔してもダメ。

無限に茂る葦の丘

 私が正義感から行動したのかと問われれば、それからは最も遠い動機であったと告白する。ここの存在からして自明だろう。記事のテーマに使えそうというのが一つ、そしてなにより、私にそれができたからというのが一番大きかった。

 妻の肖像を書いて展示していたものが、何者かの手によって複写され、ちり紙に印刷された結果、くずかごにうずたかく妻の顔が積み上がっている。それを悲しく思う気持ち、その気持ちに従ってちり紙を破棄させる法の理念は理解できる。しかし私はそれらを信奉してはいない。

 知的財産権周辺の法は、基本的に矛盾をはらんでいる。人の知的活動を保護するという名目の上で、その実人々の知的活動を抑圧している。知的活動の成果物は、本来は人類全体に還元されてはじめて本来の価値を発揮できる。それを個に縛り付けることで失われる価値を、この法は軽視しすぎている。

 ではそれならなぜ行動したのか。と自問すれば、それこそ自身の知的活動のため。つまり好奇心を満たすためだということになる。今回の事件は、既に何度も再現された光景と全く同じ状態で停止していた。観察する限り、このまま立ち消えていくだろうことも容易に想像できた。しかしこのとき自分には、この状況を変化させるだけの力があった。以前までとは違う状況を作り、新しい景色を見てみたいという欲求を抑えるのは困難だった。幸い、法は私に味方をしていた。となれば、行動を抑える道理はもはやなかった。

 実行は想像よりはるかに簡単だった。なんのよどみも無く事が運び、期待通りの結果を得ることができた。しかしこの行動を完了させる段で、私は重大な見落としをしていることに気づかされた。

 くずかごにうずたかく積み上げられた彼の妻の肖像は、彼女の夫の肖像だったこと。そのことを理解していたのに、そのときまで、私は彼女の存在を意識することができなかった。

 彼の友人達はくずかごを見ても何も感じないだろう。彼らの目にはただの冒涜だと映るはずだ。しかし私は彼女の努力を推し量ることができる。情熱と愛情を感じ取ることができる。私もその実、あのくずかごのことが好きだった。

 なぜ法は彼だけの味方をするのだろう。彼女の愛情を否定するのだろう。彼はなぜくずかごを許せなかったのか。彼女はなぜちりがみを使ってしまったのか。いろいろな感情が湧き上がるが、結局この状況を生み出したのは自分自身だという事実が、すべてを空しくしてしまう。

くずかごはもうない。

彼からは感謝されたが、彼女の事を思うとただ悲しかった。