コード例 #1
0
    def sortFaces(self):
        camera = G.cameras[0]

        indices = self.primitives[self.nPrimitives -
                                  self.nTransparentPrimitives:]
        if len(indices) == 0:
            return

        m = matrix.translate(-self.translation)
        m = matrix.rotx(-self.rx) * m
        m = matrix.roty(-self.ry) * m
        m = matrix.rotz(-self.rz) * m
        m = matrix.translate(self.translation) * m
        cxyz = matrix.transform3(m, camera.eye)

        # Prepare sorting data
        verts = self.verts[indices] - cxyz
        distances = np.sum(verts**2, axis=-1)
        distances = np.amin(distances, axis=-1)
        distances = -distances
        # Sort
        order = np.argsort(distances)
        indices2 = indices[order, :]

        indices[...] = indices2
コード例 #2
0
ファイル: object3d.py プロジェクト: TeoTwawki/makehuman
    def sortFaces(self):
        import numpy as np
        import matrix
        camera = G.cameras[0]

        indices = self.primitives[self.nPrimitives - self.nTransparentPrimitives:]
        if len(indices) == 0:
            return

        m = matrix.translate(-self.translation)
        m = matrix.rotx(-self.rx) * m
        m = matrix.roty(-self.ry) * m
        m = matrix.rotz(-self.rz) * m
        m = matrix.translate(self.translation) * m
        cxyz = matrix.transform3(m, camera.eye)

        # Prepare sorting data
        verts = self.verts[indices] - cxyz
        distances = np.sum(verts ** 2, axis = -1)
        distances = np.amin(distances, axis = -1)
        distances = -distances
        # Sort
        order = np.argsort(distances)
        indices2 = indices[order,:]

        indices[...] = indices2
コード例 #3
0
ファイル: projection.py プロジェクト: TeoTwawki/makehuman
 def calcLightPos(light):
     return tuple(
         matrix.transform3(
             matrix.rotx(-objrot[0]) *
             matrix.roty(-objrot[1]) *
             matrix.rotz(-objrot[2]),
             light.position))
コード例 #4
0
 def calcLightPos(light):
     return tuple(
         matrix.transform3(
             matrix.rotx(-objrot[0]) *
             matrix.roty(-objrot[1]) *
             matrix.rotz(-objrot[2]),
             light.position))
コード例 #5
0
    def addXYTranslation(self, deltaX, deltaY):
        # Get matrix to transform camera X and Y direction into world space
        m = np.matrix(np.identity(4))
        if self.verticalInclination != 0:
            m = m * matrix.rotx(self.verticalInclination)
        if self.horizontalRotation != 0:
            m = m * matrix.roty(self.horizontalRotation)
        xDirection = matrix.transform3(m, [1.0, 0.0, 0.0])
        yDirection = matrix.transform3(m, [0.0, 1.0, 0.0])

        # Translation speed is scaled with zoomFactor
        deltaX = (-deltaX / 50.0) / self.zoomFactor
        deltaY = (deltaY / 50.0) / self.zoomFactor

        offset = (deltaX * xDirection) + (deltaY * yDirection)
        offset[2] = -offset[2]  # Invert Z direction

        self.addTranslation(0, offset[0])
        self.addTranslation(1, offset[1])
        self.addTranslation(2, offset[2])
コード例 #6
0
ファイル: camera.py プロジェクト: zztimy/unnaturalcode
    def addXYTranslation(self, deltaX, deltaY):
        # Get matrix to transform camera X and Y direction into world space
        m = np.matrix(np.identity(4))
        if self.verticalInclination != 0:
            m = m * matrix.rotx(self.verticalInclination)
        if self.horizontalRotation != 0:
            m = m * matrix.roty(self.horizontalRotation)
        xDirection = matrix.transform3(m, [1.0, 0.0, 0.0])
        yDirection = matrix.transform3(m, [0.0, 1.0, 0.0])

        # Translation speed is scaled with zoomFactor
        deltaX = (-deltaX / 50.0) / self.zoomFactor
        deltaY = (deltaY / 50.0) / self.zoomFactor

        offset = (deltaX * xDirection) + (deltaY * yDirection)
        offset[2] = -offset[2]  # Invert Z direction

        self.addTranslation(0, offset[0])
        self.addTranslation(1, offset[1])
        self.addTranslation(2, offset[2])
コード例 #7
0
 def convertToWorld3D(self, sx, sy, sz, obj=None):
     "Convert 3D (x, y, depth) screen coordinates to 3D OpenGL world coordinates."
     m = self.getConvertToScreenMatrix(obj)
     x, y, z = matrix.transform3(m.I, [sx, sy, sz])
     return [x, y, z]
コード例 #8
0
 def convertToScreen(self, x, y, z, obj=None):
     "Convert 3D OpenGL world coordinates to screen coordinates."
     m = self.getConvertToScreenMatrix(obj)
     sx, sy, sz = matrix.transform3(m, [x, y, z])
     return [sx, sy, sz]
コード例 #9
0
ファイル: camera.py プロジェクト: zztimy/unnaturalcode
 def convertToWorld3D(self, sx, sy, sz, obj=None):
     "Convert 3D (x, y, depth) screen coordinates to 3D OpenGL world coordinates."
     m = self.getConvertToScreenMatrix(obj)
     x, y, z = matrix.transform3(m.I, [sx, sy, sz])
     return [x, y, z]
コード例 #10
0
ファイル: camera.py プロジェクト: zztimy/unnaturalcode
 def convertToScreen(self, x, y, z, obj=None):
     "Convert 3D OpenGL world coordinates to screen coordinates."
     m = self.getConvertToScreenMatrix(obj)
     sx, sy, sz = matrix.transform3(m, [x, y, z])
     return [sx, sy, sz]