public override void receivePose(SimplePose newPose) { lock (thisLock) { m_pose = UbiMeasurementUtils.ubitrackToUnity(newPose); } }
// Use this for initialization public override void utInit(SimpleFacade simpleFacade) { base.utInit(simpleFacade); switch (ubitrackEvent) { case UbitrackEventType.Pull: { m_posePull = simpleFacade.getSimplePullSinkPose(patternID); m_simplePose = new SimplePose(); if (m_posePull == null) { throw new Exception("SimpleApplicationPullSinkPose not found for poseID:" + patternID); } break; } case UbitrackEventType.Push: { m_poseReceiver = new UnityPoseReceiver(); if (!simpleFacade.setPoseCallback(patternID, m_poseReceiver)) { throw new Exception("SimplePoseReceiver could not be set for poseID:" + patternID); } break; } default: break; } }
// Use this for initialization public override void utInit(Ubitrack.SimpleFacade simpleFacade) { base.utInit(simpleFacade); switch(ubitrackEvent) { case UbitrackEventType.Pull:{ m_posePull = simpleFacade.getSimplePullSinkPose(patternID); m_simplePose = new SimplePose(); if (m_posePull == null) { throw new Exception("SimpleApplicationPullSinkPose not found for poseID:" + patternID); } break; } case UbitrackEventType.Push:{ m_poseReceiver = new UnityPoseReceiver(); if (!simpleFacade.setPoseCallback(patternID, m_poseReceiver)) { throw new Exception("SimplePoseReceiver could not be set for poseID:" + patternID); } break; } default: break; } }
internal static SimplePose getGameObjectPose(UbitrackRelativeToUnity relative, GameObject go) { SimplePose pose = new SimplePose(); Vector3 pos = new Vector3(); Quaternion rot = new Quaternion(); switch (relative) { case UbitrackRelativeToUnity.Local: { UbiMeasurementUtils.coordsysemChange(go.transform.localPosition, ref pos); UbiMeasurementUtils.coordsysemChange(go.transform.localRotation, ref rot); break; } case UbitrackRelativeToUnity.World: { UbiMeasurementUtils.coordsysemChange(go.transform.position, ref pos); UbiMeasurementUtils.coordsysemChange(go.transform.rotation, ref rot); break; } default: break; } pose.tx = pos.x; pose.ty = pos.y; pose.tz = pos.z; pose.rx = rot.x; pose.ry = rot.y; pose.rz = rot.z; pose.rw = rot.w; return(pose); }
public override void receivePose(SimplePose newPose) { lock (thisLock) { m_pose = UbiMeasurementUtils.ubitrackToUnity(newPose); } }
internal static Measurement <Pose> ubitrackToUnity(SimplePose ubitrackPose) { // mirrored at z-Axis, rotation inverted Vector3 trans = new Vector3((float)ubitrackPose.tx, (float)ubitrackPose.ty, (float)ubitrackPose.tz); Quaternion rot = new Quaternion((float)ubitrackPose.rx, (float)ubitrackPose.ry, (float)ubitrackPose.rz, (float)ubitrackPose.rw); Pose data = new Pose(); trans = trans * UbiToUnityScaleFactor; coordsysemChange(trans, ref data.pos); coordsysemChange(rot, ref data.rot); return(new Measurement <Pose>(data, ubitrackPose.timestamp)); }
void Update() { switch (ubitrackEvent) { case UbitrackEventType.Push: { SimplePose simplePose = UbiUnityUtils.getGameObjectPose(relative, gameObject); m_poseReciever.receivePose(simplePose); if (once) { this.enabled = false; } break; } case UbitrackEventType.Pull: default: break; } }