ARにちょいと興味があり、さしあたってUnityに軽く手をつけ始めました。
手元に参考書籍(以下)があったので最初からやってます。
で、「1.天地創造」の「神の4日目:海(湖)をつくる」でWaterProDaytimeを貼りつけるとピンク色のテクスチャが。。。
色々ぐぐってみると、どうもテクスチャがうまく取り込めてない様子。インポートできていないか、コンパイル時のエラーがあるようです。エラーの状況から判断するにshader周りで何かまずい予感がします。以下対応したところちゃんと表示されました。
[Hierarcy]で配置した湖(WaterProDaytime)を選択。[Inspector]の[WaterProDaytime]右側にある歯車アイコンを選択します。
[Select Shader]を選択すると、Errorsに以下のメッセージがあった。
undeclared identifier 'unity_ObjectToWorld' Compiling Vertex program with WATER_REFRACTIVE Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING
変数unity_ObjectToWorldが宣言されていないようです。エラーメッセージをダブルクリックすると、Visual Studioが起動します。
FXWaterPro.shaderというファイルの最上部に以下のような怪しいコメントを発見。
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'
とりあえず元の変数名「_Object2World」に直してみます。
具体的には以下のプログラムを修正。
float4 wpos = mul(unity_ObjectToWorld, v.vertex);
以下のように直します。
float4 wpos = mul (_Object2World, v.vertex);
で、Visual Studio上部にある[Start]ボタンを押下してコンパイル。Visual Studioを終了してUnityに戻ると、ちゃんと湖が表示されました。
結局のところ何が悪かったのかよくわからないのですが、無料アセットだからバグとかあったのかも?とりあえず対応策でした。
One Comment