Oculus Hand Tracking: получить правильную скорость руки? - PullRequest
0 голосов
/ 25 марта 2020

РЕДАКТИРОВАТЬ: После выполнения еще немного отладки. Кажется, что вектор скорости по какой-то причине читает ноль (для обоих методов). Есть предложения?

Я пытаюсь сделать простую демонстрацию отслеживания рук в Unity для квеста Oculus. Мне удалось успешно реализовать механизм Grab and Release c, похожий на этот урок здесь . Это немного устарело для состояния плагина Oculus, но общая логика c остается прежней.

Единственной проблемой, с которой я столкнулся, была реализация функции Drop. Когда я бросаю объект, я хочу добавить к нему линейную и angular скорость моей руки. Я пытался сделать это следующими способами:

Сценарий Grabber:

protected override void GrabEnd()
{
    if (m_grabbedObj)
    {
        Debug.Log("Grabbed object found");
        Rigidbody rigid = GetComponent<Rigidbody>();
        if (rigid)
        {
            GrabbableRelease(rigid.velocity, rigid.angularVelocity);
        }
        else
        {
            Vector3 linearVelocity = (transform.position - lastPointerPos) / Time.fixedDeltaTime;
            Vector3 angularVelocity = (transform.eulerAngles - lastPointerRot.eulerAngles) / Time.fixedDeltaTime;

            GrabbableRelease(linearVelocity, angularVelocity);
        }
    }

    GrabVolumeEnable(true);
}

Внутри Grabbable:

virtual public void GrabEnd(Vector3 linearVelocity, Vector3 angularVelocity)
{
    Rigidbody rb = gameObject.GetComponent<Rigidbody>();

    rb.velocity = linearVelocity;
    rb.angularVelocity = angularVelocity;
}

Есть еще одна функция в между этими двумя, но по сути он просто вызывает GrabEnd для объекта, передающего с ним скорости.

Я также обеспечил наличие твердых тел как на захватчике (руках), так и на захватываемых объектах.

lastPointerPos & lastPointerRot - это Vector3, которые сохраняются в конце FixedUpdate. Я также проверяю, нужно ли мне вызывать GrabEnd внутри FixedUpdate в зависимости от PinchStrength и Confidence указательного пальца.

Причина, по которой у меня есть два метода, заключается в двух разных способах, которые я пытался решить, это вопрос. Ни один, кажется, не работает. Объект просто падает прямо на пол, независимо от того, как я машу руками, как дурак в моей гостиной. Lol

Любая помощь будет принята с благодарностью!

...