ScriptSpot

Forum topic · General Scripting

Problems with getNormal function

By kamikaze · 2007-03-17

Description

Hello Everyone!

I am trying to export vertex normals of objects into a simple custom ASCII format.

Some relevant parts of the code:

> mesh = snapshotAsMesh objects[idx]

> faceCount = getNumFaces mesh

>

> for idx = 1 to faceCount do

> (

> coord_face = getFace mesh idx

> for vidx = 1 to 3 do

> (

> vector = getNormal mesh coord_face[vidx]

> format " n % % %" vector[1] vector[2] vector[3] to:file

> )

> )

When I use my script to export the vertex normals of a cube I get strange results:

> // triangle 1

> v -5.0 -5.0 -5.0 n 0.0 0.0 -2.0

> v -5.0 5.0 -5.0 n 0.0 0.0 -1.0

> v 5.0 5.0 -5.0 n 0.0 0.0 -2.0

> // triangle 2

> v 5.0 5.0 -5.0 n 0.0 0.0 -2.0

> v 5.0 -5.0 -5.0 n 0.0 0.0 -1.0

> v -5.0 -5.0 -5.0 n 0.0 0.0 -2.0

> // triangle 3

> v -5.0 -5.0 5.0 n 0.0 0.0 2.0

> v 5.0 -5.0 5.0 n 0.0 0.0 1.0

> v 5.0 5.0 5.0 n 0.0 0.0 2.0

<and so on..>

I also tried to export face normals and they were perfectly OK.

Am I doing something wrong or is the internal vertex normal cache broken somehow?

Anybody ever had similar problems with normals?

Thx in advance for any comments!

Martin

Comments (1)

madman97 · 2007-03-23

Hi all!

 

I have the same problem. I think it has something to do with smoothing groups???

When I create a simple Box in 3d max and convert it to editable mesh and i write this kind of script:

 

t=snapshotasmesh $

for i=1 to t.numverts do (print (getnormal t i))

 

I get these results (quite stupid):

[0,0,-1.5708]

[0,0,-1.5708]

[0,0,-1.5708]

[0,0,-1.5708]

[0,0,1.5708]

[0,0,1.5708]

[0,0,1.5708]

[0,0,1.5708]

 

I'm sure, that i have to use face normal in this case (with getFaceNormal function), but I don't know how to check, when should I use first or second function, i.e. when to use vertex normals or face normals.