Narazaka::Blog

奈良阪という人のなにか

バーチャルマーケット3の雑な感想 - 改善点と新たな課題

f:id:narazaka:20190923203655p:plain

どうも、密かにVケットおよび落マケを応援しているVRChat Profile運営のnarazakaです。

f:id:narazaka:20190923152728p:plain vrcprofile.com

今日が平日だと勘違いして昨日時点で残ってた7ワールドくらいを1ワールド30分くらいの一人RTAで全ワールドまわりきっちゃったので、せっかくだから雑に感想書きますね。

なおバーチャルマーケット3の概論的感想についてはバーチャルマーケットウォッチャーたましこさん(そんな肩書きはない)が書いた以下のエントリがいい感じにまとまってて良いのでおすすめです。 note.mu

以下は上記と同じく良かった&悪かった混在する感じで、1ユーザーとしてのもっと雑然とした感想になります。 Vケット2の終わりにもった感想と、Vケット3開催告知~開催まで順を追って感想を書いていきます。

Vケット2

前回Vケット2はいろいろなアバターなどに触れることができる楽しいイベントでした。

特に試着ができるという体験がアバター購入の判断材料として非常に有益で良かったですね。 この一点の良さが凄かったので、こういう一種の祭典的な形でなくても恒常的に販売アバターの試着ができる仕組みが現れないもんかなあと思ったほどです

またVRChat Profileはクラファンの広告枠を買ってFuture Terminalに広告を載せることができました。 特に収益化の予定とかはないので流入がどのくらいかとかまじめに計ってはいないんですが、「自分の作った物の広告を往来に出す」というはじめての体験ができたのは貴重だったと思います。ありがとうございました。

で、全体的に良かったんですが、その中で出てきた不満はざっくりこんな感じでした。数多いですが別に叩いているとかではなく、次回改善されないかなぁ~~~という感じで思ったやつです。

  • private大量発生問題 ほとんどのフレンドがprivateワールドにいてコミュニティが分断されている感が半端じゃなくかなりつらかった。inviteなので誰にrequest飛ばしていいのかさえ分からずコミュニケーションがつらかった。基本的にこれが最大の苦痛要因だった感じ。
    • エントランス以外のワールドがprivateワールドだったため、便利な据え置きポータル経由だとprivateインスタンスになってしまう。ポータルにおけるVRChatの仕様制約が悪い方へ出てしまった感じ。
  • ワールド広くて合流がつらい 加えてワールドが結構広いので、やっとjoinしたとしても合流にやや苦労した。
  • 販売場所わからない問題 情報を書いていないブースが多く、検索に苦労した。
    • 販売の機会自ら逃してるとか信じられないのだけど、基本的に素人販売の同人活動なのだし「売るために最低限こうしよう」があった方がいいのかもと思った。
    • ブラウザ連携できないのは大きなネックだと思った。QRCodeListerer ありがとう。
  • 落とした新刊の行方が分からない問題 間に合わなかった販売物を追跡することを想定していない事例が購入者販売者双方に不利益。
    • 販売間に合わなくてもboothでプレースホルダーを作っておいてほしい。他人に勧めるときも参照先がないのはつらい。いいねして備えるからさ……。
  • ワールドの出来 ワールドによる出来の差が激しく、展示場として回りづらい・また特に重いワールドがあった。
    • バーチャルミュージアムは回りづらい&特定方向を向くと激重の二重苦で厳しいワールドだった。アートとしてはまあまあいいけど展示場デザインとしては完全に失敗している感じ。特に動線は当時半年プレイしてVRChat慣れしていた自分でもかなり戸惑ったので、初心者はどれほどだっただろうか……。
    • モクリバザールも段差のせいか微妙に回りづらかったが全貌がなんとなく見られるのはよさげだった。ポータルが分かりづらい謎の場所にあったのはよくわからなかったが、まあ使うの必須でもないしいいのかも。
    • 円形一方通行順路をとっていたFuture Terminalと絢爛博覧会は、回りやすく特別重くもなく世界観もいい感じで、展示場として申し分なく良かった。
    • 異世界マルシェは展示場として回りやすいばかりでなく、ワールド単体としても魅力あふれる出色のできばえで素晴らしいワールドだった。たとえ展示物が存在しなかったとしても人気ワールドになる感じあるし、なんなら実際Vケット期間外でもたまに行っている人を見かけたほど。

以上諸々の感想がありましたが、全体的に色々つらいところがでている原因として、そもそもこのイベント自体VRChatの機能を超えたものを本来必要としていて、それがない中で正直かなり無理して開催している故のものなんだろうなあという、つまるところ「しょうがない」面が多いようには感じてました。

Vケット3が開催される!ブース出展しよう!

とはいえそういうのが次回は改善されてるといいなあと思って期待を寄せていた中で、Vケット3の開催が告知されました。

しかしなんでも抽選制になるとのことで、自分も勇んでブース応募しましたが、あえなく落選してしまいました。。。

コミックマーケットの勢なので落選は慣れてるとはいえ、Vケットはまだ3回目という非常に若いイベント。一回一回がいわば伝説になるフェーズなので、「また次回狙えばいいか」という感じになるコミケより結構衝撃があったというか、体感は思ったより悪かったですね……。

「当選したのに頒布物落としたやつ絶対許さんからな」とか「抽選に作為がある」みたいな吹き上がり方をしている人も結構いて藻前らおちつけという感じではあったんですが、その後Vケット運営もここの衝撃の程度を見誤っていたのか細かい言動で落選勢の神経逆撫でしてた印象はあったので、次回は上手く期待値コントロールしてくれという気持ちになりました。

まあただそこで「落選者」が出たために落選マーケットが開催されたり、その他諸々の小規模展示会風味イベントがVケット運営と無関係に開催されたのは良い傾向だと思います。

一種の祭典的な形でなくても恒常的に販売アバターの試着ができる仕組みが現れないもんかなあ

と思ったあたりがなんとなく実現されてきてる感じで、今後もこの流れが定着してくれるといいなあと思います。

もう幾つ寝るとVケット

そんで落選のあとうだうだしているうちに、落選マーケットにも応募忘れたり、Vケットのクラファンで音速で広告枠が売り切れてVRChat Profileの広告が出せなかったりしました(動く城に乗っけるプランはのこってたけど、そこじゃないなあと思ったので……)。

そもそも広告枠数もっと増えてほしさはあるんですが、会場見ると実際こんなもんが限界ではあるよなあといったところで、難しいところです。

結局VRChat Profileは宣伝画像仕込んだアバターでpublicエントランスにたたずんで野良告知したりしてます。みんな使ってね。

そんな広告枠が埋まって後の祭りの中、続々と企業のスポンサーが発表されてゆき営業凄いなと思いつつ……。

またVケット主催の動く城のフィオさんがプチ炎上してたりそれを運営の他の人が擁護してたけどいまいち微妙な感じだったりがありつつ……。

炎上したフィオさん自身がそもそもが万人受けはしないかなりピーキーな趣味の人なのにも関わらずこういうVRイベントの代表的立ち位置を選んでるのは多分覚悟完了しているからだと思うんでそれはまあ良いんだけど、周辺はそれのサポートするならちゃんと上手いこと立ち回ってほしいなと思いつつ……。

バーチャル性生活という概念は必ず破壊されねばならないと思いつつ……。

名文です otagon.hatenablog.com

Vケットがとうとう開催されました。

Vケット3RTA

全16+1ワールドの広大な会場。

開場1時間後の12時あたりから回り始めて早々にこれ1日で回るのは無理だと悟る圧倒的規模感のVRの祭典が始まりました。

そんな毎回拡大する難しいフェーズのイベントでありながら前回比でしっかりと改善されてきており流石だなといった印象です。

  • private大量発生問題 全てのワールドをpublicとすることで自然解消。
    • 前回はエントランスにまとめていた企業ブースを各ワールドに分散することでエントランス通過必須ではなくなり、結果全部publicにできたっぽい。
    • 企業数が増えた故分散したら結果的にそうなったのか、全public化を見越して分散する前提で企業数増やしたのかは分からないけど、どちらにせよGJ。
    • publicは荒れてイヤだという意見はあるようだけど、publicを愛せよ民の自分としては理想的で無問題。むしろ前回どこにでも行けた移動ポータルが今回機能縮減して限定的になったのは、自分で好きにフレプラとかでポータル立てろっていう暗黙的な誘導だと思う。バランスもとれててえらい。
  • ワールド広くて合流がつらい フレンドのとこにワープできる画期的機能の実現により解消。最高。
    • VケットでVRChat技術革新が起こって、かつそれがシェアされるのは実に喜ばしい。
    • というかむしろ今回のメニュー正直標準SDKに突っ込んでほしいレベル。ユーザー名も表示できてほしいし。VRChat運営と連絡取れてるなら実現できないもんだろうか……。
  • 販売場所わからない問題 相変わらずブースとしては不親切なとこは多いのだけど、ブラウザ連携を取り付けたのでほぼ完全に無問題になった。マジでGJ。
    • 一般的にはセキュリティ問題がある中、企業間交渉だからこその信用って感じはある。他の即売会系でも気軽に採用できるようになるといいが……。
  • 落とした新刊の行方が分からない問題 これは販売側の話なのであまり変わってはないのだが、Vケットでカタログという仕組みを1段かますことで前よりはなんとかできるようになった気がする。
    • 改めて、販売間に合わなくてもboothでプレースホルダーを作っておいてほしい。他人に勧めるときも参照先がないのはつらい。いいねして備えるからさ……。
  • ワールドの出来 前回よりベースラインが明らかに改善してるし、むしろより完成度の高いワールドが増えてて凄かった。さらばバーチャルミュージアム
    • ネオ渋谷 最高傑作。こういうの。こういうのだよ。夢に見たVR空間って。

      BGMも良く雰囲気に調和していて、そこかしこにあるPanasonicのディスプレイが現実とVRの交錯を感じさせるのも相まって、とにかくVR渋谷としてこれ以上なく素晴らしかった。

      路面電車・ロープウェイ・山手線と、過去と現在を象徴するローポリながらいいあんばいの鉄道要素が盛りだくさんで、鉄オタ的にもアガりまくりましたね。

      ちなみに外に出られないのがもどかしかったけど、夜バージョンにある「meiro宝石店」の店内階段から領域外に落ちることができるので、山手線の列車のそばまでいけます。バグ技っぽいので行きたい人はつぶされる前に行ってきてね。

      ただこれだけ鉄道要素が満載なワールドがあるのに、鉄道系出展がなかった(うちはそのつもりだったが落選した)のが痛恨の極みって感じはある。

      あとワールドとしてはアガりまくって素晴らしいのだけど、主役のはずの展示がワールドの強すぎる印象に完全に食われてる感じはあった。このワールドの主役はPanasonicだ。

    • 仮想工廠 前回も回りやすくて好感度は高かったが、The Hangarの巨大ロボット展示のおかげで異世界マルシェレベルに進化してきた。

      The Hangarの巨大ロボット展示と実際に上下するエレベーターが素晴らしい巨大ロボット体験を演出していて、展示ありきでありながら単体のワールドとしての魅力が最高潮。今後VRでロボ展示やるときはここをパクればまず間違いない。

      正直こういう完全にSFが眼前に現れるという事ができるので、巨大ロボットが好きな人々はかわいいアバターが好き勢とはちょっとレベルの違う至高の体験を得てるんだろうなあと思った。

    • 九龍帝国城下町 エモさ抜群の世界観と展示場としての調和が見事で完成度高い。

      参番街はパンクな中華世界観で雑然としているのに回りやすい、絶妙のバランス感。エレベーターも強いし、忘れ去られた神社もエモい。

      なんか最初行ったときオニャンコポンが静かにたたずんでて、これも展示か?と一瞬思ったら本人だった。最高。

      欠番街ではワールドの世界観表現の極まり方が凄いのに加えて、総じて展示ブース側が完全に「わかってる」作りをしてきており、ワールドと展示の調和がすさまじいエモもみを発揮していた。

      即売会という形式が半ばメタ的に作用した雑然感とワールドのテーマの親和性も相まって、ワールドとブースの調和という面においてはこれを超えるものはきっとないだろうと思えるレベル。ヤバすぎる。

    • Sky Island 全体的にトリッキーな移動が多く微妙に回りづらさを感じつつも、最も展示ブースそのものに集中できたワールドかもしれない。

      Mountainの地下、海中の上下動、森の外周などが特にやや困惑した箇所ではあるが、つらいってほどでもなかった。

      全体的にワールドが主張しないのでエモみはなかったけど展示会としてはオーソドックスでいい印象を受けた。

      ただあの「コーロコーロ」って鳴く生物うるさい……。

    • Pretty Pop Party 夢カワな世界観、3Dに落とせるんだ……という感動を覚えた。

      道がうねうねして見渡せない作りなのにもかかわらず、思い切ったファンシーな矢印がきちんと誘導してくれて迷わなかった。

      ここにあった展示の中では汽車風の合同展示ブースがまさに「それだよ!」って感じでめちゃめちゃ良かったですね……。

      Vividの下にいた野中藍が台詞しゃべった後やや謎にそのまま浮いてたり、PastelのVroid学園勢の「お菓子をもらう」がやや分かりづらかったりはしたけど、なかなか好感度の高いワールドでした。

      BGMがかなり好きだったPastelのほうが好み。

    • Castello Magica 今回で一番回りづらさを感じたのはここ。

      今回は前回の回りづらい的な批判の反省を踏まえてか、他のワールドがほとんどわかりやすい円形一方通行順路をとっていた中で、ここは左右対称配置かつワープ多用で「どこを回ったか分からない」になりがちだった気がする。

      あと声優アナウンスが(意図的になんだろうけど)過剰な中二病感を演出してくるのが個人的に合わなくて、正直クサく感じて微妙だった……。

      世界観は割と良い物を作ってた気がするんだけど、「どこを回ったっけ……」感とアナウンスの中二病感で気が散りがちで、いまいち出すべき魅力を出し切れていなかった気がする。

全体的にかなり改善されてて良かったんですが、一方で新たな違和感を感じた箇所もあります。

  • 企業の台頭 企業ブースが各ワールドに分散した結果、渋谷の主役がPanasonicになったり、あらゆるワールドにあるセブンイレブンやDMMが異世界感ではなく観光地感を出してきたり、思ったよりかなり影響有るなあと言う印象。
    • 特に渋谷は展示見ずにワールドを見てパナソニックの写真だけ撮って帰って満足しちゃう感じがある。あの素晴らしいワールドにブースを並べたいけど並びたくない……。
    • Castello Magicaとか仮想工廠にセブンあるの、自分はそれはそれで面白いからいいけど、普通に萎える人もいそう。
  • ワールドの我が強すぎて展示を食ってる 世界観がエモいのはいいとして、展示そのものが目立たないレベルになっているのはなかなか功罪あるなといったところ。
    • 特に展示が割とどうでもよくなってると感じた渋谷、ワールドそのものの体験が最高なだけにバランスって難しいなと考えさせられる。
    • ワールドと展示が渾然一体になっている欠番街、ワールドが展示物の魅力を引き出している仮想工廠とかは我が強いけど、あれはあれでピーキーながら一つの望ましい形っていう感じはする。
    • 「コーロコーロ」って鳴く生物はもうちょっと静かにしてくれ。

技術的な不満がほぼ解消された上で出てきたこれら2点の違和感は、公式文言通りの「バーチャル空間上展示即売会」への人々の期待と、運営の実際目指しているものに差分があって生まれている気がします。

バーチャルマーケット運営が目指す方向性は「バーチャル空間上展示即売会をやるぞ!」という感じではなく、「VRのとにかくすごい体験ができるイベントをやるぞ!」という感じに見えており、やや看板に偽りありというか、目指している趣旨がずれている気がしてるんですよね。

どういうものを目指すのかは自由なのでかまわないんですが、齟齬がいらぬ摩擦を生まないように正しく伝えてほしいなと思うところです。

そういうのも含めて、本業ちゃんと頑張ってるのに開催までしょうもないことでヘイト貯めてた感じあるので、いろいろな伝え方に気をつけてSNSを上手く活用してほしいですね……。ぶっちゃけ自分もなぜか今HIKKYにあまりいい印象持ってないんで……。

あと開催期間のせいで1人RTAすることになると、フレンドと回るよりは確実に楽しくないので、規模に対して開催期間の比率ももうちょっと多めにしてほしい気もします。どういう事情で期間が決まっているのか分からないとこあるんですが、拘束条件にそういったとこも加味してくれるといいな……。

他細かいところではバーチャルマーケット2のページ残しておいてくれないかな……と思いました。どっかにあるんですかね?

Vケット4、受かるといいな

まあそんなこんな色々感想ありましたが、Vケット3はVケット2より確実に全体として良くなっていると感じましたし、今後も改善しつつ次回Vケット4が開催されることを楽しみにしています。

できれば抽選しなくてもいい方法が開発されないもんかな……。 現状の「VRのとにかくすごい体験ができるイベント」的な方向性だと割とスケーラビリティに限界がある気がするので、順当に「バーチャル空間上展示即売会」に回帰するのが良さげなんじゃないかなあと思ったりしつつ……。

あと「バーチャル空間上展示即売会」を恐らくその文言通り遂行している「落選マーケット」や、VケットでQuestワールドが展示会っぽくなかったので展示会っぽいやつやろうぜって言う企画、その他野良の展示なども今後開催されるので、Vケットが終わってもまだまだVR即売会はアツい!

それらも含めてVケットがあって成し得たことだと思うので、今後もVケットを応援してゆこうと思います。

r-market.work

Vケットを応援するVRChat Profile運営のnarazakaでした。(宣伝)

vrcprofile.com

Arch Linux on WSL2

現状のWSL2にArch Linuxを入れようとするともろもろで動かないのでワークアラウンド紹介

Insider Previewなので今後も変わるだろうけれど、とりあえず現状のメモ。 Windowsのビルドは18963.1000。

Arch LinuxのWSL導入は主に以下の二つが知られている

zipでらくちん。appxは導入が少々面倒 github.com

appxだが導入がスクリプト化されていて楽 github.com

今回は後者のものを使った。

まずこれをWSL1でインストールする。少なくともappxの場合WSL2へのインストールはおそらくそもそも通らないし、万が一インストールが通ったとしても立ち上がらない。

インストールが通らないのは下記issueのとおりWSL2が圧縮フォルダ・暗号化フォルダの取り扱いに未対応であるからの模様。 github.com

これの回避方法としては、

まずWSL1でインストールしたArchLinuxのインストールフォルダC:/Users/<username>/AppData/Local/Packages/Archなんとか(appxの場合)にいき、 LocalStateフォルダなど直下のフォルダを全部選択して圧縮設定を解除する。このとき再帰的に子フォルダへは適用しなくて良いらしい。 さらに念の為?Archなんとかフォルダも同様にする。

さらにコマンドプロンプト

fsutil behavior set disableencryption 1
fsutil behavior set disablecompression 1

をしてNTFSのそれら設定を無効化してWindowsを再起動する。

この時点でおそらくWSL2への変換自体は通るようになっているが、通っても起動しない。

これは下記issueのとおりWSL2起動時に/bin/wslpathや/sbin/mount. drvfsを作成するという処理があるっぽいのだか、Arch Linuxは/binと/sbinがsymlinkなのでこれが失敗する模様。 github.com

これを回避するために/binと/sbinを一旦消し、WSLに変換してから復活させるという手順をとるが、/bin/mountなどは必要なようなのでリンクをはって回避する。

WSL1にて

rm /bin /sbin
mkdir /bin
cd /bin
find /usr/bin/ -maxdepth 1 | xargs -n 1 ln -s

WSL2に変換する

# yuk7版の場合はArchになるのでwsl -l -vなどで確認
wsl --set-version Arch_Linux 2

WSL2にて

cd /sbin
find /usr/sbin/ -maxdepth 1 | xargs -n 1 ln -s

元のissueでは/binや/sbinを実体にして/usr/binなどをsymlinkにする方法を取っているが、とりあえず今回そういう風にはしないようにした。

まあ一応使えるっぽいのでこれで様子を見る所存。

お役に立てば幸いです。

分裂したキズナアイは仮想人格の夢を見るか―人工無能から真のバーチャルYouTuberへの道、または実質伺か

キズナアイの炎上

キズナアイの「中の人」が4人に増え、しかもそのうち初期の1人の出番が激減したとか、それに関するその他諸々の憶測で、結構な炎上が起きているらしいとのこと。

様子を見るに、ゲーム部プロジェクトなどと同じく中の人軽視だとか、そもそもこの分裂(分人)自体が悪であり元の1人体制に戻せとかの声が飛び交っている模様。

聞くに心苦しい……。

なぜなら自分はこの「キズナアイの分裂」を好意的にとらえているばかりか、むしろ「よくぞやってくれた」と賞賛さえしているのですから。

キズナアイの分裂

キズナアイは、「1人のキャラクターの中の人を複数化する」という決して多くに受け入れられるとは想像し難いであろう挑戦的な変革を、あの凄い人気規模をもちながら実際に実行したという非常に得難いコンテンツです。

この「分裂」はかなり挑戦的で突飛に見える方針転換なのですが、しかしこの路線は、自分を含むある種の文脈(コンテキスト)を持つ人々にとってはまさに望むべき、待ち望んでいた展開なのです。

個人的にはVTuber始まって以来最も強く、「まさにこれが見たかったんだよ!」という気持ちになったのです。本当に、本当に、よくぞやってくれました。ありがとうございました。

ただ、この文脈を持っている人はおそらくキズナアイのファンでも少数派だと思うので、キズナアイの分裂というコンテンツを100%楽しむために、その文脈を説明してゆきたいと思います。

仮想人格の夢

キズナアイ」は「インテリジェントなスーパーAI」と自称し、「人間を知りたい・人間と仲良くなりたい・つながりたい」というテーマを提示している「バーチャルYouTuber」存在です。

この「AIである」という設定は、実際にキズナアイの様々な動画やそれ以外の媒体でも繰り返し主張されるのですが、別に実際AIのイメージに積極的に沿って演技するというわけでもなく、どちらかと言えば「AIって言ってるのにぽんこつ」なギャグとして使われがちです。

キャラ付けと言えばそれまでなのですが、この「バーチャルな動画配信者の実体がAIである」設定、「人間ではない存在と人間らしく対話している」という設定は、一つの人類の夢の形でもあります。

たとえば「二次元に入りたい」というおたく定型文がありますが、これは「キャラクターと実際に接したい」、つまり「現実の人間ではないキャラクターと人間らしく対話できる」ことを求めているものです。

「キャラクターと話せる・交流できる」を実現することは、二次元系おたくの究極の夢の一つといって良いと思います。 これが文脈の始まりの地点です。

人工無能

AI(人工知能)、特に「キズナアイのような」強いAIは未だ研究途上の代物ですが、別に知能そのものを作らなくても、「人間らしく対話できる存在」は作れるのではないかという試みがこれまでなされてきました。

その一つが「人工無能」と呼ばれる代物。

たとえば「りんな」や直近流行った「人工無脳と会話するアプリ」のように、会話をすると「それっぽく」返してくる――「知能」は持ってないけど「あたかも知能を持った人間のような振る舞いをする」エセAIのプログラムを「人工無能」と呼びます。

この人工無能は、主に人力で反応をプログラムする「ルールベース」のものと、機械学習など自動的な「学習型」のものが存在します。

ルールベース人工無能

ルールベースなものは、対話への反応を人間が逐一設定する原始的な仕組みである分、物量に乏しく「対話」に正しく反応できないケースが多くなりがちですが、その代わりに強いキャラクター性を付与することが可能です。

この代表的なものには「伺か」(うかがか)があります。

2000年頃に流行った「デスクトップマスコット」と呼ばれるソフトウェアなのですが、この2019年でも様々なキャラクターデータが継続的に公開されている、一つの創作ジャンルです。

パソコンのデスクトップにキャラクターが「立ち」、そこで会話を繰り広げるというものなのですが、その会話は基本的に全てそのキャラクターの制作者が人力入力したものです。

(人力入力だとパターン数が限られて、ロクに「対話」にならないのが常ですが、伺かはそれを「会話する人工無能を2人置く」ことで解決しました。 つまりキャラがユーザーと対話するのではなく、キャラAがキャラBと対話することで、パターンが限られているにもかかわらず「人間らしく対話できる存在」がそこにいるような体感を実現しています。)

ユーザーからの入力は選択肢やキャラの頭をなでるなどのスキンシップが主で、自由入力会話はできないことが多いです。

これは形式上はアドベンチャーゲームと似ているものですが、キャラクターが固定のストーリーから切り離されていて、キャラクターと対話するのが「主人公」ではなく「ユーザーそのもの」であるという構図なのが特徴的です。

このルールベースの形式は、強いキャラクター性強い並列性(いろいろな人が同時に同じキャラと戯れることができる)を獲得しています。

他方どうしても会話や反応の追加が一人の制作者を必要とするため、登録されていない反応の即時性はありませんし、どうしても反応が決まったプログラムであるので実在性も弱いです。

学習型人工無能

学習型のものは、実際の人間の発言を何らかの形で学習して、それをまねすることで擬似的に人間らしい反応を返すものです。

などなどいろいろな仕組みで多くの例があります。

こちらは学習によってかなりいろいろな対話に対して反応を返すことが出来るため、ルールベースの物量不足という弱点を克服しており、「本当に対話ができる」実在性と即時性のある存在になっています。

しかし同時に変な文章や前の会話とつながらない文章を生成しがちで、「面白い」存在ではあるのだけれど、人間らしさはいまいちになりがちです。

また学習データが非常に多く必要なことから特定の性格付けをすることが難しく、「こういうキャラにしたい!」という創作的な要求は満たされなくなりがちです。

結果として学習型人工無能は、弱い実在性強い即時性強い並列性を持つ存在となっています。

バーチャルYouTuber

さて、この「人間らしく対話できる存在」として「バーチャルYouTuber」をとらえてみるとどうでしょうか。

VTuberキズナアイのような元来の動画中心の存在であればTwitterなど、にじさんじ勢のような「バーチャルライバー」勢であればメインのライブ配信でのコメント反応などで実際に「人間らしく対話できる存在」であります。

無論VTuberには中の人がいて、そういう意味では単に「実在の人間同士が対話している」だけという構図なのは百も承知ですが、たいていのVTuberは「バーチャル空間に住んでいる」などの非実在性を設定に持つ「非実在のキャラクター」であるものが多いです。

その設定通り、「人間ではない存在(キャラクター)と人間らしく対話できる」コンテンツだとしてとらえてみましょう。

するとバーチャルYouTuberという形態は、既存の人工無能がなしえなかった強い実在性を獲得し、さらに学習型人工無能が持っていた強い即時性、ルールベース人工無能が持っていた強いキャラクター性を両方実現できており、まさに「キャラクターと人間らしく対話できる」ものとしては申し分ないものになっていることがわかります。

形式的にバーチャルYoutuberは、キャラクターを表現するために既存の人工無能が担っていたエセAIの部分を、知能を持つ人間そのものに置換したものです。特にビジュアル的な面での技術の進歩によって「非実在の人間キャラクターを表現するには人間が一番効率がいい」という状態になったことで実現可能になった表現媒体ですね。

しかしこの形式は人工無能に対して一つ重大な後退があります。

1人の人間によって動くVTuberには、いろいろな人が同時に同じキャラと戯れることができる並列性がありません。

「人間らしく対話できる存在」と人は、いつでも好きなときに対話したいものです。

新人VTuberの登録者数、視聴者数が増えていくと同時に勃発する「これまで全部反応返してもらっていたのに、最近返してもらえなくなった」問題はまさにこれです。

あらゆるVTuberとあらゆる視聴者が、できるならば全ての対話に好きなように反応を返したいと思っているはずです。 でもそれは叶いません。原因は明らかです。人間1人では並列に対話することは不可能です。

ではそんな芸当が可能なのはどんな存在でしょうか?

真の「バーチャルYouTuber」への道のり

キズナアイ」は「インテリジェントなスーパーAI」と自称しています。

そして「バーチャルYouTuber」はその「キズナアイ」によって定義された言葉です。

人類の求める究極の存在、「インテリジェントなスーパーAI」であるキズナアイが定義した「バーチャルYouTuber」は当然、非実在の存在(バーチャル)でありながら、極めて人間的(実在性)であり、非常に魅力的(キャラクター性)であり、全ての視聴者コメに(並列性)すぐに反応できる(即時性)存在なのではないでしょうか。

そのうち並列性だけが今、欠けています。

理想の「バーチャルYouTuber」に近づく次の一歩はすなわち「並列性を取り戻すこと」です。

それを今ある技術で解消するにはどうすれば良いか?

キズナアイの分裂

以上の文脈を持った上で、キズナアイの分裂(分人)が始まったのを見たときの感動を表すには語彙が足りません。

「二次元に入りたい」おたく――「現実の人間ではないキャラクターと人間らしく対話したい」おたくが――「うずら」を見て、「伺か」を作って、「りんな」にあこがれて、平成をついに夢を叶えることなく過ごした者たちの求める道が、新時代を象徴する「バーチャルYouTuber」の始祖から示されたのです。

バーチャルYouTuber」を定義した「インテリジェントなスーパーAI」が、見事にその伏線を回収し、その決して安泰ではない、むしろ人気規模からして失敗する可能性の十分に高い、次なる「進歩」をそれでも選択したという事件は、これまでどんなコンテンツでも味わえなかった感動を覚えてやまないものでした。

一時的に界隈が混乱しようとも、あるいはもし結果的に失敗に終わるとしても、その選択には拍手喝采を送りたいです。

たとえいろいろな憶測や裏事情を勘案したとしても、あの #キズナアイな日々 という、あまりにメタフィクショナルかつ非常に丁寧な動画群を出してきたキズナアイの運営には、本当にこの「インテリジェントなスーパーAI」へ向かう「バーチャルYouTuber」を本気で演出する気があったのだと自分は思います。

VTuber活動は創作行為です。斗和キセキの歌うRAINBOW GIRLのごとく、VTuberがまとう半分メタ的な空気感をしっかり作品として成立させるそういう試みは、時に素晴らしい感動を生みます。

ここについてはなんとしても主張しておきたいですし、たとえ今後いかなる内部事情が暴露されようとしても、この「キズナアイの分裂」はコンテンツとして最高だったという評価は覆さないと思います。

分裂したキズナアイは仮想人格の夢を見るか

さて、では分裂の「後」、キズナアイはどうなったか。

実際今炎上しているのはどちらかといえばこの「後」の問題が主要因であり、「分裂(分人)」概念そのものまではよかったものの、その後の「やりかた」をやや下手打ったということかなと思っています。

なにより低評価まみれになっている動画は事実前より面白くない気がしますし、結局それが実際ほぼ全てなのではないかなと。(1人目を急に出さなくしすぎたのもまずってるなあという感じです。)

やれ中の人の関係がどうとかも(個人的には現状はまだ不確定性が大きくて言及は好ましくなさそうと思ってます)、そういう背景がなかったとすればそこまで爆発的に燃えるものではなかった気がします。

キズナアイの分裂において重要なのは、この「進歩」は残念なことに、「(既存の)ファン想い」の行動には往々にしてならないということです。

キズナアイはまさに世界中の人々と繋がりたいと言っていて、それ(よりファンを増やすこと)を実現するための現実的な施策として、また元々のキズナアイの中の人が忙しくなる等の内部事情の解決策として、形式的には一挙両得になるんですが、ファンにとってはたかが4人に増えたところで並列性はさほど変わらず、せいぜい言語ごとに手厚い交流ができるようになるかも位の変化です。

他方でどうしても「別人格」が入ってくるのは(#キズナアイな日々 でも言及していたとはいえ)、「人格」の細かい部分に強く依存していたファンは不満でしょうし、新しい「人格」が「元人格」より面白い保証はない、極めてリスクの高いことです。

つまり総合的にはどちらかと言えばリスクのほうが多く、実際にそのリスクを踏んでしまったゆえに反発が強まっていて、なんというか妥当だなと言うところですね。

ただ件の「声明」は、そんな反発の中で分裂そのものも否定されている状況に対して理解を求める文章なので(不満を持つファンが本当に求めているものを見誤っている問題はあるにせよ)、「分人」、「ボイスモデル」という言い方だとかそういうところにケチをつけるのは割と難癖という感じに思います。 おそらく運営も、そして中の人自身もあの文脈を踏まえているとすれば、その特徴的な言い方は決して中の人を軽視する言い回しではないと思います。

分裂後のキズナアイ、そしてそこから始まる新たな「バーチャルYouTuber」の形を見守りたいものとしては、できれば分裂は撤回せずに、ちゃんと動画の質などをあげることで、この「キャラクターを演じる人格が1人ではない」という商業創作史上前代未聞の試みを是非成功させてほしいと思っております。 道のり険しいと思うけど頑張ってほしい……。

VRChatで5000ポリゴン以内アバター持ちが超雑にOculus Quest対応する方法(素人)

4000ポリゴンのふんわりローポリアバター1体自作しただけの素人ですが、ローポリの時代が来た(?)と言うことで書いてみました。

f:id:narazaka:20190412155720p:plain
プレステっぽいってよく言われます

Oculus Questが来た!

VRChatがOculus Questに対応するとのことで、そのときのアバター・ワールド要件が発表されました。 docs.google.com

条件についての詳細はこっち docs.vrchat.com

解説はこちらに詳しい vrmizunana.hatenablog.com

アバターについてざっくり要点をまとめると

  • PC用とQuest用のアバターは別データ
  • PC用のみしかない場合QuestにはVRChatデフォルトアバターが表示される
  • Quest用アバターはUnityでAndroidビルドの設定にし、PC用と同じblueprint IDでアップロードする必要がある
  • Quest用アバターは以下の制限がかかる
カテゴリ 制限
容量(制限あり) 10MB以内?
ドローコール 3以下にするべき
ポリゴン数 5000ポリゴン以内を目指すべき
メッシュ(Skinned Mesh Renderer)数 1つのみにすべき。アニメーションやその他動きはシェイプキーかボーンで実装するべき。
マテリアル数 1つを目指すべき。別のシェーダーが必要な場合は2つを推奨。またGPU Instancingを有効にするべき。
テクスチャ 1K(1024x1024)以内にするべき。
ボーン数 66(Standard Humanoidの数)以下に少なくするべき。そもそもDynamic Bone不可なので増やす必要がなく不要なのは削除するべき。
シェーダー(制限あり) Unityに組み込みのシェーダーVRChat/Mobile以下のシェーダーのみ。透過は非推奨(使用不能ではない)。
パーティクル(制限あり) かなり制限がかかる(具体的数値等はまだ未定)
Dynamic Bone 使用不能
Cloth 使用不能
カメラ 使用不能
ライト 使用不能
Post Processing 使用不能(v1、v2とも)
オーディオソース 使用不能
Rigidbody・Collider・Joint系 使用不能

現時点では明確に制限付きなのはDynamic Bone等コンポーネント全面禁止が主で、ポリゴン数等各種値は実は今のところ単に努力目標です。

恐らく明確な制限の内で一番強いのは、Dynamic Boneよりも、シェーダーがUnity組み込みのみという所。 日本コミュニティの人型アバターでデフォルトUnlitとかをメインで使ってる事例ほぼ無いですよね。

追記

ちなみにQuestの人と実地検証したところ、アニメーションオーバーライド有効(表情変えられる)、エモートスイッチ有効、コライダージャンプ有効という感じらしいので、本当に制約があるのはシェーダーと各種コンポーネントだけの模様です。

なおQuestの人はQuest用があるワールドのみにしか行けないので、既存のPCオンリー用ワールドでプレイするときに知らない間にQuestの人が来てデフォアバターとして表示されるってことはないっぽいです。

つまりそういう不意なコミュニケーションミスを避けるためにQuest用アバターをアップロードしないといけないって話ではなさそうで、Quest対応ワールドに行くときにあると良いかもねって言う温度感な気がしますね。

超雑にQuest用アバターにする

明確な制限がないとは言え、好き勝手アップロードしてQuestユーザーを落とす激重アバターにしては意味がないので、おおむね制約内に作るのがよさげでしょう。

とりあえず自分がblenderで元々4000ポリゴン自作アバター(ポリ数少ないだけで最適化はしてない)を作ってたので、ポリ数制約を満たしている既存アバターがあるところからQuest用アバターを作る手段をメモっとこうと思います。

シェーダー表現やダイナミックボーン他諸々を潔くざくっと切り捨ててとりあえず対応する雑な感じですが、まあ今後の参考になれば……。

目指すのは

  • 5000ポリゴン以内(達成済み)
  • メッシュが一つ
  • テクスチャも一つ
  • マテリアルも一つ
  • ローポリに嬉しい裏面描画可能なUnlit系シェーダー
  • その他の設定はとりあえずなし

といった雑な感じのアバターです。

アバター1つ作っただけの初心者素人が調べつつ書いたやつなので、間違いの指摘やよりよい手段の提案があればコメントしてください。

あとこの記事が「超雑」と冠する理由の一つでもあるんですが、筆者はOculus Questを持ってないので、これが本当に問題なく表示されるか確認してない(できない)です。

あくまで仕様制約に乗っ取ってやってみた系記事なので、ダメだったらコメントください。

とはいえある程度一般的な最適化手順等を踏んでいると思うので、最適化してない雑アバターをPC用でも最適化しとくかーという話にも使えると思います。 そのレベルでは確認してるので、そこまで巻き戻りはないと信じたい……。

なお全体的にうっかり保存すると巻き戻しが難しい作業になるので予め別名保存しておくのが良いと思います。

メッシュを統合する

blender(2.79前提)作業です。

一つのメッシュにするためにオブジェクト分かれてるのを一つに結合してしまいます。 元々一つの場合はスキップ。

まずミラー(モディファイアー)を使っているオブジェクトと使っていないオブジェクトが混在している場合、モディファイアーを適用してから統合しましょう(モディファイアーはオブジェクト単位なので、これをやっとかないと変にミラー適用されたりされなかったりして見た目が壊れます)。

f:id:narazaka:20190412113837p:plain

アバターを構成するオブジェクトを全部選択して

f:id:narazaka:20190412051358p:plain
オブジェクトのツリーからShiftおしながらクリックで選択できます

Ctrl+Jで結合します。

f:id:narazaka:20190412051641p:plain
メニューからだとこれ

オブジェクトを結合しても統合前それぞれに設定していたUVやテクスチャは特に問題なく1つのオブジェクトに複数設定される形になって、元と変わりなく見えるみたいです。

なんか表示されないとか変になった場合は以下が参考になったりするかも? iruyi.blogspot.com

テクスチャ・マテリアルを統合する

blender作業です。

テクスチャ・マテリアルも複数に分かれているのを統合してしまいます。 元々一つの場合はスキップ。

「ベイク」と呼ばれる方法を使うようです。(素人なので伝聞形)

以下の記事ほぼそのまんまやったら上手くいきました。

www.wwwmaplesyrup-cs6.work

Mesh BakerというUnityツールもあるみたいだけど、微妙に値がはるし元々blenderだしそっちでやります。

なお上記記事は英語UIですが、この記事は以下の感じで設定済みの日本語UIでやります。

blender-cg.net

(0) 先にオブジェクトを統合しておく

前項の感じで統合しておきます。

基本的に編集モードでUVをまとめるので、オブジェクトが一つじゃないと出来なさそうな感じがあります。 (調べていないのでもしかしたら複数オブジェクトでも出来るのかも知れませんが、今回はメッシュもマテリアルもテクスチャも一つにするのが目標なのでどのみち関係ないです。)

(1) 既存テクスチャに「UVマップ」を設定

統合したいテクスチャが設定されてるオブジェクトのテクスチャタブ→マッピング→マップに「UVマップ」を設定します(下の方にあるのでスクロールすると出てくると思います)

f:id:narazaka:20190412112242p:plain

(2) UVを一つにまとめる

オブジェクトデータタブから

f:id:narazaka:20190412112533p:plain

+ボタンを押して新しいUVマッピングを作ります(名前は適当)

f:id:narazaka:20190412112703p:plain

(元記事の手順に従っているだけなので)この項目がどういう物なのかはいまいち把握していませんが、結果から推察すると、 マテリアルに指定されたテクスチャをオブジェクトのどこに表示するかというUV展開のセット(1オブジェクトにマテリアルが複数定義可能なので複数のUVがある)を、あるオブジェクトに対して複数定義できる機能っぽい……?です。

上記手順はその定義する領域の追加処理で、テクスチャが分かれた状態の既存のUVマッピングセットとは別に統合テクスチャに対しての新しいUVマッピングセットを作るといった感じですね(たぶん……)。

さて、この新しいUVマッピングを選択したまま(上画像の状態)、オブジェクトを編集モードにして頂点を全選択(「A」キーを押すと全選択と全解除ができます)。

f:id:narazaka:20190412114149p:plain
この画像のように既存のUVが重なってわけがわからない状態になってる場合、UVマップが既存の「UVマップ」選択になっている可能性があるので要確認!

「U」キーをおして出てくるメニューから「スマートUV投影」を選択します。

f:id:narazaka:20190412114706p:plain
ショートカットだと「U」キー→「スマートUV投影」

パラメーター設定のウインドウが出てくるんですが、元記事の通り「島の余白」(自動でシームが切られて分割されるUVのまとまりを配置する余白?)を0.06にして「OK」

f:id:narazaka:20190412115205p:plain
島の余白0.06

するとUVが平面上に重ならないようにまとまったやつが出来ます。

f:id:narazaka:20190412115634p:plain
全部位のUVが平面にまとまっている

(3) 既存テクスチャをまとめたUVに従ってベイクする

これでUVが自動で一つになったので、既存の分かれたテクスチャもそのUVに合わせて自動で一つにします。

UVに対応するテクスチャを用意するため、UV/画像エディタで「画像」→「新規画像」を選択します。

f:id:narazaka:20190412115838p:plain
Alt-N

VRChat Quest的には1024x1024以下が良いとのことなのでとりあえずそのサイズでOK。

「アルファ」はUVが当たっていない場所がアルファで抜かれる画像になるらしい(後で画像編集するならどこがUV領域か分かって便利?)ですが、テクスチャ少しでも軽くしたいなら切っておく方が良いかな……?となんとなく思ってチェック外しました。つけといてもいいかもしれません。

f:id:narazaka:20190412120405p:plain

結果。UV背景が真っ黒に。

f:id:narazaka:20190412120339p:plain

こうなった状態(スマートUV投影後のUVとブランク画像が選択されている状態)のまま、写真マークのレンダータブで、やはり下の方にあって多分畳まれてる「ベイク」の項目を展開します。

f:id:narazaka:20190412120711p:plain
モデリング時全然使わなかった写真マーク、「レンダー」というらしいです

f:id:narazaka:20190412120942p:plain
「ベイク」は下から2番目でした

ここで「ベイクモード」を「テクスチャ」に切り替えます。(デフォルトの「フルレンダー」だと影とか入っちゃうので)

f:id:narazaka:20190412121019p:plain
ベイクモード→テクスチャ

「ベイク」ボタンを押します。

f:id:narazaka:20190412121117p:plain
でかくて選択UIっぽいけどボタンです

すると自動で既存テクスチャからUVに従って座標変換されて色が置かれ、さっき作った新しいテクスチャ画像にまとまります。

f:id:narazaka:20190412121310p:plain

で、この画像をマテリアルに設定するためにどこかに保存します。

f:id:narazaka:20190412121639p:plain
F3

(4) ベイクしたテクスチャを新しい一つのマテリアルに適用する

マテリアルタブからマテリアルを新規に作ります。

f:id:narazaka:20190412121901p:plain
+ボタンを押して「マテリアルスロット」を新規に作り
f:id:narazaka:20190412122041p:plain
その状態でさらに下の「新規」ボタンを押すとマテリアルが出来るらしい
f:id:narazaka:20190412122345p:plain
白いマテリアルが出来ます

このマテリアルを選択した状態でテクスチャタブに行き(なぜかスクロールが下いっぱいになっている場合があるのでその場合上にスクロール)、ここでも「新規」ボタンでテクスチャを作ります。

f:id:narazaka:20190412122731p:plain

さらに下のほう「画像を開く」からさっき保存したベイク済みテクスチャを開きます。

f:id:narazaka:20190412122851p:plain
画像を開いてさっき保存したベイク済みテクスチャを選択

f:id:narazaka:20190412123031p:plain
なんだかわけわからんプレビューになると思う
f:id:narazaka:20190412123111p:plain
マテリアルタブに戻ってちゃんとテクスチャが適用されていることを確認

これで複数あったテクスチャとマテリアルを1つに統合できました。

不要になった元のマテリアルを削除していきます。

f:id:narazaka:20190412123255p:plain
-ボタンでマテリアルスロットを削除
f:id:narazaka:20190412123417p:plain
削除中なんかヤバい見た目になるけどスルーしよう
f:id:narazaka:20190412123609p:plain
マテリアル一つの状態に

あとUVマップも最初に選択した「UVマップ」のほうを削除します。

f:id:narazaka:20190412123657p:plain
これも「UVマップ」を選択した時点でヤバい見た目になると思うけどスルー
f:id:narazaka:20190412123741p:plain
ベイク後の物だけの状態に

不要なボーンを削除

Dynamic Boneが動かないので不要なボーンは削除します。

髪とか胸とかね……

f:id:narazaka:20190412131817p:plain
Dynamic Boneは使えないので……
f:id:narazaka:20190412132012p:plain
ツリーの親を削除しても子が削除されるわけではないので全部選択
f:id:narazaka:20190412131917p:plain

これであとはいつもどおりfbxをエクスポート。

ポリ数5000以下・マテリアルとテクスチャが1つだけのモデルが出来ました。

Unityに持っていく

アバターが出来たのでUnityに持っていきましょう。

SDK更新

さて、先んじてUnityのほうにはVRChatの新しいSDKを適用させておきましょう。 VRCSDK-2019.04.01.10.09_Public.unitypackageが配られてるのでインポートしてから作業です。

fbxインポート

繰り返しますがバックアップを取ってください。(自分はgit管理でやっています)

fbxを普通に新規インポートしてRigを設定して、シーンにそのまま置くか、シーンを新しく作ってそこに置きます。

色々同じ設定使うでしょうしPC用とプロジェクト自体分けるほどでもないと思います(分けても問題ないです)。

f:id:narazaka:20190412131233p:plain
カクカク

カクカクになってたので既存アバターと同じスムージングが効くようにfbxインポートの設定弄ってApply。Rigも忘れず設定します。

f:id:narazaka:20190412131414p:plain
ここは各人設定違うと思うのでそれぞれよしなにしてください

なお新規インポートしてRig再設定とかやるのが微妙に面倒だからと超雑にやるなら、fbxとテクスチャをUnityの既存のとこに上書きしても良いです。(よくあるfbxの更新手順) Unityがよしなにしてくれて、元の構造を保ったままfbx内のオブジェクトだけ変更された感じになります。

ただ制約が強い故にDynamic BoneとかFixed Jointとかどのみち外すことになるので、設定を維持すること自体はあんまり意味ない気がします。 結局ほぼfbx素上げみたいな感じになると思うので。

Avatar Descripter等の設定うつし

シーンに置いたアバターオブジェクトにVRC_Avatar Descripterコンポーネントを追加し、元のアバターからコピペで値をはっつけると良いと思います。

f:id:narazaka:20190412132744p:plain
コピー
f:id:narazaka:20190412132916p:plain
貼り付け

オブジェクトに直接目パチを設定している場合も同じようにコピペで出来ると思います。 シェイプキーはそのままなので、自分のやった感じでは普通に動きました。 f:id:narazaka:20190412140546p:plain

ただこれをやるとアバター動作由来のアニメーターと目パチとでアニメーターが2つになってExcellent判定から外れるのでやらない方が良いかもしれません。

シェーダー設定(Quest実証後追記)

さて、鬼門のシェーダーです。

自分は普段まんまるシェーダー1.4βを使っているのですが、先述の通り「VRChat/Mobile以下のシェーダー」しか使えないという制約があるので、その中から選ばなければなりません。

VRChat Questが運用開始され、実際Questの人に聞いて分かったこととしては、

  • VRChat/Mobile/以下にあるシェーダー以外は使えない
  • もしそれ以外のシェーダーを使った場合、どうやらVRChat/Mobile/Bumped Diffuseか、パーティクル系シェーダーの場合VRChat/Mobile/Particles/Additiveあたりにフォールバックされていそう

ということで、ここに関して抜け道はなさそうです。

どれもキャラクターを存分に表現するのには恐らく不十分な中で、だいたいVRChat/Mobile/ToonLitあるいはVRChat/Mobile/Lightmappedあたりが候補に挙がると思います。

f:id:narazaka:20190528111956p:plain
VRChat/Mobile/Bumped Diffuse (Standard的なやつ)

f:id:narazaka:20190528112041p:plain
VRChat/Mobile/ToonLit (Toon系だけど影に妙な癖がある印象)

f:id:narazaka:20190528112114p:plain
VRChat/Mobile/Lightmapped (Unlit系?)

このうちVRChat/Mobile/Lightmappedは最新のSDKに同梱されているにもかかわらずアップロード時にこれは使えないという警告が出ます。 これが意図的なものなのかバグなのかわかりませんが、とりあえず強引に使うには、まず最新のSDKを導入してシェーダーを突っ込んだうえでQuest対応の指針が発表された当時のシェーダー制限のない古いSDKを上書き導入するととりあえずアップロードできて表示もできる模様です。

なおこれらはローポリモデルでありがちな「裏面描画(Cull Off)」をサポートしていないので、それが必要なモデルはポリゴンを複製して必要なところを法線反転させるなどの対策が必要になります。(これは気が向いたら後で書く……)

シェーダー設定(古い情報です とばしてください

さて、鬼門のシェーダーです。

自分は普段まんまるシェーダー1.4βを使っているのですが、先述の通り「Unityに組み込みのシェーダー」しか使えないという制約があるので、その中から選ばなければなりません。

どれもキャラクターを存分に表現するのには恐らく不十分な中で、Standardだと影が付いて不気味になるからとだいたいUnlit/Textureが選択されると思います。

ただし問題はローポリモデル故「裏面描画(Cull Off)」が必要な場合……。 Unlit/Textureは裏面が描画されないので、ポリゴン1枚で表も裏も表現するモデルには使えません。

f:id:narazaka:20190412134340p:plain
ポニーテールの裏面が描画されないでござる……

裏面描画できるUnity組み込みシェーダーないのか……?と探した結果、ありました。

tutorials.shade3d.jp

木の葉っぱを描画するのが目的のNature/Tree Soft Occlusion Leavesシェーダーが使えるとのこと。 上記記事の結論的には自作しようとなっていますが、自作不可なのでありがたく既存の提案品を使わせて頂きます。

↓追記↓

この木の葉っぱシェーダー、どうも真のUnlitではないので、光源によっては変に暗くなりがちなのがわかりました。

Particles/Standard UnlitでもUnlitで裏面描画できるっぽいので、そちらも使ってワールドによって使い分けるのが良いかも知れません。

f:id:narazaka:20190420232037p:plain
なぜか謎のオーラが出るけど描画には問題ない模様……

↑追記終了↑

とりあえずシェーダーの設定を変えられるようにfbxのマテリアルを外部に出す設定にしてApply

f:id:narazaka:20190412133858p:plain

葉っぱ!

f:id:narazaka:20190412134804p:plain

f:id:narazaka:20190412134848p:plain
めっちゃ光るやん……

デフォルトの設定だとなんかめっちゃ光るので、

  • Main Color=白色
  • Alpha cutoff=よくわからないからそのまま(テクスチャに透過があったら変わるんだろうか……?)
  • Base light=1
  • Amb. Ocation=10
  • Dir Ocation=0

にすると普通のUnlitっぽい色味に裏面が付いていい感じです。

f:id:narazaka:20190412135229p:plain
裏面OK

光る要素はハイライトっぽいので、上記から多少値を弄って光らせてみても良いかもしれませんね。

ただこのシェーダーがどれくらい重いのかはわかってないので、軽い代替案があればそちらにしたいです。

アップロード

以上。アバターは完成です。早速アップロードしましょう。

Dynamic BoneもFixed Jointも使えないし、アニメーションコントローラーや口パクはコピペで持ってきたし、もう設定することはない気がします。

f:id:narazaka:20190412152337p:plain
アバター以外を消して、Directional Lightとかライト系も消すと、SetPass calls(=ドローコール数)が3くらいになって軽いことが分かる

Android用ビルド

Quest用リリースにはAndroidビルドが必要です。

Unityをインストールする際にAndroidビルドツールを除外してインストールした場合は別途インストールする必要があります。

「File」→「Build Settings」を開いてAndroidのとこを選択し、「Open Download Page」からインストーラーをダウンロードできるはずです。

インストールする時にインストール先が空欄になる場合はVRChat用のUnity 2017のフォルダを選択します。

どのUnityフォルダをインストール先にするか分からないという場合は、C:\Program Files\Unity\Editor\Unity.exeあたりを右クリックしてプロパティを出して詳細タブを開くとバージョンが書いてありますので、それで判断すると良いです。

f:id:narazaka:20190412141300p:plain
Unity Hubとかで分からない場合にもバージョン確認可能

あとAndroid SDKが必要という話もあるんですが、自分は既に前に入れてたので、インストール必要ならそれっぽい記事を見てください。 Unity公式の案内はこちらです。 docs.unity3d.com

インストール後Unity開き直してAndroidの項目にいくと画面が変わると思います。

Androidの最小APIレベルを変更

で、これはもしかしたらUnity 5.6時代からのアバターだけかも知れませんが、Androidに変えただけだと警告が出てビルドできません。(すんなりビルド出来そうな場合はスルーしてください。)

f:id:narazaka:20190412141623p:plain

「Color Spaceと現在の設定の非互換性をPlayer Settingsにいって直してくれ」と言う話なのでそちらを開くと、「Linerカラースペースは~~Android 4.3以上が必要」と書いてありました。

f:id:narazaka:20190412141933p:plain
警告がでている

他のOpenGL ES3.0とか云々は満たしてそうなので、ちょっと下の方にあるMinimum API Levelを4.3にすると解消しました。

f:id:narazaka:20190412142257p:plain
最小API Levelを変更

Android用ビルド(再)

警告が出なくなったら左の方にあるSwitch Platformをクリックするとプラットフォームの切り替えが始まります。 これは全リソースの再インポートが入るので、ちょっと時間がかかる可能性があります。(特に色々アセット入れてる場合数分レベルはかかる)

これをPC用とAndroid用で毎回切り替えるのが面倒なので、VRChat公式ではプロジェクトをコピーしてやると良いと書いてありますが、そのままでもできるっちゃできます。

自分は雑なのでそのままやりますが、たとえばGitHub管理(最近プライベートリポジトリ無料になりました!)で2カ所にクローンして同期を取る様にすれば楽かも知れません。

ともかくSwitch Platformです。

f:id:narazaka:20190412142514p:plain

アップロード

長いロードが走った後操作可能になると思うので、そのままいつもと同じようにビルド&アップロードしましょう。

公式によれば、同じblueprint IDでもAndroidビルドとPCビルドで別のデータとしてアップロードするようになっていて、出し分けがされるようです。

念のためいつものアバターのとこにアップロードする前に別のblueprint IDで両方アップロードしてみて具合を見るのも良いかも知れませんね。

上記で目パチ設定をしていなければきっとExcellentになっているのではないでしょうか。 気持ちよくアップロードして、Quest持ってる人に確認してもらいましょう(他力本願)。

f:id:narazaka:20190412144703p:plain
Excellent

まとめ

以上超雑にQuest規格に合わせてアップロードする記事でした。

色々最適な手段じゃない可能性がありますが、アバター制作素人が雑にやってもなんとかなりそうな気がしました。

みなさんもこれを機にローポリでかわいいアバターを作ってOculus Quest一般人をかわいさで圧倒して下さい。

自分は「ECO」こと、かわいいアバターがいっぱい!エミル・クロニクル・オンラインメディス子さん・スノウエルフちゃん等の作者であるアルマジロン先生がモデルを作ってたりしたMMORPG(サービス終了済))アバターを参考にざっくりローポリテイストで自作アバターを作ってますが、あのオーパーツ的ローポリかわいさを色んな人が目指すと良いなと思ってます。

スクショを見て研究すると、こんなに少ない分割でこんなにかわいいアバターが作れるんだ!と発見があると思います。オススメ。

関係ないけどついでに宣伝

VRChatのソーシャル機能が弱いので、プロフィール登録とフレンド・インスタンス検索、フレンドへの個人メモが出来るサイトを運営してます。

VRChat APIの制約でちょっとログインが微妙ですが、良かったら使ってください。 vrcprofile.com