Ricalcolare normale oggetto poli modificabile
Domanda
Sto lavorando a un esportatore, ma il problema mi sono bloccato in è il calcolo normale.
Ho letto molti post su questo, e sembra che la funzione "getnormal" non funziona come previsto. (Questo è quello che la creazione di risultati sbagliati per il mio esportatore).
Così ho bisogno di ricalcolare manualmente.
La domanda è - come faccio a fare questo? la parte che calcola il normale appare come segue:
Se si fornisce una funzione, quindi si prega di tenere a mente questo codice qui sotto, mi piacerebbe non riscrivere tutto.
grazie in anticipo.
for i = 1 to num_faces do
(
face = getFace Obj i
v1 = (MeshArrays[2].count + 1)
v2 = (MeshArrays[2].count + 2)
v3 = (MeshArrays[2].count + 3)
append MeshArrays[1] [v1,v2,v3]
v1 = coordsys world getvert Obj face.x
v2 = coordsys world getvert Obj face.y
v3 = coordsys world getvert Obj face.z
append MeshArrays[2] v1
append MeshArrays[2] v2
append MeshArrays[2] v3
v1 = (coordsys local getnormal Obj face.x) -- * theInvTM
v2 = (coordsys local getnormal Obj face.y) --* theInvTM
v3 = (coordsys local getnormal Obj face.z) --* theInvTM
append MeshArrays[4] v1
append MeshArrays[4] v2
append MeshArrays[4] v3
if Obj.numtverts != 0 then
(
tvface = getTVFace Obj i
v1 = getTVert Obj tvface.x
v2 = getTVert Obj tvface.y
v3 = getTVert Obj tvface.z
append MeshArrays[3] v1
append MeshArrays[3] v2
append MeshArrays[3] v3
)
)
Soluzione
risolto sostituendo le righe appropriate con il seguente codice:
--get the object's transformation
myTransform = Obj.transform
-- get the normal * transformation - translation
v1 = (coordsys local getnormal Obj face.x)* myTransform - (myTransform.translationpart)
v2 = (coordsys local getnormal Obj face.y)* myTransform - (myTransform.translationpart)
v3 = (coordsys local getnormal Obj face.z) * myTransform - (myTransform.translationpart)
--normalize them / and write normal to a new variable
v11 = normalize v1
v22 = normalize v2
v33 = normalize v3
--append to array
append MeshArrays[4] v11
append MeshArrays[4] v22
append MeshArrays[4] v33
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow