feature: 添加控制根骨骼胯骨的代码
但是测试发生不可理解现象
This commit is contained in:
57
Assets/Behaviours/BoneBehaviour.cs
Normal file
57
Assets/Behaviours/BoneBehaviour.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using System.Collections.Generic;
|
||||
using Models;
|
||||
using UnityEngine;
|
||||
using Utils.PoseTransformHandlers;
|
||||
|
||||
namespace Behaviours
|
||||
{
|
||||
public class BoneBehaviour : MonoBehaviour
|
||||
{
|
||||
private readonly UdpListener _listener = new UdpListener();
|
||||
private PoseTransform[] _transforms = new PoseTransform[PoseLandmarkType.MaxValue];
|
||||
|
||||
private Animator _animator;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_animator = GetComponent<Animator>();
|
||||
|
||||
for (var i = 0; i < PoseLandmarkType.MaxValue; i++)
|
||||
{
|
||||
_transforms[i] = new PoseTransform(i, new NormalHandler());
|
||||
}
|
||||
|
||||
_listener.AddHandler(OnReceive);
|
||||
_listener.Connect(5000);
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
var frontLeft = Vector3.Cross(
|
||||
_transforms[PoseLandmarkType.RightHip] - _transforms[PoseLandmarkType.LeftHip],
|
||||
_transforms[PoseLandmarkType.RightShoulder] - _transforms[PoseLandmarkType.LeftHip]);
|
||||
|
||||
var frontRight = Vector3.Cross(
|
||||
_transforms[PoseLandmarkType.LeftShoulder] - _transforms[PoseLandmarkType.RightHip],
|
||||
_transforms[PoseLandmarkType.LeftHip] - _transforms[PoseLandmarkType.RightHip]);
|
||||
|
||||
var front = frontLeft + frontRight;
|
||||
front.Normalize();
|
||||
|
||||
_animator.GetBoneTransform(HumanBodyBones.Hips).rotation = Quaternion.LookRotation(front);
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
_listener.DisConnect();
|
||||
}
|
||||
|
||||
private void OnReceive(List<PoseLandmark> landmarks)
|
||||
{
|
||||
foreach (var landmark in landmarks)
|
||||
{
|
||||
PoseTransform.UpdatePosition(ref _transforms[landmark.Type.Value], landmark);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Behaviours/BoneBehaviour.cs.meta
Normal file
11
Assets/Behaviours/BoneBehaviour.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a2b060336532a01bfb4593b385955175
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user