コード例 #1
0
        public override void Update()
        {
            if (tracker == null ||
                !tracker.enabled ||
                !enabled ||
                neuronTracker.device == null ||
                tracker.status == Status.Unavailable)
            {
                return;
            }

            status = Status.Present;
            if (hipsSensor.rotationConfidence == 0)
            {
                return;
            }

            UpdateHips(hipsTarget.hips.target);
            UpdateSpine(hipsTarget.spine.target);
            UpdateChest(hipsTarget.chest.target);

            HumanoidTarget.TargetTransform neckTarget = hipsTarget.humanoid.headTarget.neck.target;
            neckTarget.transform.position = hipsTarget.chest.target.transform.position + hipsTarget.chest.target.transform.rotation * Vector3.up * (hipsTarget.chest.target.length);

            status = Status.Tracking;
        }
コード例 #2
0
        private void UpdateChest(HumanoidTarget.TargetTransform chestTarget)
        {
            float confidence = chestSensor.rotationConfidence;

            if (confidence > 0)
            {
                chestTarget.confidence.rotation = confidence;
                chestTarget.transform.rotation  = tracker.trackerTransform.rotation * chestSensor.rotation;
            }
        }
コード例 #3
0
        private void UpdateSpine(HumanoidTarget.TargetTransform spineTarget)
        {
            float confidence = spineSensor.rotationConfidence;

            if (confidence > 0)
            {
                spineTarget.confidence.rotation = confidence;
                spineTarget.transform.rotation  = tracker.trackerTransform.rotation * spineSensor.rotation;
            }
        }
コード例 #4
0
        protected virtual void UpdateTarget(HumanoidTarget.TargetTransform target, SensorComponent sensorComponent)
        {
            if (target.transform == null || sensorComponent.rotationConfidence + sensorComponent.positionConfidence <= 0)
            {
                return;
            }

            target.transform.rotation  = GetTargetRotation(sensorComponent.transform);
            target.confidence.rotation = sensorComponent.rotationConfidence;

            target.transform.position  = GetTargetPosition(sensorComponent.transform);
            target.confidence.position = sensorComponent.positionConfidence;
        }
コード例 #5
0
        protected virtual void UpdateTarget(HumanoidTarget.TargetTransform target, Transform sensorTransform)
        {
            if (target.transform == null || sensorTransform == null)
            {
                return;
            }

            target.transform.rotation  = GetTargetRotation(sensorTransform);
            target.confidence.rotation = 0.5F;

            target.transform.position  = GetTargetPosition(sensorTransform);
            target.confidence.position = 0.5F;
        }
コード例 #6
0
        protected override void UpdateTarget(HumanoidTarget.TargetTransform target, SensorComponent sensorComponent)
        {
            if (target.transform == null || sensorComponent.rotationConfidence + sensorComponent.positionConfidence <= 0)
            {
                return;
            }

            Quaternion sensorRotation = GetTargetRotation(sensorComponent.transform);
            Vector3    sensorForward  = sensorRotation * Vector3.forward;

            target.transform.rotation  = Quaternion.LookRotation(sensorForward, hipsTarget.humanoid.up);
            target.confidence.rotation = sensorComponent.rotationConfidence;

            target.transform.position  = GetTargetPosition(sensorComponent.transform);
            target.confidence.position = sensorComponent.positionConfidence;
        }
コード例 #7
0
        protected override void UpdateTarget(HumanoidTarget.TargetTransform target, SensorComponent sensorComponent)
        {
            if (target.transform == null || sensorComponent.rotationConfidence + sensorComponent.positionConfidence <= 0)
            {
                return;
            }

            // Workaround for 90 degrees issue in SteamVR without Action Manifests

            target.transform.rotation  = GetTargetRotation(sensorComponent.transform);
            target.confidence.rotation = sensorComponent.rotationConfidence;

            // Foot rotation is derived from lowerleg
            //target.transform.rotation = footTarget.lowerLeg.bone.targetRotation; //Quaternion.identity;
            //target.confidence.rotation = 0.5F;

            target.transform.position  = GetTargetPosition(sensorComponent.transform);
            target.confidence.position = sensorComponent.positionConfidence;
        }
コード例 #8
0
        private void UpdateHips(HumanoidTarget.TargetTransform hipsTarget)
        {
            float confidence = hipsSensor.rotationConfidence;

            if (confidence > 0)
            {
                hipsTarget.confidence.rotation = confidence;
                hipsTarget.transform.rotation  = tracker.trackerTransform.rotation * hipsSensor.rotation;
            }

            confidence = hipsSensor.positionConfidence;
            if (confidence > 0)
            {
                hipsTarget.confidence.position = confidence;
                // This is double, in the NeuronTracker this happens too...
                // Currently it is disabled in the NeuronTracker (see PerceptionNeuron.cs, line 47)
                hipsTarget.transform.position = neuronTracker.trackerTransform.TransformPoint(hipsSensor.position);
            }
        }