Moved the 3D normal generation to the model loading, so it does not block the rendering update
parent
3316f6da96
commit
db475505ad
|
@ -2,6 +2,7 @@ import sys
|
||||||
import math
|
import math
|
||||||
import threading
|
import threading
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
|
|
||||||
from wx import glcanvas
|
from wx import glcanvas
|
||||||
import wx
|
import wx
|
||||||
|
@ -152,8 +153,6 @@ class previewPanel(wx.Panel):
|
||||||
def updateModelTransform(self, f=0):
|
def updateModelTransform(self, f=0):
|
||||||
if self.triangleMesh == None:
|
if self.triangleMesh == None:
|
||||||
return
|
return
|
||||||
for face in self.triangleMesh.faces:
|
|
||||||
face.normal = None
|
|
||||||
scale = 1.0
|
scale = 1.0
|
||||||
rotate = 0.0
|
rotate = 0.0
|
||||||
try:
|
try:
|
||||||
|
@ -179,6 +178,14 @@ class previewPanel(wx.Panel):
|
||||||
self.triangleMesh.vertexes[i].x = self.triangleMesh.origonalVertexes[i].x * mat00 + self.triangleMesh.origonalVertexes[i].y * mat01
|
self.triangleMesh.vertexes[i].x = self.triangleMesh.origonalVertexes[i].x * mat00 + self.triangleMesh.origonalVertexes[i].y * mat01
|
||||||
self.triangleMesh.vertexes[i].y = self.triangleMesh.origonalVertexes[i].x * mat10 + self.triangleMesh.origonalVertexes[i].y * mat11
|
self.triangleMesh.vertexes[i].y = self.triangleMesh.origonalVertexes[i].x * mat10 + self.triangleMesh.origonalVertexes[i].y * mat11
|
||||||
self.triangleMesh.vertexes[i].z = self.triangleMesh.origonalVertexes[i].z * scaleZ
|
self.triangleMesh.vertexes[i].z = self.triangleMesh.origonalVertexes[i].z * scaleZ
|
||||||
|
|
||||||
|
for face in self.triangleMesh.faces:
|
||||||
|
v1 = self.triangleMesh.vertexes[face.vertexIndexes[0]]
|
||||||
|
v2 = self.triangleMesh.vertexes[face.vertexIndexes[1]]
|
||||||
|
v3 = self.triangleMesh.vertexes[face.vertexIndexes[2]]
|
||||||
|
face.normal = (v2 - v1).cross(v3 - v1)
|
||||||
|
face.normal.normalize()
|
||||||
|
|
||||||
self.moveModel()
|
self.moveModel()
|
||||||
|
|
||||||
def moveModel(self):
|
def moveModel(self):
|
||||||
|
@ -378,9 +385,6 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
|
||||||
v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]]
|
v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]]
|
||||||
v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]]
|
v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]]
|
||||||
v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]]
|
v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]]
|
||||||
if face.normal == None:
|
|
||||||
face.normal = (v2 - v1).cross(v3 - v1)
|
|
||||||
face.normal.normalize()
|
|
||||||
glNormal3f(face.normal.x, face.normal.y, face.normal.z)
|
glNormal3f(face.normal.x, face.normal.y, face.normal.z)
|
||||||
glVertex3f(v1.x, v1.y, v1.z)
|
glVertex3f(v1.x, v1.y, v1.z)
|
||||||
glVertex3f(v2.x, v2.y, v2.z)
|
glVertex3f(v2.x, v2.y, v2.z)
|
||||||
|
|
Loading…
Reference in New Issue