//指定デバイスの姿勢情報を取得 public ActionTransform GetTransform(uint index) { //有効なデバイスか if (!IsDeviceValid(index)) { return(null); } TrackedDevicePose_t Pose = allDevicePose[index]; SteamVR_Utils.RigidTransform trans = new SteamVR_Utils.RigidTransform(Pose.mDeviceToAbsoluteTracking); ActionTransform res = new ActionTransform(); res.deviceid = index; //右手系・左手系の変換をした res.velocity[0] = Pose.vVelocity.v0; res.velocity[1] = Pose.vVelocity.v1; res.velocity[2] = -Pose.vVelocity.v2; res.angularVelocity[0] = -Pose.vAngularVelocity.v0; res.angularVelocity[1] = -Pose.vAngularVelocity.v1; res.angularVelocity[2] = Pose.vAngularVelocity.v2; res.position = trans.pos; res.rotation = trans.rot; return(res); }
public ActionTransform transform = null; //姿勢 public PoseAction(InputPoseActionData_t Data, OriginSource OriginInfo) { Available = Data.bActive; Origin = OriginInfo; TrackedDevicePose_t Pose = Data.pose; SteamVR_Utils.RigidTransform trans = new SteamVR_Utils.RigidTransform(Pose.mDeviceToAbsoluteTracking); transform = new ActionTransform(); if (OriginInfo != null) { transform.deviceid = OriginInfo.DeviceIndex; } else { transform.deviceid = InvalidDeviceIndex; } //右手系・左手系の変換をした transform.velocity[0] = Pose.vVelocity.v0; transform.velocity[1] = Pose.vVelocity.v1; transform.velocity[2] = -Pose.vVelocity.v2; transform.angularVelocity[0] = -Pose.vAngularVelocity.v0; transform.angularVelocity[1] = -Pose.vAngularVelocity.v1; transform.angularVelocity[2] = Pose.vAngularVelocity.v2; transform.position = trans.pos; transform.rotation = trans.rot; }
public void SetGameObjectLocalTransform(ref UnityEngine.GameObject obj, ActionTransform transform) { if (transform == null) { return; } obj.transform.localPosition = transform.position; obj.transform.localRotation = transform.rotation; }
public void SetGameObjectLocalTransformWithOffset(ref UnityEngine.GameObject obj, ActionTransform transform, ActionTransform transformOffset) { if (transform == null) { return; } if (transformOffset == null) { transformOffset = new ActionTransform(); } obj.transform.localPosition = transform.position - transformOffset.position; obj.transform.localRotation = transform.rotation * Quaternion.Inverse(transformOffset.rotation); }
public void SetGameObjectTransformWithOffset(ref UnityEngine.GameObject obj, ActionTransform transform, ActionTransform transformOffset) { if (transform == null) { return; } if (transformOffset == null) { transformOffset = new ActionTransform(); } Debug.Log(transform.position.ToString()); Debug.Log(transformOffset.position.ToString()); Debug.Log((transform.position - transformOffset.position).ToString()); obj.transform.position = transform.position - transformOffset.position; obj.transform.rotation = transform.rotation * Quaternion.Inverse(transformOffset.rotation); }