Exemple #1
0
    def GetUnprojection(winXY: QPoint, winZ: float, winWH: QPoint,
                        vpMat: QMatrix4x4) -> QVector3D:
        #- from gluUnproject definition, I don't consider glViewport
        ndcspaceCursorPos = QVector4D(
            (QVector2D(winXY) / QVector2D(winWH)) * 2 - QVector2D(1, 1),
            winZ * 2 - 1, 1)

        invertedVpMat, success = vpMat.inverted()
        if not success: raise NotImplementedError
        wspaceCursorPos = invertedVpMat * ndcspaceCursorPos

        return QVector3D(wspaceCursorPos) / wspaceCursorPos.w()
 def _GetCamLookvecAndUpvec(
         viewMat: QMatrix4x4) -> T.Tuple[QVector3D, QVector3D]:
     invertedVPMat, _ = viewMat.inverted()
     return invertedVPMat * dvec.lookVec, invertedVPMat * dvec.skyVec