Usando o movimento leap

É necessário um controlador de movimento leap para utilizar este fornecedor de dados.

O Fornecedor de Dados de Movimento Leap permite o rastreio articulado das mãos para VR e pode ser útil para prototipagem rápida no editor. O fornecedor de dados pode ser configurado para utilizar o Controlador de Movimento Leap montado num auricular ou colocado numa secretária virada para cima.

LeapMotionIntroGif

Este fornecedor pode ser utilizado em editor e dispositivo enquanto está na plataforma Standalone. Também pode ser usado em editor enquanto na plataforma UWP, mas NÃO em uma construção UWP.

Versão MRTK Versões de módulos de unidade de movimento de movimento de salto suportados
2.6.x 4.5.0, 4.5.1
2.7.x 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0, 4.9.1

Nota

UnityModules 4.9.1 e superior requerem o serviço gemini V5.2 ou superior. Consulte as notas de lançamento para 4.9.1.

Usando o Leap Motion (por Ultraleap) rastreio de mão em MRTK

  1. Importação de MRTK e dos módulos de unidade do movimento leap

    • Instale o mais recente Software de Rastreio de Movimento leap para obter o Serviço de Rastreio se ainda não estiver instalado
    • Importe o pacote Microsoft.MixedReality.Toolkit.Foundation para o projeto Unidade.
    • Descarregue e importe a mais recente versão dos Módulos de Unidade de Movimento Leap para o projeto
      • Apenas importar o pacote Core dentro dos Módulos de Unidade
  2. Integre os Módulos de Unidade de Movimento Leap com MRTK

    • Depois de os Módulos de Unidade estarem no projeto, navegue para Módulos deUnidade de Movimento Leap Movimento De Realidade Mista

    Nota

    A integração dos Módulos de Unidade ao MRTK adiciona 10 definições de montagem ao projeto e adiciona referências à definição de montagem Microsoft.MixedReality.Toolkit.Providers.LeapMotion. Certifique-se de Visual Studio está fechado.

    LeapMotionIntegration

  3. Adicionar o Fornecedor de Dados de Movimento Leap

    • Criar uma nova cena de Unidade
    • Adicione MRTK à cena navegando para Mixed Reality ToolkitAdicionar à Cena e Configurar
    • Selecione o objeto de jogo MixedRealityToolkit na hierarquia e selecione Copy and Personalize para clonar o perfil de realidade mista padrão.

    LeapMotionProfileClone

    • Selecione o Perfil de Configuração de Entrada

    Perfil de configuração de entrada 1

    • Selecione Clone no perfil do sistema de entrada para ativar a modificação.

    LeapMotionInputProfileClone

    • Abra a secção De Fornecedores de Dados de Entrada, selecione Add Data Provider no topo, um novo fornecedor de dados será adicionado no final da lista. Abra o novo fornecedor de dados e desembrote o Tipo para Microsoft.MixedReality.Toolkit.LeapMotion.Input LeapMotionDeviceManager

    Fornecedor de dados leap Add

    • Selecione Clone para alterar as definições de Movimento Leap predefinido.

    LeapDataProviderPreClone

    • O Fornecedor de Dados de Movimento Leap contém a LeapControllerOrientation propriedade que é a localização do Controlador de Movimento Leap. LeapControllerOrientation.Headset indica que o controlador está montado num auricular. LeapControllerOrientation.Desk indica que o controlador é colocado plano na mesa. O valor predefinido é definido para LeapControllerOrientation.Headset .

    • Cada orientação do controlador contém propriedades compensadas:

      • As propriedades de compensação da orientação do auricular espelham as propriedades offset no componente LeapXRServiceProvider. Tem LeapVRDeviceOffsetMode três opções: Predefinição, Desíduo Manual da Cabeça e Transformação. Se o modo de compensação for padrão, então não será aplicado um offset no Controlador de Movimento Leap. O modo manual de compensação da cabeça permite a modificação de três propriedades: LeapVRDeviceOffsetY e LeapVRDeviceOffsetZLeapVRDeviceTiltX . Os valores de propriedade compensados do eixo são então aplicados à colocação do controlador predefinido. O modo de compensação Transform contém a LeapVRDeviceOrigin propriedade Transform que especifica uma nova origem para o Controlador de Movimento Leap.

      • A orientação do Balcão contém a propriedade que define a posição de âncora das mãos saltadoras de mesa. O offset é calculado em relação à posição da câmara principal e o valor predefinido é (0,0,2, 0,35) para garantir que as mãos aparecem na frente e na vista da câmara.

        Nota

        As propriedades offset no perfil são aplicadas uma vez quando a aplicação começa. Para modificar os valores durante o tempo de funcionaamento, obtenha o Fornecedor de Serviço de Movimento Leap do Gestor de Dispositivos de Movimento Leap:

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance e ExitPinchDistance são os limiares de distância para deteção de gestos de aperto/toque de ar. O gesto da picada é calculado medindo a distância entre a ponta indicadora do dedo e a ponta do polegar. Para elevar um evento de entrada para baixo, o padrão EnterPinchDistance é definido para 0.02. Para aumentar um evento de entrada para cima (saindo da picada), a distância padrão entre a ponta do indicador e a ponta do polegar é de 0,05.

    LeapControllerOrientation: Auriculares (Predefinido) LeapControllerOrientation: Mesa
    LeapHeadheads LeapDeskGif
    LeapHeadsetInspector LeapDeskInspector
  4. Testar o Fornecedor de Dados de Movimento Leap

    • Depois de o Fornecedor de Dados de Movimento Leap ter sido adicionado ao perfil do sistema de entrada, prima reprodução, mova a mão em frente ao Controlador de Movimento Leap e deverá ver a representação conjunta da mão.
  5. Construindo o seu projeto

Ficando as articulações da mão

Obter juntas usando o Fornecedor de Dados de Movimento Leap é idêntico à recuperação da articulação da mão para uma mão articulada MRTK. Para obter mais informações, consulte o Rastreio manual.

Com o MRTK numa cena de unidade e o Fornecedor de Dados de Movimento Leap adicionado como Um Fornecedor de Dados de Entrada no perfil do Sistema de Entrada, crie um objeto de jogo vazio e anexe o seguinte script de exemplo.

Este script é um exemplo simples de como recuperar a pose da articulação da palma numa Mão de Movimento Leap. Uma esfera segue a mão esquerda do Leap enquanto um cubo segue a mão direita do Leap.

using Microsoft.MixedReality.Toolkit;
using Microsoft.MixedReality.Toolkit.Input;
using Microsoft.MixedReality.Toolkit.Utilities;
using System.Collections.Generic;
using UnityEngine;

public class LeapHandJoints : MonoBehaviour, IMixedRealityHandJointHandler
{
    private GameObject leftHandSphere;
    private GameObject rightHandCube;

    private void Start()
    {
        // Register the HandJointHandler as a global listener
        CoreServices.InputSystem.RegisterHandler<IMixedRealityHandJointHandler>(this);

        // Create a sphere to follow the left hand palm position
        leftHandSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
        leftHandSphere.transform.localScale = Vector3.one * 0.03f;

        // Create a cube to follow the right hand palm position
        rightHandCube = GameObject.CreatePrimitive(PrimitiveType.Cube);
        rightHandCube.transform.localScale = Vector3.one * 0.03f;
    }

    public void OnHandJointsUpdated(InputEventData<IDictionary<TrackedHandJoint, MixedRealityPose>> eventData)
    {
        if (eventData.Handedness == Handedness.Left)
        {
            Vector3 leftHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
            leftHandSphere.transform.position = leftHandPalmPosition;
        }

        if (eventData.Handedness == Handedness.Right)
        {
            Vector3 rightHandPalmPosition = eventData.InputData[TrackedHandJoint.Palm].Position;
            rightHandCube.transform.position = rightHandPalmPosition;
        }
    }

Dica de fluxo de trabalho do editor de unidade

A utilização do Fornecedor de Dados de Movimento Leap não requer um auricular VR. As alterações a uma aplicação MRTK podem ser testadas no editor com as mãos Leap sem auriculares.

As Mãos de Movimento Leap aparecerão no editor, sem um auricular VR ligado. Se o LeapControllerOrientation auricular estiver definido para LeapControllerOrientationo controlador Leap Motion terá de ser mantido por uma mão com a câmara virada para a frente.

Nota

Se a câmara for movida utilizando as teclas WASD no editor e no LeapControllerOrientationLeapControllerOrientationas mãos não seguirão a câmara. As mãos só seguem o movimento da câmara se um auricular VR estiver ligado enquanto estiver LeapControllerOrientation definido LeapControllerOrientation. As mãos Leap seguirão o movimento da câmara no editor se o LeapControllerOrientation conjunto estiver definido para o LeapControllerOrientation.

Remoção do Leap Motion do Project

  1. Navegue para os módulos deunidade de movimentode movimento de salto de movimento de realidade mista
    • Deixe a Unidade refrescar-se como referências no ficheiro Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef são modificados neste passo
  2. Unidade Próxima
  3. Perto Visual Studio, se estiver aberto.
  4. Abra o Explorador de Arquivos e navegue até à raiz do projeto MRTK Unitity
    • Apagar o Diretório de Nome/Biblioteca do UnityProject
    • Eliminar o Nome/Ativos/Ativos/Plugins/LeapMotion
    • Eliminar o ficheiro UnityProjectName/Ativos/Plugins/LeapMotion.meta
  5. Reabrir Unidade

Em Unity 2018.4, poderá notar que os erros ainda permanecem na consola depois de eliminar a Biblioteca e os Fundos Core leap Motion. Se os erros forem registados após a reabertura, reinicie a Unidade novamente.

Erros Comuns

Leap Motion não se integrou com MRTK

Para testar se os Módulos de Unidade do Movimento Leap foram integrados com o MRTK:

  • Navegue para o sistema de ferramentas de realidade mista Utilitários Leap Motion Check Integration >> Status
    • Isto mostrará uma janela pop up com uma mensagem sobre se os Módulos de Unidade de Movimento Leap foram ou não integrados com MRTK.
  • Se a mensagem diz que os ativos não foram integrados:
    • Certifique-se de que os Módulos de Unidade de Movimento Leap estão no projeto
    • Certifique-se de que a versão adicionada está suportada, consulte a tabela no topo da página para versões suportadas.
    • Experimente utilitários de ferramentas de realidade mista utilitários > leap motion integrar > módulos de unidade de movimento de movimento de salto

Montagem de cópia O HLAPI multijogador falhou

Na importação dos ativos centrais da Unidade de Movimento Leap Motion este erro pode ser registado:

Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll' failed

Solução

  • Uma solução de curto prazo é reiniciar a Unidade. Consulte a edição 7761 para obter mais informações.

Cena de exemplo de movimento de salto

A cena do exemplo utiliza o perfil DefaultLeapMotionConfiguration e determina se o projeto Unidade foi configurado corretamente para utilizar o Fornecedor de Dados de Movimento Leap.

A cena do exemplo está contida no pacote Microsoft.MixedReality.Toolkit.Exemplos no pacote MRTK/Exemplos/Demos/HandTracking/diretório.

Ver também