カテゴリー「VRChat」の9件の記事

HP Pavilion Gaming Desktop TG01 に RTX4070

ビデオカード

2022年に購入したcore i7/9700 GeForce RTX2600superのPCもVRChat用途では何かと見劣りする気がしてきました。元々VR用途ではぎりぎりのスペックでした。

電源容量

 VR用に、と買った現PCは電源容量が500Wと少なめです。hp製のPCということで電源ユニットとマザーボードは独自コネクタ・規格であるようです。電源ユニットを大容量のものに交換することはできません。
 RTX2060superは消費電力175W。ビデオカードの交換でぎりぎり動作する可能性のあるのはRTX4060TiやRTX4070搭載製品。200Wの4070は高負荷時に電源容量不足を招きかねません。電源容量計算機なるwebページを試してみました。

20240122-113051

 hpの500W電源ユニットは80GOLD相当。効率80%――400Wを消費するシステムを賄えるはずです。RTX4070に換装しても364W。なんとかなりそうです。

独自部品

 懸念は電源容量だけではありません。hpやDellのような大手BTOパソコンの製品は規格外の専用設計部品で構成されています。うちのPavilion TG01の場合だと、

  • 筐体(専用マザーボードやビデオカードを前提にしている)
  • 電源ユニット(寸法・コネクタが独自)
  • マザーボード(ネジ位置、寸法、電源コネクタが独自)
  • ビデオカード(規格には適合するかもしれないがhp専用品)

 汎用品が使われているのはメモリやストレージのみ。ビデオカードはPCI-Expressスロットですが市販の自作PC用PCI-eビデオカードが動く規格であるなんてどこにも書いてありません。元々刺さっていたのはhp製PC専用に作らせてるビデオカードです。マザーボードのBIOS(ファーム)と一対一での動作検証しかしていないでしょう。
 でも、まあ、どこかの自作PC用OEMでメーカー名のプリントがhpに置き換わってるだけの気もします。チャレンジしてみよう。

大きさ比較

 大きさ的に収まる可能性のある二連ファンの製品をリストしてみました。

メーカー 型番 大きさ(mm)
Palit NED4070019K9-1047D 269.1x127.5x40.1
ASUS DUAAL-RTX4070-o12G 267.01x133.94x51.13
玄人志向 GALAKURO GAMING GG-RTX4070-E12GB/DF 238x115x45
MSI GeForce RTX4070 VENTUS 2X E 12G OC 242x125x43
ZOTAC ZOTAC GAMING GeForce RTX4070 Twin Edge OC ZT-D40700H-010M 225.5x123.2x40.1
GAINWARD GeForce RTX 4070 Ghost NED4070019K9-1047B 269.1x131.8x40.1
GIGABYTE GV-N4070EAGLE OC-12GD 261x126x50

 

MSI GeForce RTX4070 VENTUS 2X E 12G OC

 最安値競争の定番メーカーは避け、ツールで消費電力制限がかけられるMSI製品のVENTUS 2Xシリーズを選びました。値段も手頃でした。

実働

Gevncuma0aakgk

 結論から言えば動きました。
 でも、問題だらけでした。

  • ビデオカードのプラカバーの一部とマザボの電源コネクタがスロット挿入位置と干渉して刺さらない → プラカバーを部分切断して解決
  • ビデオカードの8pin電源が筐体側面(開閉面)に向いていてケーブルがわずかにつっかえる → 押し込んだ
  • ビデオカードの大きさが変わり補助支持ステーが使えない → 撤去。適当なゴム板を底面からつっかえ棒にした
  • ビデオカードのバックパネル部とPCI-Expressスロットのサイズが合わざすに刺さらない → バックパネルをペンチで曲げて合わせた
  • カード補助支持ステーは空気取入口の大雑把なフィルタの保持もしていた → 無くてもいいや……
  • ビデオカードの端と3.5inchHDDとの隙間は1cm程度(HDDを外さないとビデオカードの着け外しができない)

 筐体や拡張カードの寸法がいい加減であった90年代の自作PCのような作業となりました。

 あと、上の写真の右側の3.5inchHDD追加用マウンタですが、HDDをどっちに向けてもHDD側のネジ穴と位置が合いません。なんだこれ……。

VRChatへ行ってみた

 20fpsくらいだった製作中のworldが40fpsくらいにはなりました。VRビリヤードのworldはHMDの表示上限の90fpsに張り付きます。VirtualDesktopで利用できるencoderが変わったみたいでHMD内での画質もクリアでシャープになりました。2060superで遊んでた同じworldに行ってもGPUの温度があまり上がらずファンの騒音も小さいです。VRChat内のworld単体で「重くてしんどい」ところはほとんど無くなりました。また軽いworldでも人数が増えて重くなっていたのが重めのアバター20~30人くらいであれば快適な範囲となりました。
 CPUの世代が古いのにもかかわらずけっこうな性能向上が得られたので満足度はかなり高いです。一方で85000円ほどのコストを投じて得られたのが「重くて(fpsが低くて)つらい」が減るだけというのも微妙な気がします。VRChat自体の楽しさが特に向上するわけではありませんでした。

|

GOTHIC LOLITA MALION

ゴシック

 ドールの通販サイトのfavを見返していて思いました。
 「好みが偏ってる?」
 その偏った好みをVRChat用アバターの改変で顕現させよう!
 というわけで今回のアバター改変のテーマは「ゴシック」です。

 VRChatでは無性別球体関節人形・マリオンというアバターを主に使っています。デフォルトのセーラーはお気に入りですし、振袖も近代ヨーロッパのギムナジウム生徒風スーツもお気に入りです。最近だとVRビリヤード向けの正装・Aコードを着せたマリオンも良い感じに仕上がった気がします。

Malion for VR Billiard

吸血鬼

 fav一覧で多かったのが吸血鬼風の人形たちでした。金髪ではなく黒、あるいは濃い色の髪。白桃の肌。隈に近い濃い色のアイライン。赤い瞳。ロリータ寄りの細い顎に大きな瞳。ぽってりとした唇。いわゆる“ゴスロリ”風の黒ベースの衣装。牙が覗いているドールもけっこうありました。
 というわけでこの特徴をそのままカタチにしてしまいます。

  • 睫毛の増量 → blender作業
  • アイラインの輪郭線ポリゴン数増強 → blender作業
  • 顎を細く → blender作業
  • 目の周囲を赤/黒でメイク
  • 黒目の前面にコンタクトレンズのような形でグラスシェーダーを置いてハイライトに。
  • 血を啜った痕跡のような赤黒いリップ
  • 赤/グレーの瞳
  • ゴシック調衣装“Rose Gothic Dress”
  • ドレスの裾を多重にしてパニエ → blender作業
  • “コルセット/corset” ※blender作業必須。
  • “リボンパンプス”
  • “ふんわりドロワーズ”
  • 髪・ツーサイドアップ 曲線の輪郭部分のポリゴン数増加 → blender作業
  • 髪テクスチャ ※要blender作業
  • 脚部装飾・自作アクセサリ → blender作業
  • Todo 手・指アクセサリ
  • Todo 頭上アクセサリ

 こんな感じになりました。

Vrchat_20230423_002209150a

アイテム個別レビュー

Rose Gothic Dress

 レースの段重ねスカートの質感が素敵です。足の貫通対策がuppler_legの子にスカートの前後ボーンをぶらさげる、なので歩行アクションがやや派手になります。hipの子にして50%rotationコンストレイントで繋いでみたりと調整中。ボーンの親が天地180度回転させてある(dynamic bone時代の工夫らしい)ためにPhysBoneだと暴れてしまいます。blenderで修正。

corset

 登場当初私の周囲で少し話題になりましたが使っている人は見ませんでした。それもそのはず。ボーンが入っていないのでblenderで自前でweightを塗らなければいけません。また合わせる衣装もしっかりフィッティング・変形が要ります。造型・質感はとても良いです。normal mapもついていて非トゥーンのリアル調レンダリングも映えます。

リボンパンプス

 柄がソールまで入っていたのが気に入ったのと、足首の球体関節を見せられるメリージェーン・タイプということで選択。厚底改造もできれば、と思ったのですがSubstance Painter製らしくメッシュを変形させるような改造の余地はなさそうです。標準で可愛いのでヨシ。

髪テクスチャ

 Gumroadにてテクスチャだけ配布しているのを見つけてBoothで販売されていた髪のUVだけ展開し直しました。試行錯誤中ですがドールには非トゥーン的な表現も合いそうです。

キャラ設定

 一応設定らしきものもあります。

「吸血鬼を知っていて?
 ――いいえ、違うわ。血を吸われた者が増えるような倍々ゲームはお話の中だけ。わたくしたち吸血鬼Vampireが血を吸うのは一生に一度きり。なあに? お腹は空かないのかって? わたくしたちはいつもは植物のスピリッツを食むの。ウォッカやブランデーを好む同類もいるわ。香水の香りアルカロイドを好む者もいるわね。わたくしは花の香りがあれば十分。薔薇が好きだわ。
 一生に一度の血はいつ吸うのかですって? 野暮ね。そんなの命が尽きる時に決まっているでしょう。わたくしたちはただ一度血を啜って塵に還る。そういう存在」
 そして、血と引き換えに注ぎ込まれたスピリットが吸血鬼のスピリットを伝えるという。
「不老不死なんかじゃないわ。記憶も、人格も受け継がれない。ただ、吸血鬼であるという魂のカタチだけが連綿と続いていくの。とち狂ってお人形の血を求めた吸血鬼もいたみたいね」

|

pico4を買いました

questのヘッドストラップ

 三月中頃のある日、初代oculus questのヘッドストラップが切れました。旧モデルのquestはすでに市場にもmeta(oculus)公式サイトにも交換用フェイスパッドもヘッドストラップも見当たりません。サードパーティ製の製品もずいぶん前に姿を消しました。自家修理で乗り切ろうかとも思いましたが、愛用の初代questはすでに二世代ほど時代から遅れてしまいました。何より、毎日ログインしていたVRChatに二日入っていないだけでいてもたってもいられなくなりました。
 新しいHMDを買おう!
 と決めたのが金曜の昼。
 候補はinside out方式に絞りました。生活環境的にLightBoxを設置するのは難しく、愛用のharitoraXもinside out方式の補助向きです。選択肢はわずか。meta quest2はこれまで使っていたquestの後継機でスムーズな移行が予想できましたが、発売から二年半が過ぎています。vive XR Eliteはお値段高すぎで却下。pico4はこれから登場する新製品のトレンドも踏んでいます。パンケーキレンズ、前後重量配分の均等化された設計、見やすいパススルー、低価格。ネット上にはトラブル解決&使いこなし記事もそれなりにありなんとかなりそうだということで決心がつきました。

pico4購入

Img_2905

 というわけで金曜夜には買って帰ってきました。pico4。大手家電量販店で五万円弱。新しもの好きの猫と一緒に開梱です。

ファースト・インプレッション

 初期設定でe-mailアドレスやWiFi設定をしていて気づいたのが「酔いそう」であったこと。どうやら3D表示のない単なるディスプレイ状態の時はブレ対策機能が動かないようです。WiFiを設定し、ファームウェアのアップデートが終わって常用メニューが表示されたところで「酔いそう」感はなくなりました。
 初代questは有機EL+フレネルレンズでしたがこちらは液晶+パンケーキレンズ。輝度差の大きなものを表示したときに見えていたフレネルレンズの縞々が見えません。pico4の液晶はquestの有機ELに比べるとコントラストがやや低い印象で最大輝度も控えめです。眼の負担は低そう。アプリ起動前のメニューを見ただけの段階で文字が読みやすく解像度の高さがもたらすアドバンテージを感じました。比較対象が初代questなのでquest2やPC用HMD専門メーカーの製品を使っている人には感動はないかも。あと、鼻の近くに遮光用の部品が付けられて、東洋人の平たい顔でも光漏れがなくなり見やすくなりました。眼鏡向けのスペーサー・オプションも入ってました。
 そして装着感!
 圧倒的に初代questより良いです。前後の重量バランスが良いせいか締め付けるように装着しなくても安定するので顔が痛くない。pico4で一番魅力的だと思ったのはこの装着感でした。これは家電量販店に展示機があればquest2と比較できるので、ぜひ試して欲しいです。VRで大切なのはHMD装着が不快でない、というとっても素朴な条件だったりします。ここにフォーカスしたpico4は長く実用に耐える気がします。
 コントローラに最初から入ってる電池はいわゆる「動作確認用」のようです。けっこう早く(二日ほどの使用で) 電池切れを起こしますがeneloopに入れ替えてみたところ倍以上持ちました。片側につき単三×2です。

アプリ

 初期状態では「ファイラー」や「youtube」や各種動画配信サービスのアプリ?リンク?が用意されていました。ファイラーはメディア各種のビューワも内蔵していて画像や動画類は一通り再生できるようです。SMB経由のLAN共有データもOK。youtubeで高画質動画を再生してみると、表示が高精細でしゃっきり。音質は初代quest比では低音が割と出ていてパンチがあり、高音がよく分離して聞こえるのでホームシアターっぽいです。没入して視聴するのに良い環境。耳の近くにスピーカーがある仕組なので音は周りにそこそこ聞こえます。寝ている人の近くでの使用はやめておいた方が良さそう。
 picoストアを覗いてみると『オノゴロ物語』や『ALTDEUS』『東京クロノス』といった有名タイトルがありました。meta quest2で評判の良かった『BIOHAZARD 4』のVR版はなさそうです。questでも馴染みの3Dスケッチツール『Gravity Sketch』もありました。VRChatのquest版(名前は変わるだろうけど)も来るといいのに。
 ゲームばかりでなく仮想オフィスの『Immersed』というのもあります。これはPC上での作業をそのままVRに持ってくる+協業者と連絡を取り合えるツールといった感じなのですが……pico4の表示性能でようやく実用範囲のVirtualオフィスに。Virtual Desktopより文字がくっきり見える気がします。リアルのキーボードの位置だけでもわかるともう少し使いやすくなりそう。とはいえ文字の読み書きはVR環境よりもリアルの平面モニタの方がずっと快適です。

電源

 pico4はPCとの接続でWiFi6があれば有線は要りません。けれど消費電力もそこそこあります。バッテリー駆動では二時間くらいしか遊べなさそう。PCとUSB接続をすれば一応電力は供給されるのですが、PC端子の電力供給機能は頼りなく、うちのゲーミングPCの端子からではpico4の消費電力をまかないきれません。けっきょくWiFi接続&ACアダプターによる有線電力供給という形で利用しています。

pico video

 picoのプラットホームでは推しているらしい動画配信サービス。にじさんじがpico向けに限定配信をしていたりします。集中したい映画ならともかくバラエティ的な動画にHMDを被るのはちょっと面倒です。3D動画も(youtubeもですが)解像度が低過ぎて見映えしません。3Dの、ポリゴンの状態で配信されるコンテンツが見たい!

Virtual Desktop

 pico4ではメーカーがPC接続用のツール・Streaming Assistantも提供しているのですが、2023年3月時点で問題が多いです。

  • 立体音響がおかしくなることがある
  • PC側のStreaming Assistantサーバー自体がコケる
  • SteamVRのOVRがうまく機能しない
  • PCVRでコントローラの認識がおかしくなることがある

 いずれも導入から二日の間に複数回起きています。当初これらの問題は原因がわからなかったのですが、Virtual Desktopを導入してStreaming Assistantの使用をやめたらすべて解決してしまいました。実用に耐えないというほどStreaming Assistantが酷いということはないのですが、比較するとVirtual Desktopの洗練度が目立ちます。というわけでpico4、PCVR目当てで導入する方はVirtual Desktopも導入を強く推奨します。

初代quest比で良くなった/悪くなった点リスト

  • 前後重量バランスが取れていて装着感は比較にならないくらい良くなった。quest2よりも快適。
  • 解像度が上がってVR世界が格段にはっきり見える。
  • パススルーがカラーで高精細。初代questやquest2と比較にならないくらい実用的。
  • WiFi6対応。WiFi経由のPCVRでもまったく不足がない。初代questはWiFi5世代。
  • 画面の真っ黒と真っ白のコントラストがやや落ちて「目映い体験」がなくなった(初代questは有機EL)。光に溢れていた光景が単に明るい光景になった。暗闇がややグレーを感じる黒になった。
  • ネットレビューではスピーカー、マイク両方の音質に否定的なものを見かけるが、初代quest比ではかなり良い。PCVR時にマイクの音質が悪いのはStreaming Assistantのせい。単独使用やVirtual Desktopでは問題を感じない。マイクは音質はともかく特性は差があるようでHMDを変えたことを伝えていない友人に「マイク変えた?」と訊かれた。
  • 再生音の低音が豊か。
  • VRChatしかたぶん遊ばないけどストアがやや寂しい。quest環境でのApp Lab相当のインディーズ・タイトルの配信はなさそう。→android用のAPKファイルを突っ込むとたいていのものが動いてしまうようです。
  • 鼻とHMDの隙間が減り、追加の遮光ゴム部品で密閉度が上がり、外の明かりが気にならなくなると同時に曇り(結露し)やすくなった。(冷間時の使い始めだけ。ファンでの換気が始まると曇りは晴れる)
  • 眼の疲労感はあまり改善されなかった。
  • 解像度は上がったがPCVRでのグラフィック描画の要求性能は大差ないみたい。

VRビリヤード

 私のVR利用はほぼVRChatのみです。VRChatで一番時間を使っているのがVRビリヤード。初代questからpico4に更新しての変化は以下の通り。

  • 解像度が上がりガイドラインがよりはっきり見えるようになった。
  • ガイドラインなしで遊んでも狙いやすくなった。
  • 装着感が大幅に改善されて長時間快適に遊べるようになり、三時間くらい続くVRビリヤード大会でもHMD装着が苦にならない。
  • コントローラのトラッキングは初代questより安定する。認識範囲も広いようでキューを大きく引いてもトラッキングが外れない。

フィットネス

 pico4はフィットネス向けの機能を重視しているようで標準メニューにFitness機能(HMDを付けた状態での活動量計)が用意されています。購入・ユーザ登録時に提供される特典ゲームもフィットネス要素の強いものです。オプションで足につけると思われる運動量計も予定されているようです。

pico4版VRChat

 2023年11月、pico4にもVRChatのアプリが登場しました。quest版相当のものです。
 登場当初は表示が多少乱れていたりしましたが12月には不具合らしい不具合もなくなったようです。そしてこのオール・イン・ワンVR環境用のVRChat、かなり優秀なことがわかりました。

  • 初代questはスペックがぎりぎりでquest向けworldであっても表示はとても軽快とは言えなかったがquest2とほぼ同スペックのpico4では快適。
  • quest向けworldだけしか訪れることができないのは変わらず。
  • 表示は初代quest比でははっきりと高精細になって見映えが大幅に良くなった。

|

VRChatのfriendとオフ会に伴う徒然

秋HUB的な

 秋葉原には「秋HUB」と呼ばれる居酒屋的なものがあり(正しい名称は「HUB秋葉原店」らしい)VRChatユーザーのオフ会などで使われることも多く「秋HUB」が代名詞的なものになりつつあるようです。スマホの画面に自アバターの画像を表示して集めた記念写真が「秋HUB的な」なんて言われたり。

秋HUBしました

 2022年4月25日、かなり遠くに住んでいるらしいVRChatのfriendがふと思い立ったとかで東京に来ました。えっ、VR東京駅の話題とかじゃないの、と思いましたが現実のようです。暇を持て余していたタイミングだったこともあり秋HUBみたいなことへの憧れもあって合流してみました。

写真提供:きゅさん

 撮影場所は新宿の居酒屋で秋HUBではないです。
 左上の赤背景振袖マリオンが私のです。

中の人

 オフ会の顔ぶれは全員(リアルでは)初対面でした。面白かったのはどなたも挨拶までは「知らない人」だったのてすが「あさやです」「××です」と互いに名乗った次の瞬間には「VRで知ってる声、知ってる仕草」にモードチェンジし一瞬でいつものVRChatでの距離感に変わったこと。VR上での人格にスイッチした感じでした。(ペルソナ的なイメージで)
 VRの身振りと声の組み合わせというのは現実の対面コミュニケーションと情報量が近いみたいで、外見による第一印象の部分をアバターで代替してるだけ=ルッキズムの回避にちょっと役立ってるのでは?と思ったのでした。
 とはいえVRでの知己はあくまでもVR友、VR向けのペルソナに従って見せてくれている面だとも思うので「VRで出会い」「VRから恋人を作ろう」みたいな推し方はしたくない気もします。出会い目的のコンパみたいなのが大嫌いなだけですが。

遠距離恋愛・家族の絆

 ではオフラインとVRの組み合わせで良さそうなのは、と思いを巡らせてみると「遠距離恋愛」「遠地の(リアル)友人との交流」といったあたりが浮かびます。電話のような通話ツールの身振り付、という使い方。目新しくはないですが単身赴任などで家族が一人離れてしまう状況で、人間関係の維持にも効果的な気がします。Zoomでいいのでは、と思うかもしれませんが実写のZoomよりもアバター越しのVRの方が遙かに「本人」感、臨場感に満ちています。あとVRだと、同じゲームをして遊べる、というのが楽しいです。VRChatにあるのは市販の人気ゲームをシンプルにしたぱちもんみたいなゲームばかりですが、それだけに普遍的な楽しさのあるゲームが多いです。VRでの多人数ゲームってたぶんVRChat以外だと成立すらしていないのが現状ではないでしょうか。

まとめ

 オフ会を通じてVRSNSは思った以上に「なかのひと」を表現していることを実感しました。VRで仲良くお喋りできる相手であればオフラインで対面しても同じように会話を楽しめるはず。でも、VRやオフ会で知己が見せてくれるのはVR世界でのペルソナのはず。VRでの距離感をオフラインでも同じように保つのが良さそうな気はしました。

|

VRChatのworldをquest対応

quest対応world

 

 VRChatはパソコンとoculus questの二種類の機材で遊ぶことができます。ハードウェア性能の違いで、quest対応のワールドやアバターは見映えでどうしてもPC向けのものに及ばなくなりがちなのですが……最近はquest対応していても見映えする3Dモデルが増えてきました。そしてこんなイベントも。

 

20220118-152340

 

 参加して先達の話を聞いてきました。
 というわけで次は実践です。

 

Vrchat_1920x1080_20220115_163651469

 できました! 『人形工房 Malion et Atelier』のquest版。

 以下、作業した際の雑感を。

 

quest対応とは?

 quest対応ワールドは制限が厳しいです。

  1. 容量100MB未満(必須)
  2. 推奨シェーダーがごく少数
  3. 容量や推奨シェーダー対応だけだと大抵とても重い

 必須の対応は「1」のみですが、「2」「3」にも配慮しないと(よほどシンプルなワールドでもない限り)まともに遊べません。例えば「2」ですが推奨を無視すると、

  • PC用シェーダーをそのまま使っても動くが、とても重くなりがち。
  • 自作・カスタムシェーダーも(見た目を追求するので)大抵重い。
  • 透過・半透過も公式非推奨。割と重い。

 「2」の対応は比較的簡単です。シェーダーをただVRChat mobile対応シェーダーに替えるだけ。ほとんどの市販アセット(部品)はStandardシェーダーが指定されていますがそれをStandard Liteに置き換えてしまえば動きます。一応。
 問題は「3」。リアルタイム3DCGとして軽快に動作するよう調整が必要です。具体的には、

  1. オブジェクト数(メッシュ数)をできるだけ少なく。
  2. マテリアル数をできるだけ少なく。
  3. 「2」に伴いテクスチャもできるだけひとまとめに。

 「そんなこと言われても……」ってなりますよね。blender等のモデリングソフトで全部自作しているなら最初からこの三つを満たすようモデリングすればいいし難しいことではないですが、市販アセットを組み合わせたプロジェクトでの対応となると「どうすりゃいいの?」となります。
 そこで定番ツール『MeshBaker』です。

MeshBaker

 具体的な使い方は下のような記事が参考になりました。どれもほぼ同じ内容でした。

 以下はMeshBaker全体像を把握するための話です。

 MeshBakerはunity向けの「テクスチャのアトラス化とメッシュ・マテリアルの結合ツール」です。定価は$90弱ですが、unity asset storeでは年に数度のセールで半額だったり70%オフになったりします。無料版もありますが結合可能マテリアル数が少なくてあまり実用的ではなさそうです。

  • オブジェクト数が少ない方が表示負荷が少ない→メッシュ結合
  • マテリアル数が少ない方が表示負荷が少ない→マテリアルを結合し、テクスチャも結合(アトラス化)

 という3D負荷を減らすためのツール。便利! ただし難も多いです。

  • 負荷軽減のための大雑把な知識が必要。
  • 作業の見通しが悪く手順がわかりづらい。
  • 結果が予測・制御しづらい。

 特に最後の「結果が予測しづらい」のは苦しいです。UVが壊れたように見えたり、テクスチャアトラスが不本意な状態になったり。オブジェクト内部の問題でそんなトラブルが起きるようなのですが対処が困難です。(アセットの中身をblenderに戻して設定し直さないといけなさそう)
 また一番目の「知識」の必要性も痛感させられます。MeshBaker作業を始めてから「ああ、動的要素とスタティックなものをあらかじめ分類しとけば良かった」って思うはず。一通り作業してから身に染みる手順が発生します。MeshBakerで得られる利点が「作業の見通しの悪さ」という難点の先にあるので「お勧め?」と訊ねられても「う~ん」と言葉が濁ります。
 でも数百あるオブジェクトを数個にまとめるような作業だとMeshBakerは便利です。元のデータを破壊するようなツールではないので安心して試行錯誤できます。

対応の結果

 quest化作業の実際はというと。(例は人形工房・初代questにて)

  • buildのみquest用→メモリ不足で落ちたり一桁fps以下
  • シェーダのみquest推奨に→10fps以下
  • オブジェクトを(オクルージョンカリングを意識しつつ)統合。シェーダはPC用。→10fpsくらい
  • (ガラス以外)推奨シェーダー化+オブジェクト統合→25fps

といった感じでした。アニメーションさせる人形モデルはボーンが入ったままだったりするので人形展示エリアは最低の25fps程度、スポーン部屋は40~50fpsとなります。部屋の仕切りでオクルージョンカリングも効果あるみたい。

quest対応のツボ

シェーダー:Lightmapped

 シンプルなdiffuseとライトマップの組み合わせですがstatic部分はこれでPC版に近くなります。テクスチャ主力ワールドのquest対応では一番頼りになるシェーダーです。

シェーダー:透過

 quest推奨シェーダーには透過/半透過がありません。ガラスのような表現がどうしても欲しい場合には、負荷に妥協して非推奨の"Standard"のtransparentが無難です。ガラス専用シェーダーの類は比較にならないくらい重いです。questでもReflection Probeは機能します。

シェーダー:dynamicオブジェクト

 インタラクトできたりアニメーションしたりするオブジェクトのシェーダー選択肢はStandard Liteが筆頭、ツヤテカさせたいものはBumped Diffuse Specularを。ただしquest推奨シェーダーはReflection Probeに反応しないようです。どうしても映り込みが欲しいオブジェクトはPC版向けのStandardシェーダーでSmoothnessを1へ。

シェーダー:頂点カラー

 quest推奨シェーダーはLightmapped以外だと「Albedoに頂点カラーを乗算」する仕様です。意図せず頂点カラーが設定されていると色がおかしくなります。また、逆にテクスチャを使用せず頂点カラーで彩色することもできます。人形工房ワールドでは作業机の上の顔料ビンの中身をテクスチャなしの頂点カラーで色づけしてあります。(メリットはあまりなさそう)

オクルージョンカリング

 公式マニュアルのオクルージョンカリングの項を読むべきです。MeshBakerでオブジェクトをまとめる際にも「まとめ過ぎるとオクルージョンカリングが効かなくなって負荷が減らない」事態が起こり得ます。どの程度オブジェクトをまとめるかはバランスポイントを探して手探りになると思います。例えば「ワールド全体に散らばってる小物」はひとまとめにせずに、中程度に領域別にまとめた方が無難なはず……。

MeshBakerでテクスチャ容量が増えた!

 テクスチャのアトラス化をすると使っていない部分が出るので容量的な効率は少し落ちます。が、それだけでなく、アトラス化テクスチャ外の個別のテクスチャもリンク、アップロードされてしまいワールド容量が倍増してしまうことがあります。そんな時はhierarchyからTextureBaker(0)以下を削除。

ギミック

 アバターと違いワールドで利用できるスクリプトはPC版と同じです。ドアの開閉のようなアニメーション、時計の針を現在時刻に動かす、操れるマリオネット、パーティクル、青空文庫システムなどのギミック類はPC版ワールドと同様に遜色なく機能しています。

まとめ

 わからないことがあった時に一番頼りになるのはunity公式の日本語マニュアルです。
 マニュアルはとてもよく整備されていてわかりやすいです。quest対応のための軽量化は、ゲームを前提としたunityの基本のようです。(questに採用されてるチップはスマホ用でスマホはunityゲームの一大市場です)

|

VRChatのUdonで遊ぼう

Udonとは?

 UdonとはVRChatでWorld製作時、使用することのできるグラフィカルなノードプログラミング言語です。こんなの。


操り人形のUdon Graph

 画像は操り人形を作った時のGraphで、Udon環境にはC#をほぼそのまま記述する(いわゆるプログラミング言語のフツーのイメージの)udonsharpという有志開発の環境もあります。

不評なUdon Graph

 Udon Graph、情報を求めて検索すると大変不評です。実際、VRChat World向けの高機能なasset(部品)を作成・配布している開発者はudonsharp利用派が圧倒的多数です。どうやら初期のUdonの機能があまりに少なく、画面操作もこなれていなかったために忌避され、udonsharpの登場でSDK3移行組が増えたみたい。また、プログラミングスキル持ちはテキストベースの開発言語の方に慣れているのでグラフィカルなノードプログラミングは迂遠に感じたのかも。

Udon Graphの実際

 実際はどうなのだろう、と触ってみました。

 悪くない。

 少なくとも、

  • Animation起動
  • 音の再生
  • オブジェクトの回転・移動

程度のことであればとても楽です。具体的には、

  • ドアの開閉
  • オブジェクトの表示/非表示
  • 入場音の再生

といったあたりでしょうか。udonsharp(やunity標準のC#)のようにプログラミング初学者には呪文でしかない変数宣言から解放されるのは好印象。unityのHierarckyタブにある目当てのオブジェクトをUdon Graph画面にドラッグしてくればそのまま利用できるのです。ノードを繋ぐ作業自体も楽しい。

 一方でうんざりしたのは四則演算や条件分岐でした。

 型変換や掛け算、割り算ひとつするごとにノードをひとつずつ増やさなくてはいけません。数式を、数式のままの形で扱えない……。if文の条件に入る論理演算も同様です。数式を扱うような処理はudonsharpを利用した方が断然楽です。

どハマリしたとこ

 以下は個人の体験に基づいているので錯誤している可能性も大いにあります。

Udon Graphで大いに填まったのが変数の代入です。

「え?」って感じですよね。

 試しに i=i+1 に相当するノードをUdon Graphで組んでみてください。

20211127-033043

 C言語系に慣れた人は上のようになると思うでしょう? ところが下のようにするのが正解のようです。(実は正解ではない。後述するがChimeCountを直接Set TempCCに代入してるのは結果をnullにする可能性があるっぽい)

20211127-033401

 Udon Graphは処理手順に注意が必要なようです。

 また、芳しくないバグ?仕様?もあります。

  • debug.logでconsoleに変数内容を表示しようとしてもnullが表示されることがある。
  • 変数から変数へ、演算を経ない代入をすると値がnullになることがある。
  • Udon Graphで用意されたGet系ノードは変数に格納せずに呼ぶとnullを返すことがある。
  • 分岐させた制御ノードを合流させると正常に動作しない。
  • ノードの変数をドロップダウンから別のものへ変更すると接続できないはずの型へ変更できてしまう。

作例

 以下は自作world『人形工房 Malion et Atelier』で使用したUdon Graphです。

  • 時計の分針、時針を動かして現在時刻を表示
  • 時鐘を鳴らす

というもの。簡単なはずの処理ですが割と複雑になってしまいました。

20211205-130508

ゲームプログラミングということ

 Unityも、その上で動くVRChatも、ゲームを前提としたシステムです。Udon Graphで記述する内容の多くはEvent発生時の一回だけの処理かOnUpdateのような毎フレーム行われる処理になります。特に後者の毎フレーム行われる処理はループの中にあることを強く意識しないとうまく機能しません。

まとめ

 基本的な使い方でトラブルに遭遇しがちなUdon Graphですが、UnityC#の提供している機能の多くにアクセスできるようにはなっていきていて、初期のUdon(SDK3)がSDK2に比べて使える機能が少なすぎたというのは過去の物と思います。アニメーションの起動やシンプルなギミックはUdon Graphのノードプログラミングが簡単で楽しく、数式を扱うならudonsharpが良さそうです。ひとつのworldでUdon Graphとudonsharpが混在していても問題ないので、機能ごとに向いた方を使っていこうと思います。

 悪くないよ、Udon Graph!
 udonsharp構築したMerlin氏すごい!

|

VRChatでworld製作

もくじ

  1. TUKIKAGEカフェ
  2. SF系集会イベ会場を作りたかった
  3. 原作再現ポイント
  4. イベント会場として
  5. 実製作
  6. 課題詳細
    1. blender作業
    2. 基本のライティング
    3. Light Map
    4. Light Probe
    5. Reflection Probe
    6. 自作小説・青空文庫システム
    7. oculus quest版
    8. To Do
  7. 使用アセット一覧
  8. まとめ

 

TUKIKAGEカフェ

 VRChatにてworldを製作・公開しました。川原由美子のコミック作品『TUKIKAGEカフェ』に登場する喫茶店の再現・二次創作worldです。このworld製作についての四方山話・感想をまとめておきます。

Vrchat TUKIKAGEカフェ Vrchat TUKIKAGEカフェ

TUKIKAGEカフェ -Moonlight Cafe- by 藤あさや TouAsaya

SF系集会イベ会場を作りたかった

 当初、作るつもりでいたのはSF(Sci-Fi)について雑談集会のできるworldで、クラークの『白鹿亭綺譚』をモデルにするつもりでした。ところが白鹿亭は英語版の表紙こそ巨大タコが絡んでいたりしますがぱっと見の建物としてはありふれたバーという設定で特徴を出すのが難しそうです。そこで方針転換。私にとってのSFジャンルのビジュアルならば加藤直之、佐藤道明、そして川原由美子です。VRChat内の漫画紹介イベントで『TUKIKAGEカフェ』を紹介したりfriendに推して良い手応えが得られていたところでもありました。
 ならば、『TUKIKAGEカフェ』をSF集会の会場にしてしまおう! となりました。

原作再現ポイント

 二次創作として再現してみたポイントは以下の通り。

  • ながいながい下り階段
  • 「アイスクリームみたいな」月を象った建物
  • 階段に踊り場があること
  • カフェ室内は東洋の香り漂わせたい
  • 背景でイメージ的に登場した蝶・花をどこかに盛り込む(天の月の影)

 原作にはない要素は、

  • 月の見える天窓(原作には窓がないと明記されている)

イベント会場として

 一方でイベント会場としての機能も必要です。

  • ひとつの輪になってトークンを渡しながら会話
  • 進行している話題リスト表示
  • 自身の姿を確認する鏡
  • 筆談具
  • イベント中負荷が軽いこと

 こんな要件を満たせれば良いと思ったのでした。

実製作

 二次創作worldとはいっても原作『TUKIKAGEカフェ』はデテールは細かに描かれる部分と少女漫画的、あるいは中国絵画のように幻想的なイメージに寄せて描かれている部分とに大きく分かれ、3D構造物化では自由度の大きな作品です。というわけで

ビルとビルとビルビル
ばっかりの谷間に
アイスクリーム
みたいなカフェ
ながいながい
階段をくだって
たどりつく山頂

川原由美子『TUKIKAGEカフェ1』朝日新聞出版社p.6-7より

のような描写や印象的なカットを頼りに、具体的な形は想像で補い作ることにしました。

 また、VRChatのworld製作は実質的に初めてです。技術的な課題を決めて取り組むことにしました。

  • blenderを使いたい
  • unityの一般的なworld要素は一通り使ってみよう
  • アニメーションやインタラクションする機能は外部アセットに頼ろう

を基本に据えました。具体的には

  • 月を象った球形の建物のアセットなどないので自作
  • Light Map、Light Probe、Reflection Probe等の動作の軽量化&ライティング要素を一通り使おう
  • worldペン、鏡、テレポーター、椅子といったSF集会イベ用の機能を揃えよう
  • ボリュームライトがかっちょいいのでひとつは使おう
  • 自作小説も置きたい

がTo Doとなりました。
 world作りに当たっては、VRC哲学カフェのworld自作&イベ運営されているまさきさんの『設計からUnityまで はじめてのワールド作り』やtiwaさん主催の『World Creator's Cafe』イベントが大きな力になってくれました。またunity公式のマニュアルも日本語化されていて使いやすいです。具体的な調べ物はほぼ公式マニュアルで片付きます。

課題詳細

blender作業

 モデリング自体はコミPo!用にmetasequoiaをいじっていたり、VRChat用にアバターを自作していたこともあって作業量と造形センスの不足くらいしか問題がなかったです。blenderこねこね、楽しいです。

基本のライティング

 まずはライティングを調整しておかなければ始まりません。worldの見た目の大半が決まるライティングは説明しづらいですが、現実で写真を撮る時のライティングと近いです。大雑把に作業手順を並べると、

  1. とりあえずメインになるdirectional lightを置く
  2. 一番暗くなる影となる場所の明るさをskybox、environment lightingで決める
  3. ダイナミックなdirectional lightは一個は置く(おまじない)
  4. point lightやspot lightを配置して明るく照らす場所を決める

 暗い場所の明るさを最初に決め、明るい場所を作ってグラデーションやコントラストを調節する感じです。

Light Map

 unityのライトマップ機能はworld制作では必須に近い機能です。動的なライティングを最小にして、静的(static)なライティングをメインにすることでworldの描画負荷を下げることができます。陰影をあらかじめ焼き付け――ベイクする機能です。ライトマップはパラメーターも多く、初めてunityで扱うとなれば手探りになります。「ライトマップってなんなの?」というところから呑み込まないといけないのでけっこう面倒くさかったです。

Light Probe

 ライトプローブは「ライティングを静的にしちゃったらアバターの照明がどこでも一様で雰囲気できない」を解決する機能です。worldに設置した静的な照明をアバターを始めとした動的(dynamic)な物体に反映させるためのもの。屋外と屋内で明るさに差があるようなworld、全体が薄暗くて点々と照明が存在するようなworldに効果的なようです。目的がわかっていれば作業は簡単。

Reflection Probe

 これは製作するworldによって要不要が大きく分かれます。ツヤテカの金属や映り込みの欲しいガラスがあるならばぜひ設置しましょう。ツヤテカの部分に周囲の景色を写し込むための機能です。pick upできるワイングラスなんかは周りの景色が映り込むとすっごく格好良くなります。公式マニュアルにとても役立つことが書いてあります。

自作小説・青空文庫システム

 これは別記事『VRChatの青空文庫システムで自作小説をworldに置こう!』にて細かく説明しています。テキストファイル相当の容量+8MBで、自worldに縦書き日本語電子書籍が置き放題になるアセットです。イラストや横書きは不可。本来は青空文庫の16000以上の作品を置くためのものです。

oculus quest版

 今回のworldはquest版も製作しました。といっても作業は、

だけです。

To Do
  • パーティクルを使った演出
  • 屋外の低い場所に霧を這わせたい
  • オブジェクト数が100近いのを数個にまとめ、テクスチャもアトラス化したい→MeshBakerのセール待ち
  • 楕円軌道リングのアニメーション解説モデルの仕込み

使用アセット一覧

蝶の飾り - 藍夜野雑貨 booth支店 - BOOTH
メガネ向けガラスシェーダー Ver.2.1 - お休みさんの作ったもの - BOOTH
[VRChat]ワールド用インスタンス人数カウンター(SDK3.0) - KineL - BOOTH
【VRChat】スイベルチェアーギミック(座高調節機能付き)【Udon】 - みみーラボ - BOOTH
VoxkeVolumetricLight - ボクスケショップ - BOOTH
VRC Udon Starter Kit β Ver0.90 - Tesla design laboratory - BOOTH
【VRChatワールド用】青空文庫システム - スズ製作所 - BOOTH
誰でも操作できる同期uGUI - テキスト入力編 - ハツェの真時代傾向璋 (hatenablog.jp)
Rock and Boulders 2 | 3D Exterior | Unity Asset Store
Yughues Free Wooden Floor Materials | 2D Wood | Unity Asset Store
Yughues Free Decorative Plants | 3D Interior | Unity Asset Store
Plank Textures PBR | 2D Wood | Unity Asset Store
Skybox Series Free | 2D Sky | Unity Asset Store
Wooden Floor Materials | 2D Wood | Unity Asset Store
Table with chairs x3 Free | 3D Furniture | Unity Asset Store

まとめ

 最初にworldをprivate登録したのが2021年の1月。当時はまだ白鹿亭を作るつもりでした。具体的な作業に入ったのは6月。機能は新造せず既存のものを利用し、見た目を整える範囲の作業だけしたこともあって楽しめましたし、unityの機能を調べるのも面白かったです。

|

HaritoraX購入

HaritoraX

 五月半ばにVR用フルトラッキング機材・HaritoraXを予約購入しました。

 HaritoraXは慣性センサ(ジャイロ)を使うトラッキング機材で27,900円。PC用のVR機器です、HMD+ハンドコントローラーの三点トラッキングに加えて使用することで胴体・足の動きをVR世界に反映させることができるようになります。私の環境では

oculus quest

ゲーミングPC

HaritoraX

ということになります。

HaritoraX到着

_dsc0185
_dsc0187

 七月末に発売元から連絡があり私の予約したHaritoraXの発送は8/6になるとのこと。連絡通り8/6発送で8/7に到着しました。

HaritoraX稼働!

 デスクトップPC(HP Pavillion)のbluetooth環境がイマイチだったのか当初は通信が確立せず、bluetoothのUSBドングル+延長ケーブルを手配して動くようになったのは8/10のことでした。

Vrchat_2560x1440_20210810_222742803

 足が動いた!
 生身の足の位置と多少位置がズレていたりしますが、それは上半身でもあることであまり気になりません。内股もガニ股もできる。足も組めなくはない。何気なく嬉しかったのが腰のひねりや上半身の傾きが表現できること。自然なポーズが自然に取れる!

 PCの画面しか知らなかった状態からoculus questでVR世界を体験したときほどのインパクトはないですが、こんなに簡単に全身が動くようになったことに感慨を覚えます。使い始めたばかりの印象を列挙すると……

  • 大振りのアクションはHMDを付けたままだと怖くてできない(ダンスやアクション見せてる人すごい)
  • トラッキングが“飛ぶ”ことはなく、キャリブレーションも思ったほどずれない
  • トラッキングのレスポンスは両手と同じくらい
  • キャリブレーションにはコツがあるっぽい
  • VRの準備にかかる手間が増えた
  • バッテリーの持ちがかなり良い
  • 鴨居にロープを張って雑多なものをぶら下げてるような部屋でもトラッキングできる。viveのベースステーション&トラッカーで伝え聞くように遮蔽物や赤外線の反射に阻害されない。(布団被ってても問題なく機能する)

 使えるようになるまでに遭遇したトラブルは……

  • Winのbluetooth管理では認識するのにHaritoraConfiguratorで接続できない→BTドングル+延長ケーブル買って解決
  • HaritoraXの組み立て(マジックテープに本体を組み込む)で向きを間違えて最初変な動きになった
  • VRChatログイン(アバター変更)後、Tポーズから抜け出せない→両手コントローラーを腰に当てトリガー
  • OVR Advanced Settingのspacedragを使っても地面に潜れない→HaritoraConfiguratorで設定

という感じです。HMDセットの三点トラックだけで十二分にVR感は楽しめるのでさほど強くは推せないのですが、VR世界の写真被写体としての幅が大きく広がるのは間違いないです。AirLinkとの併用で(長時間ではないですが)完全無線フルトラも可能なのでダンスを楽しむVRChatユーザーにとっても魅力があるのではないでしょうか。

購入一ヶ月後

 慣れてきた頃の感想など。

  • キャリブレーションのズレは装着中のバンドのズレが大きい
  • フルトラ適性の高い/低いアバターがよくわからない(明確に適性の低いものはあるがベストなものが見つからない)
  • バッテリーの持ちは間違いなく良い
  • 装着に時間がかかる。フルメッシュのzozoスーツみたいなの欲しい。

|

VRChatの青空文庫システムで自作小説をworldに置こう!

 以下の記事は青空文庫システムv8での内容です。

青空文庫システム・AOZORA LIBRARY

 六月下旬に青空文庫システムというVRChat用のアセットが登場しました。青空文庫収録作品の中から16082冊(登場当時)を収録したworldを作成するためのものです。作者さんによるこのアセットを使用したworld「AOZORA LIBRARY」を訪れて驚きました。一万六千冊以上の本があるのに200MB弱しかないのです。
 この収蔵数と容量から「テキストで格納しているのでは」と想像し、ツイートしてみたところ、作者の方から肯定のお返事を頂きました。テキストを1ピクセル2文字で画像にエンコードして格納しているとのこと。

 素晴らしい!

 何が素晴らしいかというと、これまでVRChatのworldで「本」の体裁で読めるものを置こうとしたときにテクスチャ画像として貼り付けるという形で持ち込むのが一般的でした。特に縦書きはunityの文字系機能が対応していないこともあり、テキストをテキストのまま持ち込むのは困難だったのです。そこに、

  • テキスト形式
  • 縦書き
  • ルビ
  • 字下げ
  • 文字が滲まないボケない
  • フォントの字形が画一的でない

に対応した「本」のアセットの登場です。文字はフォントで表示されるため、近づいても滲んだりボケたりしません。読める本16000冊余を置いたworldが作れてしまいます。
 最後の字形が画一的でないというのは紙の(特に活版時代の?)印刷物的な印字結果の揺らぎを与えたもののようです。

 このアセットが公開されてから数日後、自作テキストをこのシステムでworldに置くことができる「おまけプログラム」が追加公開されました。
 この「おまけ」はサポートなしが明言され公式からはガイドなしです。その方法を私にわかった範囲で解説します。(この記事の内容は私が勝手に調べて推測の元に書いたものです。強調しますが、開発元から「サポートなし」が明言されている機能です。「おまけ」機能に不明点があったとしても作者・スズ製作所様への問い合わせなどはしないでください)

大まかなしくみ

テキスト・書誌情報設定

テクスチャに格納

worldプロジェクトに設定

という流れで作業をします。

「おまけプログラム」設定ファイル構成

 ダウンロードした「おまけ.zip」は図のように展開されます。

20210629-031231

 自作テキストを登録するために触れる必要があるのは

  • skycode/books/*.xhtml …… 書籍テキストを格納する
  • skycode/books.json …… 書誌情報を格納する

のふたつです。これらを編集後、skycode/skycode.exeを実行すると以下のファイルが生成されます。紫字はv6にて追加されたもの。

  • skycode/out/card_0.png
  • skycode/out/code.txt
  • skycode/out/content_0.png
  • skycode/out/authors.txt
  • skycode/out/numPages.txt
  • skycode/out/sortedAuthorBookIndices.txt
  • skycode/out/sortedAuthorRubys.txt
  • skycode/out/titleRubys.txt
  • skycode/out/titles.txt

これらをプロジェクト内に配置・設定することで自worldに青空システムを使った自作「本」が置けるようになります。

作業手順1 書籍内容の用意

 「おまけ.zip」を展開した中の skycode/books/sample.xhtml がサンプル書籍になっています。

改行 <br />
改ページ <span class="notes">[#改ページ]</span>
字下げ

<div class="jisage_?"></div>
?に字下げ文字数を設定。<div>と</div>の間に字下げする段落を記入。

ルビ <ruby><rb>親字</rb><rt>ふりがな</rt></ruby>

 使用できる記法は以上。sample.xhtmlの書式を真似して、本ごとにxhtmlファイルを分けて作ります。本はsample.xhtmlと同じ場所に置きます。一冊一ファイル。ファイル名はお好みでOK。

作業手順2 書誌情報編集

 同様に skycode/books.json を編集します。

        {
"title": "タイトル",
"title-ruby": "たいとるるび",
"subtitle": "サブタイトル",
"subtitle-ruby": "さぶたいとるるび",
"author": "著者",
"author-ruby": "ちょしゃ",
"translator": "翻訳者",
"translator-ruby": "ほんやくしゃるび",
"xhtml-path": "books/sample.xhtml"
},

「タイトル」や「たいとるるび」「著者」「ちょしゃ」をご自身の本のものに書き換えればOKです。「サブタイトル」や「翻訳者」といった項目が不要であれば : より右側の""内を削除しておきます。
 "xhtml-path": "books/sample.xhtml" は skycode/books に置いた(作業手順1で作成した)書籍ファイルのxhtmlのファイル名を記入します。
 初期状態では三冊分の書誌情報が仮に書き込まれていますが、skycode/books に置いた表示したい「本」(※)の数だけ記述します。

  書誌情報 books.json の一番上の一冊はアセットの「検索」機能の結果には表示されません。(world : AOZORA LIBRARYではワールド案内用書籍――テーブルの上に置かれている本――に使われているそうです) ランダム棚には表示されます。ダミーの書籍なりなんなりを登録しておくのが良さそうです。
 ※ {}は必ず対になる一組の数、区切りの , も過不足のないように。

作業手順3 unity用ファイル生成

 作業手順1、2で本の内容と書誌情報が揃ったら、skycode/skycode.exe を コマンドプロンプト から、かつ skycode.exe のあるディレクトリで 実行します。すると skycode/out フォルダに以下の九つのファイルが生成されます。

card_0.png 書誌情報が格納されたpngファイル
code.txt unityプロジェクト内のファイルを編集するための情報
content_0.png 「本」の本文がひとまとめに格納されたpngファイル
authors.txt 著者情報
numPages.txt 「本」の各巻開始インデックス
sortedAuthorBookIndices.txt 著者のインデックス(検索用)
sortedAuthorRubys.txt 同上ルビ(検索用)
titleRubys 「本」タイトルルビ(検索用)
titles.txt 「本」のタイトル(検索用)

作業手順4-1 unityへの青空システムの導入

 青空システムの「本」を置くためのworldのプロジェクトを開きます。(worldそのものの作成、sdkの導入等はここでは説明しません)

 青空システムのアセットをプロジェクトに追加します。

作業手順4-2 unityプロジェクトへの「本」データの追加

 次いで、explorer上での作業になります。
 unityプロジェクトの保存フォルダ(˜/Unity/プロジェクト名/Assets/AozoraLibrary/Textures)に作業手順3で作成されたファイルすべてをコピペで上書き保存します。

 unity上での作業になります。
 プロジェクトのprojectウィンドウの ˜/Asset/Aozora/Texutures フォルダでは card_0.png とcontet_0.png 作業手順3でコピーしたもの
に置き換わっているはずです。これら画像のinspectorで、下ので囲ったようになっていることを確認します。「本」のデータにはバイナリ一致が必要であるためのオマジナイです。

20210629-042750_li-2

作業手順4-3 unityプロジェクトの書籍データの関連付け

 書誌情報と書籍内容の入ったpngデータをunityのオブジェクトへ関連付け(の確認と余分な関連付けの除外)をします。

 Hierarchyの
 Asset/AozoraLibrary/Material の CoverFace マテリアルの Card 項目画像と PaperRight と PaperLeft マテリアルの Content0 項目画像が それぞれ 作業3 で上書きコピーし 4-2 で確認した画像に指定されていることを確認します。

 作業4-2でご自身で追加した以外の画像( Content1 や Content2 )が登録されていた部分はnoneにしておきます。

作業手順4-4 unityスクリプトの変更

 作業手順3 で得られた code.txt の内容をプロジェクトのスクリプトに反映させます。
Projectの Assets/AozoraLibrary/Script フォルダの内容を表示します。以下このフォルダでの作業です。拡張子 .cs ファイルがテキストエディタに関連付けられている前提となります。

 Book.cs をテキストエディタで開き、
 private int[] numPages2 =
 の右辺を作業手順3で得た code.txt のものに置き換えます。

 SearchSystem.cs をテキストエディタで開き、
private string[] authors =
private string[] titles =
private string[] titleRubys =
private string[] sortedAuthorRubys =
private int[] sortedAuthorBookIndices =
 の右辺を同じように code.txt のものに置き換えます。

終了

 作業手順4-4の変更内容を保存し、テキストエディタを閉じて、worldのアップロードを行います。手順に誤りがなければ自作の「本」がVRChat内で読めるようになっているはず。

サンプル

 上記作業で作成した自worldです。

VRChat - TUKIKAGEカフェ -Moonlight Cafe-

追記・quest向けworld

 青空文庫システムはquest向けworldにも導入できます。表示品質はPC版とまったく同等です。すごい!

  • world容量上限50MB

 制限はきついですが、市販の文庫本一冊相当の文章量で300KB程度にしかならないので数十冊であれば十分に設置可能です。quest対応のための作業は

  1. 作業手順4-1以降のunity上の作業が違うだけ
  2. buildターゲットをquest(android)に設定します
  3. 書誌情報 card_?.png と本文 content_?.png に加え、フォントを格納している font.png にも作業手順4-2の設定をして不可逆圧縮を回避します。
  4. アップロードで完了

 ファイルサイズは

書誌情報 card_?.png 数KB
本文 content_?.png テキストファイルとほぼ同容量
フォント font.png 8.4MB

 程度なので個人のライブラリとしては十分な数の本が置けるのではないでしょうか。

|