Exemple #1
0
        //指定デバイスの姿勢情報を取得
        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);
        }
Exemple #2
0
            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;
            }
Exemple #3
0
 public void SetGameObjectLocalTransform(ref UnityEngine.GameObject obj, ActionTransform transform)
 {
     if (transform == null)
     {
         return;
     }
     obj.transform.localPosition = transform.position;
     obj.transform.localRotation = transform.rotation;
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }