PH HoneyPot Tips 3 (JP)
HoneyPotを使ってPHで使えるようにしたHS1-MODのシェーダーの変え方です。
2021年2月4日
HoneyPotを使いPHで使えるようにしたHS1-MODの表示のされ方を変える。
(シェーダーを変える)
その方法についてです。
まず、基本的なこととして
PlayHome(PH)とHoneySelect(HS1)は同じUnityというシステムを利用して作られていますが、使われているUnityのバージョンが違います。
HS1: Unity 5.3.x
PH : Unity 5.5.x
Unityではバージョン番号の前二つが違う分は互換性はありません。
したがって、基本的にそのままではデータ(アセット)は相互に利用はできません。
特にプログラムはそれぞれのバージョン用のソースコードを使う必要があります。
HoneyPotによってUnity 5.3.xのasset(HS1-MOD)を利用可能にしています。
私にはプログラムの詳しい仕組みはわかりませんが
HoneyPotがHS1-MOD(Unity 5.3.xのasset)から情報を取り出し、PHのメインプログラムが認識できるデータに構成しなおしているのだと思います。
HS1-MODを大量にインポートすると、それに比例してPHの起動に時間がかかるようになります。
シェーダーについては、HoneyPotInspectorが割り当てるシェーダーを決めます。
HS1-MODで使われているシェーダーはUnity 5.3.x用であり、PHでは使えません。
HoneyPotInspector.exeがHS1-MODで使われているシェーダーを調べ、代わりに割り当てるPHのシェーダーを決めるHoneyPotInspector.txtを作成します。
HS1-MODでカスタマイズされたシェーダーを使っている場合、プログラムでは識別できません。
HoneyPotInspector.exeがし識別出来なかったHS1-MODは、基本的な「Standard」シェーダーが割り当てられるみたいです。
そういったHS1-MODは、PHにインポートできてもHS1で使うのとは見栄えが変わってしまいます。
PHで使うHS1-MODのシェーダーを変えたい場合、Unity 5.3.xのassetの状態のまま変更するのはあまり良い方法ではありません。
私が最適だと思う方法は
・HoneyPotInspector.txtを編集して、HoneyPotが置き換えるシェーダーを変更する。
このTipsではこの方法を解説します。
・PH MaterialEditorを使ってシェーダーを変更する。
パラメーターも変えられるし、PHで状態を見ながら変更できるのでより良い状態にできますが、キャラカードやシーンデータに保存して都度ロードする必要がある。
・Unity 5.3.xのassetから各データをエクスポートし、Unity 5.5.xのassetにインポートする。
一番確実ですが、それなりにMOD作成の知識が必要ですし、手間もかかります。
1.サンプル
参考としてShinkiさんの「Jungle Props」を使います。
それをそのままPHで使える様にして「[Shinki] Jungle Fallen Tree」を配置してみると
画像のように、ほとんどの部分がガラス細工のような感じになっています。
調べてみると、これには「HS Standard」というカスタムシェーダーが使われていました。
したがってPHでは「Standard」シェーダーが割り当てられていますが、良い見栄えとは言えません。
PH MaterialEditorを使ってシェーダーを変えてみると、「Shader Forge/PBRsp」にするとパラメーターを変更しなくてもよい感じだと思います。
「Jungle Props」の他のマテリアルのシェーダーは、
木の幹や葉の茎、岩、土などには「Shader Forge/PBRsp」
葉や草などには「Shader Forge/PBRsp_culloff」(両面シェーダー)
あたりが良いかと思います。
あくまで私の主観での変更です、各自の好みに合わせて変更してください。
2.HoneyPotInspector.txtの編集
HoneyPotInspector.txtを編集して、シェーダーが「Shader Forge/PBRsp」と「Shader Forge/PBRsp_culloff」になるようにします。
まずHoneyPotInspector.txtの書式は
MOD本体のパス|マテリアルの名前,シェーダーの名前,Render Queue
“Game-Root/HoneyPot/”フォルダにあるHoneyPotInspector.txtをテキストエディタで開きます。
テキストエディタはUTF-8の文字コードを扱えるものを使ってください。(Windowsのメモ帳は非推奨)
「Jungle Props」に関する記載の部分を探します。
そのままインストールしていればMOD本体のパスは「studioneo/shinki/jungleprops.unity3d」()です。
(注・参考画像とは違います。手持ちのHS1-MODでよく確認してください。)
「マテリアルの名前」までしか記載されていない状態だと思います。
その後の「,」の後に「PBRsp」と「PBRsp_culloff」を追加します。
「Render Queue」は今回の分では省略可です。
全てを変更し終わったら保存して閉じます。
3.確認してバックアップ
PHを起動してちゃんとシェーダーが変わっているのを確認します。
HoneyPotInspector.txtはHoneyPotInspector.exeを実行する毎に新規作成した方が良いので、
編集した部分をバックアップしておきます。
バックアップを保存する場所とファイル名はお好みで良いですが、同じフォルダ内にも置いておくとのちの編集がしやすいと思います。
以降は、HoneyPotInspector.exeを実行した後はHoneyPotInspector.txtの中の「Jungle Props」の部分は削除し、バックアップの内容に置き換えます。
参考
HoneyPotInspector.txtに記載する「シェーダーの名前」は、同じフォルダ内にある「shader.txt」に記載されている名称だと思われます。
「Render Queue」は省略した場合、HS1-MOD自体に設定されている値が読みだされるのだと思います。
他に「-1」とした場合は、そのシェーダーの規定値に設定されます。
不透明用のシェーダーの場合は、省略か「-1」で良いです。
透過系のシェーダーを使った髪や服の場合で、表示におかしなところがある場合は、「Render Queue」を適切に設定しなおすことで良くなる場合もあります。
HoneyPotInspector.exe(改良版)の説明にも書かれていたので知っている方も居ると思いますが、
HS1-MODを追加したときに、直接、HoneyPotInspector.txtに必要な記述を加えれば、HoneyPotInspector.exeを実行する必要はありません。
当然必要な情報を理解している必要があるし、それなりに手間もかかるので、好みの方法で行うとよいです。
- 関連記事
-
-
PH HoneyPot Tips 3 (English) 2021/02/04
-
PH HoneyPot Tips 3 (JP) 2021/02/04
-
How to use PH MaterialEditor in "PH Panels 2" (English) 2021/01/29
-