Saltar al contenido principal
Esta página se tradujo automáticamente y puede contener errores. Ver el original en inglés

Guía de Physics Glove para Unity

Con el bHaptics Physics Glove SDK, puede ofrecer a los usuarios de TactGlove una experiencia de RV inmersiva con vibraciones en las yemas de los dedos y las muñecas.


Para qué sirve

Para que las manos virtuales puedan colisionar físicamente con el entorno virtual e interactuar con objetos virtuales, se puede aplicar física a las manos virtuales.

La estructura maestro-esclavo se utiliza comúnmente para aplicar física a las manos. Para implementarla, puede usar plugins como HPTK, Ultraleap Physics Hand o Auto Hand. También puede crear su propia implementación.

El bHaptics Physics Glove SDK puede aplicar hápticos a las manos virtuales mediante física maestro-esclavo. Proporciona las vibraciones adecuadas al guante háptico para que los usuarios sientan como si realmente estuvieran agarrando un objeto virtual.

nota

No es necesario usar el Physics Glove SDK solo para hacer vibrar el TactGlove. Puede seguir usando el TactGlove si ya completó la Guía de Unity anterior.

Las instrucciones de este documento ofrecen funciones para ayudarle a aplicar mejores hápticos cuando sus manos virtuales realizan acciones físicas.

Requisito previo

Especificaciones

Antes de empezar

nota

Asumimos que ha seguido la Guía de Unity para configurar su proyecto de Unity.

Asegúrese de que estos requisitos se cumplan en su proyecto de Unity.

  • La aplicación háptica está vinculada a su proyecto mediante la API Key y el App ID.
  • El prefab "[bhaptics]" existe en su escena.

Agregar el prefab

  1. En la ventana del proyecto, vaya a "Assets" → "Bhaptics" → "SDK2" → "Prefabs".
  2. Agregue el prefab "[bHapticsGlove]" a su escena.
  3. En la jerarquía, seleccione "[bHapticsGlove]" que agregó, y verá el componente Bhaptics Physics Glove en el inspector. Untitled
  4. Seleccione el botón "Create New GloveHapticSettings". Entonces aparecerá la configuración de hápticos del guante. Untitled

Los valores configurados por defecto funcionarán de manera ideal en un entorno típico. Sin embargo, es posible que deba ajustar los valores de los parámetros según el entorno de su proyecto para obtener una buena sensación.

Puede encontrar una descripción más detallada de los parámetros en la página BhapticsPhysicsGloveSettings de la Referencia.

Aplicar bHaptics a la Physics Hand

Dependiendo de cómo esté implementada la física de sus manos, la manera de registrar los eventos puede variar.

Sin embargo, el principio común es que cuando la yema del dedo detecta una colisión, el motor en la yema del dedo proporciona la cantidad adecuada de hápticos.

Encuentre un GameObject con un Collider (o Rigidbody) ubicado en la yema del dedo, luego adjunte un componente que implemente el contenido a continuación. Cuando se invoque el evento Collision y se ejecute la función siguiente, el guante proporcionará hápticos.

Para más información sobre el evento Collision en Unity, consulte el manual de Unity.

Dependiendo del plugin que esté usando, es posible que haya eventos que se invoquen cuando ocurra un evento de colisión. De manera similar, puede hacerlo llamando a una función que aplique el háptico. Consulte a continuación.

nota

El guante tiene los siguientes mapeos de motores. Motor Index

SendEnterHaptic

Este código es una función que creamos asumiendo que se usará en OnCollisionEnter.

private int fingerIndex;
private bool isLeft;

private void OnCollisionEnter(Collision collision)
{
// We typically use collision.relativeVelocity, but depending on how your hand physics are designed, you can use other overload functions.
BhapticsPhysicsGlove.Instance.SendEnterHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, collision.relativeVelocity);
}

SendStayHaptic

Este código es una función que creamos asumiendo que se usará en OnCollisionStay.

private int fingerIndex;
private bool isLeft;

private void OnCollisionStay(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendStayHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex, slaveTransform, masterTransform);
}

SendExitHaptic

Este código es una función que creamos asumiendo que se usará en OnCollisionExit.

private int fingerIndex;
private bool isLeft;

private void OnCollisionExit(Collision collision)
{
BhapticsPhysicsGlove.Instance.SendExitHaptic(isLeft ? PositionType.GloveL : PositionType.GloveR, fingerIndex);
}

Registre los tres eventos y pruébelos. Los eventos se activarán cuando las yemas de los dedos hagan contacto.

Para más información sobre estas funciones hápticas, consulte la referencia de la clase BhapticsPhysicsGlove.