def worldTransform(self): tx = self.parm('tx').evalAsFloat() ty = self.parm('ty').evalAsFloat() tz = self.parm('tz').evalAsFloat() Mt = Matrix4.translation(tx, ty, tz) rx = self.parm('rx').evalAsFloat() ry = self.parm('ry').evalAsFloat() rz = self.parm('rz').evalAsFloat() Mr = Matrix4.eulerToMatrixDegrees(rx, ry, rz) return Mr * Mt
def orbit(self,delta_x_pixels, delta_y_pixels): pixelsPerDegree = 1000 / float(self.orbiting_speed_degrees_per_radians) radiansPerPixel = 1.0 / pixelsPerDegree * math.pi / 180.0 t2p = self.position - self.target M = Matrix4.rotationMatrix( - delta_x_pixels * radiansPerPixel, self.ground ) t2p = M * t2p self.up = M * self.up right = (self.up.normalized() ^ t2p.normalized()).normalized() M = Matrix4.rotationMatrix( delta_y_pixels * radiansPerPixel, right ) t2p = M * t2p self.up = M * self.up self.position = self.target + t2p
def orbit(self, delta_x_pixels, delta_y_pixels): pixelsPerDegree = 1000 / float(self.orbiting_speed_degrees_per_radians) radiansPerPixel = 1.0 / pixelsPerDegree * math.pi / 180.0 t2p = self.position - self.target M = Matrix4.rotationMatrix(-delta_x_pixels * radiansPerPixel, self.ground) t2p = M * t2p self.up = M * self.up right = (self.up.normalized() ^ t2p.normalized()).normalized() M = Matrix4.rotationMatrix(delta_y_pixels * radiansPerPixel, right) t2p = M * t2p self.up = M * self.up self.position = self.target + t2p
def transform(self): tangent = math.tan( self.fov_degrees/2.0 / 180.0 * math.pi ) viewportRadius = self.near_plane * tangent if self.viewportWidthInPixels < self.viewportHeightInPixels: viewportWidth = 2.0*viewportRadius viewportHeight = viewportWidth * self.viewportHeightInPixels / float(self.viewportWidthInPixels) else: viewportHeight = 2.0*viewportRadius viewportWidth = viewportHeight * self.viewportWidthInPixels / float(self.viewportHeightInPixels) glFrustum( - 0.5 * viewportWidth, 0.5 * viewportWidth, # left, right - 0.5 * viewportHeight, 0.5 * viewportHeight, # bottom, top self.near_plane, self.far_plane ) M = Matrix4.lookAt(self.position, self.target, self.up, False) glMultMatrixf(M.m)
def getTransform(self): return Matrix4.lookAt(self.position, self.target, self.up, False)