Photo Book の使い方

"Photo Book"というVRChatのワールド向けアイテムをBoothにて配布しています。

サンプルが置いてあるワールドのURLはこちら。prefabが置いてあるだけですが、手触りはわかると思います。


この記事では、Photo Bookの使い方やUnityでのセットアップについて説明します。

使い方 in VRChat

VR環境とDesktop環境で操作が異なります。

本の開閉
VR:Pickupした状態でトリガーを引く。
Desktop:Pickupした状態で左クリックを押す。

ページめくり
VR:本のページ端にあるコライダーをPickupし、"めくる"。
Desktop:本のページ端にあるコライダーを左クリック(Interact)する。

本の大きさ変更
VR:片手で本をPickupした状態で、もう片方の手でトリガーを引くと大きさを初期化する。大きくしたい場合はその状態で両手の距離を離し、小さくしたい場合は両手の距離を近づける。
Desktop:マウスのホイールを動かす。

その他仕様メモ
・VR環境下において、ページを最後までめくりきらなくても一定以上ページを動かしていれば自動で最後までページを動かしてくれます。
・設定しているページ数以降にはページをめくることはできません。このとき、ページめくりコライダーが非表示になっています。
・本の大きさを変更したとき、各コライダーの位置は自動設定されます。




セットアップ in Unity

①事前準備
Boothにて当アセットをダウンロードし、Unityにインポートします。"PhotoBook.prefab" をHierarchy上に配置してください。
注意:"PhotoBook.prefab"内にある各オブジェクトの名前やTransformを変更しないでください。Udonが正しく動きません。

②写真テクスチャの準備
使用するテクスチャをUnityにインポートします。このとき、Importerの設定は必要ありません。
PhotoBook.prefab 内に"GenerateAtrasTexture"というGameObjectがあります。

prefabの内容

GenerateAtrasTexture(GameObject)には、同名のScriptがアタッチされています。このスクリプトを使って、それぞれのテクスチャを1枚のテクスチャにアトラス化(結合)します。

基本的に Element 0 に指定されているテクスチャの解像度を基準にし、他のテクスチャの解像度がそれと異なる場合は同じ解像度にリサイズしてアトラス化します。もし Element 0 のテクスチャが高解像度の場合、巨大なサイズのテクスチャが生成されることになるため、回避したい場合は "Resize First Texture" にチェックを入れてください。Element 0 のテクスチャの解像度を半分にし、それを基準とすることができます。
テクスチャをセットできたら、"Generate" ボタンを押してください。Save Path に指定した場所にテクスチャが生成され、マテリアルに自動的にアタッチされます。
Book_mesh 及び Book_material には自動的に同prefab内で使用されているものが選択されます。もし何もアタッチされていない場合、テクスチャをセットしなおすと Book_mesh 等も再セットされます。

③マテリアルの設定

Photo Setting

Photo Setting では、写真テクスチャの設定をします。
"Page Count" では、生成したアトラステクスチャの数を指定します。標準での最大数は24枚です。
"Use Emissive" にチェックを入れると、写真テクスチャ部分がライティングの影響を受けないようにします。

Book Settings では、本の基本設定を行います。Standard Shaderと同様の挙動です。
"Book Aspect"には、Photo Setting で指定した Photos テクスチャのアスペクト比を入力します。例えばサンプルの場合、元のテクスチャがアス比 16:9 なので、 "16/9 = 1.777778" が入力されています。アトラステクスチャを生成した際に Photos Texture と一緒に値が計算され入力されますが、手動でテクスチャを差し替えた場合にはこちらも再入力してください。

Decal in Cover では、本の表紙を想定したテクスチャの設定を行います。Decal には透過テクスチャを使用することを推奨します。サンプルテクスチャを参考にしてください。SmartNormap などを使って NormalMap を生成するといい感じのものが作れると思います。

"Open Left" では、本を開く向きを指定できます。
ワールドの初期状態として本を開いておきたい場合、"Anim Open Book" の値を 1 にしてください。
"Max Open Rate" では、本の開き具合を調整できます。

④Book_meshのScale調整
適宜 Book_mesh のTransform の Scale を変更して大きさを調整してください。ただし、X,Y,Zの値はすべて同じにしてください。

⑤おわり
Book_meshのSkinnedMeshRendererのBoundsや各コライダー、Udonの設定は必要ありません。すべて実行時にUdonが自動でいい感じにやってくれるはずです。

⑥その他仕様メモ
・この本は Standard Shader 準拠の Shading を提供します。
・"GenerateAtrasTexture" は EditorOnly タグを指定しているため、Build時に自動的に削除されます。Prefabから手動で削除する必要はありません。
・当たり前ですが、写真の数を多くすればするほどテクスチャ容量やShaderの負荷が大きくなります。現状では24枚が最大数ですが、スクリプトやShaderにちょっと追記すればいくらでも増やすことはできます。内部的には36枚に対応しています。
(2023/04/16追記)
・本の3Dモデルの差し替えはできません。ギミックに必要なデータが仕込まれているためです。ご了承ください。


以上になります。必要なのはマテリアルの設定だけなので導入は難しくないと思います。説明していないパラメータもありますが、触ってみるとなんとなくわかると思います。よしなに使ってみてください。


不具合等ありましたら、 Boothのメッセージ機能にてご連絡ください。 Twitterでもかまいませんが、DMは何故か通知が出ず気づけない可能性が高いため、普通に@をつけてください。