mesh = meshLoader.loadMesh(obj.filename)
obj.mesh = mesh
obj.dirty = True
+ obj.steepDirty = True
self.updateModelTransform()
self.OnScaleMax(True)
self.glCanvas.zoom = numpy.max(self.objectsSize) * 3.5
self.parent.matrix *= self.tempMatrix
self.parent.updateModelTransform()
self.tempMatrix = None
+ for obj in self.parent.objectList:
+ obj.steepDirty = True
self.parent.tool.OnDragEnd()
self.dragType = ''
if e.Dragging() and e.RightIsDown():
glNewList(obj.displayList, GL_COMPILE)
opengl.DrawMesh(obj.mesh)
glEndList()
- glNewList(obj.steepDisplayList, GL_COMPILE)
- opengl.DrawMeshSteep(obj.mesh, 60)
- glEndList()
glNewList(obj.outlineDisplayList, GL_COMPILE)
opengl.DrawMeshOutline(obj.mesh)
glEndList()
-
+
if self.viewMode == "Mixed":
glDisable(GL_BLEND)
glColor3f(0.0,0.0,0.0)
self.drawModel(obj.outlineDisplayList)
if self.drawSteepOverhang:
+ if obj.steepDirty:
+ obj.steepDirty = False
+ glNewList(obj.steepDisplayList, GL_COMPILE)
+ opengl.DrawMeshSteep(obj.mesh, self.parent.matrix, 60)
+ glEndList()
glDisable(GL_LIGHTING)
glColor3f(1,1,1)
self.drawModel(obj.steepDisplayList)
glDisableClientState(GL_NORMAL_ARRAY);
-def DrawMeshSteep(mesh, angle):
+def DrawMeshSteep(mesh, matrix, angle):
cosAngle = math.sin(angle / 180.0 * math.pi)
glDisable(GL_LIGHTING)
glDepthFunc(GL_EQUAL)
+ normals = (numpy.matrix(mesh.normal, copy = False) * matrix).getA()
for i in xrange(0, int(mesh.vertexCount), 3):
- if mesh.normal[i][2] < -0.999999:
+ if normals[i][2] < -0.999999:
if mesh.vertexes[i + 0][2] > 0.01:
glColor3f(0.5, 0, 0)
glBegin(GL_TRIANGLES)
glVertex3f(mesh.vertexes[i + 1][0], mesh.vertexes[i + 1][1], mesh.vertexes[i + 1][2])
glVertex3f(mesh.vertexes[i + 2][0], mesh.vertexes[i + 2][1], mesh.vertexes[i + 2][2])
glEnd()
- elif mesh.normal[i][2] < -cosAngle:
- glColor3f(-mesh.normal[i][2], 0, 0)
+ elif normals[i][2] < -cosAngle:
+ glColor3f(-normals[i][2], 0, 0)
glBegin(GL_TRIANGLES)
glVertex3f(mesh.vertexes[i + 0][0], mesh.vertexes[i + 0][1], mesh.vertexes[i + 0][2])
glVertex3f(mesh.vertexes[i + 1][0], mesh.vertexes[i + 1][1], mesh.vertexes[i + 1][2])
glVertex3f(mesh.vertexes[i + 2][0], mesh.vertexes[i + 2][1], mesh.vertexes[i + 2][2])
glEnd()
- elif mesh.normal[i][2] > 0.999999:
+ elif normals[i][2] > 0.999999:
if mesh.vertexes[i + 0][2] > 0.01:
glColor3f(0.5, 0, 0)
glBegin(GL_TRIANGLES)
glVertex3f(mesh.vertexes[i + 2][0], mesh.vertexes[i + 2][1], mesh.vertexes[i + 2][2])
glVertex3f(mesh.vertexes[i + 1][0], mesh.vertexes[i + 1][1], mesh.vertexes[i + 1][2])
glEnd()
- elif mesh.normal[i][2] > cosAngle:
- glColor3f(mesh.normal[i][2], 0, 0)
+ elif normals[i][2] > cosAngle:
+ glColor3f(normals[i][2], 0, 0)
glBegin(GL_TRIANGLES)
glVertex3f(mesh.vertexes[i + 0][0], mesh.vertexes[i + 0][1], mesh.vertexes[i + 0][2])
glVertex3f(mesh.vertexes[i + 2][0], mesh.vertexes[i + 2][1], mesh.vertexes[i + 2][2])