改变Unity中手追踪的增益



我想在Unity中更改手部跟踪的增益,但我在尝试移动手部时遇到了一些问题。事实上,当我试图移动右手时,有一个错误告诉我手的位置是无限的。你对此有想法吗?我在论坛上看到了很多东西,但我不明白问题出在哪里。

这是我的代码:

// Variables
public GameObject hand;
public GameObject handRenderer;
private Vector3 posOrigin;
// Settings
public float gain;
// Start is called before the first frame update
void Start()
{
Vector3 posOrigin = handRenderer.transform.position;
}
// Update is called once per frame
void Update()
{
float dx = transfo(handRenderer.transform.position.x, posOrigin.x);
float dz = transfo(handRenderer.transform.position.z, posOrigin.z);
hand.transform.position = new Vector3(posOrigin.x + dx, 0, posOrigin.z + dz);
}
float transfo ( float origin, float actual )
{
return gain * (actual - origin);
}

手渲染器是我计算的重点,因为它不能直接用于对象RightHand。非常感谢

首先在中的Start

Vector3 posOrigin = handRenderer.transform.position;

您正在创建一个新的局部变量

你更想分配你的类字段

void Start()
{
posOrigin = handRenderer.transform.position;
}

然后CCD_ 2似乎被反向使用。。它应该始终是

current - original

但你首先传入当前的,然后传入导致的原始

original - current

我认为总的来说,你应该一步到位,而不是使用这种方法,例如

var delta = handRenderer.transform.position - posOrigin;
var sizedDelta = delta * gain;
sizedDelta.y = 0;
hand.transform.position = posOrigin + sizedDelta;

然后确保您没有意外地在handhandRenderer中引用相同的对象,或者handRenderer没有嵌套在hand下。

否则,每当在Update中移动hand时,也移动handRenderer,计算基于=>示例

  • 在0,0,0时初始化,增益=2
  • 将handRenderer移动到1,1,1
  • =>将手移至2,2,2
  • 将hanRenderer移动到现在的3,3,3
  • =>下一帧移到6,6,6
  • mves handRenderer到现在的9, 9, 9
  • =>下一帧移到18,18,18

最新更新