SketchUpとUnityのマテリアルのタイリングサイズを揃える
SketchUp上でマテリアルを設定したファイルを、sketchup2015形式で保存し、Unity上にインポートして利用する場合のお話です。
SketchUpのマテリアルはやや表現力に乏しいので、Unityにインポートした後に、Unity上で違うマテリアルを割り当てたいことがあります。
Unity上のマテリアル(私の場合SubstanceDesignerで作成したマテリアル)をSketchUpオブジェクトに割り当てると、テクスチャの柄が消えて、単色で表示されているように見えます。これは実際には、テクスチャサイズが極端に引き延ばされた状態になってしまっているのが原因で、試しにテクスチャのタイルサイズを1から0.01ぐらいの小さな値にしてやると、期待通りのテクスチャの柄が表示されます。
ですが、この調整する数値に一貫性が見当たらないので、意図するテクスチャサイズにするのが難しいことと、とりわけ、SketchUpオブジェクト以外のUnity上で作った(例えばCube)オブジェクト等と、同じマテリアルを共有しようとすると、上図のTiling値を片方に合わせるともう片方の表示がおかしくなってしまい面倒です。
この症状の根本的な原因はSketchUp側にあります。SketchUpには多くのマテリアル用テクスチャが用意されていますが、そのテクスチャのタイリング基準サイズがそれぞれ異なるためです。
例えば上のテクスチャは横20.3cm、縦18.4cmごとにタイリングされるようなマテリアルですので、このマテリアルを使っているオブジェクトをUnityにインポートしてマテリアルを入れ替えるとおかしくなるわけです。
解決法としては、SketchUp上のこの値を縦横とも1m(=100cm)に変更してやれば、Unity上のオブジェクトとのマテリアルサイズが同じになるようです。この時、SketchUpマテリアルは単色塗りではなく、必ずテクスチャイメージを使用するようにしましょう。※単色塗りのマテリアルのタイルサイズは制御できないと思います。
私の場合、下図のように、適当なテクスチャイメージを持つマテリアルをタイルサイズ1mで設定して、Unityでマテリアルを貼りかえるようにしています。
そうすることでUnity上の別オブジェクトとのマテリアルサイズを同じサイズ感にすることができました。
追記:以下のことに気づいたので、本記事としては、Unity上で貼りなおしたいテクスチャサイズを事前に把握しておき、そのサイズをSketchUpのマテリアルに設定しましょう、ということになります。さらに言えば、SketchUpの時点で、Unityで使うテクスチャ画像を貼り付け、サイズを数値で調整しておけば、そもそもこんな苦労しないですね。