def draw(self, program, model=None, rawVertices=False):
scale = np.eye(4, dtype=np.float32)
scale[0,0] = self.scale[0]
scale[1,1] = self.scale[1]
scale[2,2] = self.scale[2]
if not rawVertices:
if model == None:
orient = lookAtTransform(self.pos, self.pos + self.dir, self.up, square=True)
# model = np.linalg.inv(orient)*scale
model = np.linalg.inv(orient)*scale
else:
orient = lookAtTransform(self.pos, self.pos + self.dir, self.up, square=True)
# model = model*np.linalg.inv(orient)*scale
model = model*np.linalg.inv(orient)*scale
else:
model = np.eye(4, dtype=np.float32)
program.setUniformMat4('model', model)
# for mesh in self.aiModel.meshes:
# for i in range(0, len(mesh.vertices)):
# # print 'model', model
# vert = np.row_stack([np.matrix(mesh.vertices[i]).T, np.array([1])])
# worldVert = model*vert
# eyeVert = proj*worldVert
# ndcVert = eyeVert[:3]/eyeVert[3]
# print 'worldVert:', worldVert.T
# # print ' m->w', worldVert.T
# print ' w->e', eyeVert.T
# print ' e->n', ndcVert.T
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)
for mesh in self.meshBuffers:
mesh.draw(program)
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)
评论列表
文章目录