本日は Unity の技術調査枠です。
前回 ParaView で作成したデータを Blender に取り込みました。
bluebirdofoz.hatenablog.com
今回は更に、このデータを Unity 上で可視化します。
Unity ではx3d形式のジオメトリデータをそのまま3Dデータとして取り込むことはできません。
よって一度、Blender でFBX形式のファイルでエクスポートします。
Unity に取り込みます。しかし、テクスチャがないので灰色のオブジェクトとして取り込まれます。
Blender 上での見た目と同じようにするためには頂点カラーを表現する必要があります。
以下の記事を参考に頂点シェーダを作成します。
nn-hokuson.hatenablog.com
記事にある VertexColor.shader を作成し、マテリアルに反映すると以下の通り、色が付きました。
Hierarchy に配置すると、以下のようにシーン上で確認できます。
しかし、よくよく見るとポリゴンがおかしいですね。
どうも面の裏表が正しくないため、一部カラーが描画されていない部分があるようです。
以下を参考にシェーダを変更し、裏表どちらでもカラーが描画されるようにします。
nn-hokuson.hatenablog.com
カリングについて以前、空間に窓を作るシェーダを作成するときに学びました。それを利用します。
VertexColor.shader のコードは以下のようになります。
Shader "Custom/VertexColor" { SubShader{ Tags{ "RenderType" = "Opaque" } LOD 200 Cull off CGPROGRAM #pragma surface surf Lambert vertex:vert #pragma target 3.0 struct Input { float4 vertColor; }; void vert(inout appdata_full v, out Input o) { UNITY_INITIALIZE_OUTPUT(Input, o); o.vertColor = v.color; } void surf(Input IN, inout SurfaceOutput o) { o.Albedo = IN.vertColor.rgb; } ENDCG } FallBack "Diffuse" }
シェーダを反映すると、以下のようにカラーが表示されました。
ジオメトリデータの Unity への取り込みはこれで成功です。