Unityで無料アセット(湖)を使うとピンク色の表示になる対応

Pocket

ARにちょいと興味があり、さしあたってUnityに軽く手をつけ始めました。
手元に参考書籍(以下)があったので最初からやってます。

で、「1.天地創造」の「神の4日目:海(湖)をつくる」でWaterProDaytimeを貼りつけるとピンク色のテクスチャが。。。

色々ぐぐってみると、どうもテクスチャがうまく取り込めてない様子。インポートできていないか、コンパイル時のエラーがあるようです。エラーの状況から判断するにshader周りで何かまずい予感がします。以下対応したところちゃんと表示されました。

[Hierarcy]で配置した湖(WaterProDaytime)を選択。[Inspector]の[WaterProDaytime]右側にある歯車アイコンを選択します。
img_001_3

[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

img_002_2

変数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に戻ると、ちゃんと湖が表示されました。

結局のところ何が悪かったのかよくわからないのですが、無料アセットだからバグとかあったのかも?とりあえず対応策でした。

広告

Pocket

One Comment

  • 初unity 返信

    全く同じ状態になって困っていました。
    情報を載せて頂きありがとうございます!

初unity へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です