コード例 #1
0
 def Update(self):
     normalCamera = self._GetNonDebugCamera()
     if not self.IsUpdatingDebugCamera() and normalCamera:
         if normalCamera:
             normalCamera.Update()
     if self.IsShowingNormalCamera() and normalCamera:
         camPos = normalCamera.GetPosition()
         poi = normalCamera.GetPointOfInterest()
         vec = geo2.Vec3Subtract(poi, camPos)
         vec = geo2.Vec3Normalize(vec)
         vec = geo2.Vec3Scale(vec, 0.5)
         self.debugRenderClient.RenderCone(camPos,
                                           geo2.Vec3Add(camPos, vec),
                                           0.25,
                                           4278190335L,
                                           time=1)
         if self.lastCamPos is not None and camPos != self.lastCamPos:
             self.debugRenderClient.RenderRay(self.lastCamPos,
                                              camPos,
                                              4278190335L,
                                              4278255360L,
                                              time=1000,
                                              pulse=True)
         self.lastCamPos = camPos
     if self.translationVector != [0.0, 0.0, 0.0]:
         now = blue.os.GetWallclockTime()
         frameTime = float(now - self.lastUpdateTime) / const.SEC
         poi = cameras.PolarCamera.GetPointOfInterest(self)
         rotMatrix = geo2.MatrixRotationYawPitchRoll(
             math.pi / 2.0 - self.yaw, math.pi / 2.0 - self.pitch, 0.0)
         scaledVector = geo2.Vec3Scale(self.translationVector, frameTime)
         relativeVector = geo2.Vec3TransformCoord(scaledVector, rotMatrix)
         newPos = geo2.Vec3Add(poi, relativeVector)
         cameras.PolarCamera.SetPointOfInterest(self, newPos)
     cameras.PolarCamera.Update(self)
コード例 #2
0
ファイル: photosvc.py プロジェクト: R4M80MrX/eve-1
 def _GetViewMatrixFromAngle(self, cameraAngle, lookAt, cameraDistance):
     view_at = geo2.Vector(lookAt[0], lookAt[1], lookAt[2])
     view_eye = geo2.Vector(0.0, 0.0, 1.0)
     angleTransform = geo2.MatrixRotationYawPitchRoll(cameraAngle[0], cameraAngle[1], cameraAngle[2])
     view_eye = geo2.Vec3TransformCoord(view_eye, angleTransform)
     view_eye = geo2.Vector(*view_eye)
     view_eye = view_eye * cameraDistance + view_at
     return (view_eye, view_at, geo2.Vector(*GETPHOTO_VIEW_UP))
コード例 #3
0
 def ApplyParticleEffect(self, *args):
     if not sm.GetService('device').GetAppFeatureState('Interior.ParticlesEnabled', True):
         return True
     entityID, effectFilePath, boneName, duration, xOffset, yOffset, zOffset = args[:7]
     yawOffset, pitchOffset, rollOffset, ignoreTransform, effectStringID = args[7:]
     effectID = self._GetNextEffectID()
     zaction.AddPropertyForCurrentPythonProc({effectStringID: effectID})
     translation = geo2.MatrixTranslation(xOffset, yOffset, zOffset)
     rotation = geo2.MatrixRotationYawPitchRoll(math.radians(yawOffset), math.radians(pitchOffset), math.radians(rollOffset))
     offset = geo2.MatrixMultiply(rotation, translation)
     with self.activeParticlesSemaphore:
         trinityObject = trinity.Load(effectFilePath)
         entity = self.entityClient.FindEntityByID(entityID)
         scene = self.graphicClient.GetScene(entity.scene.sceneID)
         scene.AddDynamic(trinityObject)
         curveSet = None
         positionComponent = entity.GetComponent('position')
         if boneName or positionComponent:
             curveSet = trinity.TriCurveSet()
             scene.AddCurveSetToScene(curveSet)
             if boneName:
                 paperDollComponent = entity.GetComponent('paperdoll')
                 model = paperDollComponent.doll.avatar
                 curve = trinity.Tr2BoneMatrixCurve()
                 curve.skinnedObject = model
                 curve.bone = boneName
                 if not ignoreTransform:
                     offset = geo2.MatrixMultiply(offset, trinityObject.transform)
                 curve.transform = offset
             else:
                 curve = GameWorld.PositionComponentCurve()
                 curve.positionComponent = positionComponent
                 curve.positionOffset = geo2.Vector(xOffset, yOffset, zOffset)
                 curve.rotationOffset = geo2.QuaternionRotationSetYawPitchRoll(yawOffset, pitchOffset, rollOffset)
             bind = trinity.TriValueBinding()
             bind.destinationObject = trinityObject
             bind.destinationAttribute = 'transform'
             bind.sourceObject = curve
             bind.sourceAttribute = 'currentValue'
             curveSet.curves.append(curve)
             curveSet.bindings.append(bind)
             curveSet.Play()
         expireTime = blue.os.GetWallclockTime() + duration * const.MSEC
         effectData = util.KeyVal(effectID=effectID, entityID=entityID, effectFilePath=effectFilePath, expireTime=expireTime, offset=offset, trinityObject=trinityObject, sceneID=entity.scene.sceneID, curveSet=curveSet)
         self.activeParticleEffects[effectID] = effectData
         if duration > 0:
             self.timedParticleEffects.append(effectData)
             self.timedParticleEffects.sort(key=lambda entry: entry.expireTime)
             self.updateTaskletLock.set()
         self._ConnectEffectCurveSets(effectData, effectStringID)
     return True
コード例 #4
0
def _GetViewMatrixFromAngle(cameraAngle, lookAt, cameraDistance):
    """
    Given a LookAt point, camera distance and direction (angle), return
    a (view_eye, view_at, view_up) tuple of geo2.Vectors
    """
    view_at = geo2.Vector(lookAt[0], lookAt[1], lookAt[2])
    view_eye = geo2.Vector(0.0, 0.0, 1.0)
    angleTransform = geo2.MatrixRotationYawPitchRoll(cameraAngle[0],
                                                     cameraAngle[1],
                                                     cameraAngle[2])
    view_eye = geo2.Vec3TransformCoord(view_eye, angleTransform)
    view_eye = geo2.Vector(*view_eye)
    view_eye = view_eye * cameraDistance + view_at
    return (view_eye, view_at, geo2.Vector(*GETPHOTO_VIEW_UP))