书接上回,我们继续来导出 vertex normal (法线)。
给我们的 box 增加个 Edit Normals Modifier。
选中某个 normal,然后通过“旋转“,改变其方向。
===========================================
OK,剩下的,上代码。
--------------------------- export_vertex_normal.ms -----------------------------
function export_one_triangle fp tri_index =
(
tri_vertices = getFace $ tri_index -- only index
tri_normals = meshop.getFaceRNormals $ tri_index
format "triangle #%\n" tri_index to:fp
for i = 1 to 3 do
(
v = getVert $ tri_vertices[i]
n = tri_normals[i]
format "v%: xyz(%,%,%) n(%,%,%)\n" i v[1] v[2] v[3] n[1] n[2] n[3] to:fp
)
format "\n" to:fp
)
filename = getSaveFileName types:"Data(*.dat)|*.dat|All|*.*|"
if filename != undefined then
(
convertToMesh $
fp = openFile filename mode:"wt"
num = getNumFaces $ -- triangle num
for i = 1 to num do
(
export_one_triangle fp i
)
fclose fp
)
---------------------------------------------------------------------------------------
triangle #1
v1: xyz(-10.0,-10.0,0.0) n(0.0,0.0,-1.0)
v2: xyz(-10.0,10.0,0.0) n(0.0,0.0,-1.0)
v3: xyz(10.0,10.0,0.0) n(0.0,0.0,-1.0)
triangle #2
v1: xyz(10.0,10.0,0.0) n(0.0,0.0,-1.0)
v2: xyz(10.0,-10.0,0.0) n(0.0,0.0,-1.0)
v3: xyz(-10.0,-10.0,0.0) n(0.0,0.0,-1.0)
---------------------------------------------------------------------------------------
关键就在?meshop.getFaceRNormals,取得 face render normals。
meshop 就相当于一个 namespace,包含着一些高级的操作函数。
还有个
getNormal <mesh> <vert_index_integer>
但不知道这样取出来的 normal 对应着啥?不解~~
另外,getFaceRNormals 获取的 normal 数值,并没有体现出 Edit Normals Modifier 的修改效果。不解 - -!
评论