From db475505ad96b3e2ba5a8c93058c02fedada01ad Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 14 Mar 2012 16:24:18 +0100 Subject: [PATCH] Moved the 3D normal generation to the model loading, so it does not block the rendering update --- SkeinPyPy_NewUI/newui/preview3d.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/SkeinPyPy_NewUI/newui/preview3d.py b/SkeinPyPy_NewUI/newui/preview3d.py index 537ba32..fdcec82 100644 --- a/SkeinPyPy_NewUI/newui/preview3d.py +++ b/SkeinPyPy_NewUI/newui/preview3d.py @@ -2,6 +2,7 @@ import sys import math import threading import re +import time from wx import glcanvas import wx @@ -152,8 +153,6 @@ class previewPanel(wx.Panel): def updateModelTransform(self, f=0): if self.triangleMesh == None: return - for face in self.triangleMesh.faces: - face.normal = None scale = 1.0 rotate = 0.0 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].y = self.triangleMesh.origonalVertexes[i].x * mat10 + self.triangleMesh.origonalVertexes[i].y * mat11 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() def moveModel(self): @@ -378,9 +385,6 @@ class PreviewGLCanvas(glcanvas.GLCanvas): v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]] v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]] 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) glVertex3f(v1.x, v1.y, v1.z) glVertex3f(v2.x, v2.y, v2.z)