2013年1月28日月曜日

Blender 法線マップ備忘録

Blenderではハイポリゴンモデルを元に法線マップを生成することが可能だが、必要になるときにはいつも方法を忘れているので、活用法と共に記しておく。
ただどうも他で紹介される方法や、昔上手くいった方法と異なる気がするので、一手法と考えて頂きたい。

準備手順

  • ローポリゴンモデル、ハイポリゴンモデル両方を用意する。
  • 位置は必ず同位置に合わせる。
  • ローポリゴンモデルをUV展開する。
Bake手順

  • 生成用の画像を用意し、ローポリゴンモデルに登録する
  • ハイ→ローの順で選択する。
  • Properties/Render/BakeでBakeModeにNormals、Normal SpaceにTangentを指定、Selected to Activeにチェックを入れBakeを押す。
さて、ここでハイポリゴンモデルはUV展開する必要はない。全く無関係なオブジェクトを指定しても問題なく生成される。

Bake手順2をよく忘れるので注意しなければならないなと

2013年1月2日水曜日

Unity メッシュ考察

メッシュの動的修正について色々と試していたら、プリミティブのCubeを書き換えてしまった。
以下にそれを修正したコードを記載する。

立方体のメッシュの情報のうち、ポリゴンの張りかたを指定する配列 triangles を書き換えてしまった。
verticesとuvsも上書きしてしまったが、配列の長さが違っていたため、幸運にも上書きされずに済んだ。
trianglesの長さには制限がないということが分かる。
もともとの長さは36だが、実験したところ36より大きい数でも問題なく入った。

MeshFilter mesh_filter = _target.gameObject.GetComponent<MeshFilter>() as MeshFilter;

Mesh mesh = mesh_filter.sharedMesh;

mesh.name = "Cube";
mesh.triangles = new int[36] {
0,2,1,1,2,3,
4,6,5,5,6,7,
8,10,9,9,10,11,
15,13,14,15,14,12,
19,17,18,19,18,16,
23,21,22,23,22,20};

MonoBehaviour.print(mesh.vertexCount);
MonoBehaviour.print(mesh.vertices.Length);

mesh.RecalculateNormals();