Utilizar Movimento Bissexto e Ultraleap — MRTK2

É necessário um Comando de Movimento Bissexto para utilizar este fornecedor de dados.

O Fornecedor de Dados de Movimento Bissexto permite o controlo manual articulado para VR e pode ser útil para prototipagem rápida no editor. O fornecedor de dados pode ser configurado para utilizar o Comando de Movimento Bissexto montado num auricular ou colocado sobre uma secretária virada para cima.

LeapMotionIntroGif

Este fornecedor pode ser utilizado no editor e no dispositivo enquanto estiver na plataforma Autónoma. Também pode ser utilizado no editor enquanto estiver na plataforma UWP, mas NÃO numa compilação UWP.

Versão do MRTK Versões dos Módulos do Unity de Movimento Bissexto Suportadas
2.6.x 4.5.0, 4.5.1
2.7.0 - 2.7.2 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0
2.7.3 4.5.0, 4.5.1, 4.6.0, 4.7.0, 4.7.1, 4.8.0, 4.9.1 (ver nota abaixo)

Nota

Os Módulos unity 4.9.1 requerem o serviço de controlo Gemini 5.2 ou superior. O plug-in do Unity V4.9.1 só é oficialmente suportado no Unity 2019. Consulte as notas de versão da versão 4.9.1.

Os Módulos do Unity mudaram o nome do Plug-in do Unity na V5.0.0.

Versão do MRTK Versões do Plug-in do Unity Ultraleap Suportadas
2.8.0 5.3.0 (ver nota abaixo)

Nota

As versões 5.0.0, 5.1.0 e 5.2.0 do Plug-in do Unity não são suportadas em nenhuma versão do MRTK. Recomenda-se que os utilizadores atualizem para a versão 5.3.0. O Unity Plugin 5.3.0 requer o serviço de controlo Gemini 5.2 ou superior.

Utilizar o controlo manual do Movimento Bissexto (por Ultraleap) no MRTK

  1. Importar o MRTK e os Módulos do Unity de Movimento Bissexto/Plug-in do Unity

    • Instale o Software de Controlo de Movimentos Leap mais recente para obter o Serviço de Controlo se ainda não estiver instalado
    • Importe o pacote Microsoft.MixedReality.Toolkit.Foundation para o projeto unity.
    • Transferir e importar a versão mais recente dos Módulos do Unity do Movimento Bissexto/Plug-in do Unity para o projeto
      • Para Módulos do Unity: importe apenas o pacote Core no projeto
      • Para o Plug-in do Unity: importe apenas o pacote de Controlo no projeto. Por agora, só são suportadas .unitypackages.

    Importante

    O Unity preteriu SelectionMode.OnlyUserModifiable após o Unity 2019.4.19, o que resulta no seguinte erro proveniente do script Hotkeys.cs ultraleap: Assets\Plugins\LeapMotion\Core\Editor\Hotkeys.cs(24,91): erro CS0619: "SelectionMode.OnlyUserModifiable" é obsoleto: ""OnlyUserModifiable" é obsoleto. Em alternativa, utilize "Editável". (UnityUpgradeable) -> Editável".

    Para resolver os problemas, altere SelectionMode.OnlyUserModifiable para SelectionMode.Editable no script Hotkeys.cs localizado em Plugins/LeapMotion/Core/Editor/Hotkeys.cs.

  2. Integrar os Módulos do Unity de Movimento Bissexto/Plug-in do Unity com o MRTK

    • Depois de os Módulos do Unity/Plug-in do Unity estarem no projeto, navegue para Mixed Reality>Toolkit>Utilities>Movimento> BissextoIntegrar Módulos do Unity de Movimento Bissexto.

    Nota

    Integrar os Módulos do Unity no MRTK adiciona 10 definições de assemblagem ao projeto e adiciona referências à definição de assemblagem Microsoft.MixedReality.Toolkit.Providers.LeapMotion . Certifique-se de que o Visual Studio está fechado.

    LeapMotionIntegration

  3. Adicionar o Fornecedor de Dados de Movimento Bissexto

    • Criar uma nova cena do Unity
    • Adicione o MRTK à cena ao navegar para Mixed Reality Toolkit>Adicionar à Cena e Configurar
    • Selecione o objeto de jogo MixedRealityToolkit na hierarquia e selecione Copiar e Personalizar para clonar o perfil de realidade mista predefinido.

    LeapMotionProfileClone

    • Selecione o Perfil de Configuração de Entrada

    Perfil de Configuração de Entrada 1

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

    LeapMotionInputProfileClone

    • Abra a secção Fornecedores de Dados de Entrada , selecione Adicionar Fornecedor de Dados na parte superior, será adicionado um novo fornecedor de dados no final da lista. Abra o novo fornecedor de dados e defina o Tipo como Microsoft.MixedReality.Toolkit.LeapMotion.Input > LeapMotionDeviceManager

    Adicionar Fornecedor de Dados Bissexto

    • Selecione Clonar para alterar as predefinições de Movimento Bissexto.

    LeapDataProviderPreClone

    • O Fornecedor de Dados de Movimento Bissexto contém a LeapControllerOrientation propriedade que é a localização do Comando de Movimento Bissexto. LeapControllerOrientation.Headset indica que o controlador está montado num headset. LeapControllerOrientation.Desk indica que o controlador está colocado na mesa. O valor predefinido está definido como LeapControllerOrientation.Headset.

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

      • As propriedades de deslocamento da orientação do Headset refletem as propriedades de deslocamento no componente LeapXRServiceProvider. O LeapVRDeviceOffsetMode tem três opções: Predefinição, Deslocamento Manual do Cabeçalho e Transformação. Se o modo de deslocamento for Predefinido, não será aplicado um desvio ao Comando de Movimento Bissexto. O modo Deslocamento Manual da Cabeça permite a modificação de três propriedades: LeapVRDeviceOffsetYe LeapVRDeviceOffsetZLeapVRDeviceTiltX. Em seguida, os valores de propriedade de desvio do eixo são aplicados ao posicionamento do controlador predefinido. O modo de deslocamento transformar contém a LeapVRDeviceOrigin propriedade Transformar, que especifica uma nova origem para o Comando de Movimento Bissexto.

      • A Orientação da mesa contém a LeapControllerOffset propriedade que define a posição de âncora das mãos bissextas da secretária. O desvio é calculado em relação à posição da câmara principal e o valor predefinido é (0,-0,2, 0,35) para se certificar de que as mãos aparecem à frente e à vista da câmara.

        Nota

        As propriedades de deslocamento no perfil são aplicadas uma vez quando a aplicação é iniciada. Para modificar os valores durante o runtime, obtenha o Fornecedor de Serviços de Movimento Bissexto a partir do Gestor de Dispositivos de Movimento Bissexto:

        LeapMotionDeviceManager leapMotionDeviceManager = CoreServices.GetInputSystemDataProvider<LeapMotionDeviceManager>();
        LeapXRServiceProvider leapXRServiceProvider = leapMotionDeviceManager.LeapMotionServiceProvider as LeapXRServiceProvider; 
        
    • EnterPinchDistance e ExitPinchDistance são os limiares de distância para a deteção de gestos de toque de aproximar/tocar no ar. O gesto de aproximar os dedos é calculado medindo a distância entre a ponta do dedo indicador e a ponta do polegar. Para gerar um evento de entrada para baixo, a predefinição EnterPinchDistance está definida como 0,02. Para elevar um evento de entrada para cima (saindo da pitada), a distância predefinida entre a ponta do dedo de índice e a ponta do polegar é 0,05.

    LeapControllerOrientation: Headset (Predefinição)

    LeapHeadsetGif

    LeapHeadsetInspector

    LeapControllerOrientation: Mesa

    LeapDeskGif

    LeapDeskInspector

  4. Testar o Fornecedor de Dados de Movimento Leap

    • Depois de o Fornecedor de Dados de Movimento Bissexto ter sido adicionado ao perfil do sistema de entrada, prima reproduzir, mova a mão para a frente do Comando de Movimento Bissexto e deverá ver a representação conjunta da mão.
  5. Criar o seu projeto

    • Navegue para Definições de Compilação de Ficheiros >
    • Apenas as compilações Autónomas são suportadas se utilizar o Fornecedor de Dados de Movimento Leap.
    • Para obter instruções sobre como utilizar um headset Windows Mixed Reality para compilações autónomas, consulte Criar e implementar o MRTK em Auscultadores WMR (Autónomo).

Obter as articulações das mãos

Obter juntas com o Fornecedor de Dados de Movimento Bissexto é idêntico à obtenção conjunta manual de uma Mão Articulada mrTK. Para obter mais informações, consulte Controlo de Mãos.

Com o MRTK numa cena de unidade e o Fornecedor de Dados de Movimento Bissexto adicionado como 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 obter a pose da articulação da palma numa Mão de Movimento Bissexto. Uma esfera segue a mão bissexta esquerda enquanto um cubo segue a mão direita do Bissexto.

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;
        }
    }
}

Sugestão do fluxo de trabalho do editor do Unity

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

As Mãos de Movimento Bissexto serão apresentadas no editor, sem um headset VR ligado à corrente. Se o LeapControllerOrientation estiver definido como Headset, o 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 com as teclas WASD no editor e se for LeapControllerOrientationHeadset, as mãos não seguirão a câmara. As mãos só seguirão o movimento da câmara se um auricular VR estiver ligado à corrente enquanto o LeapControllerOrientation headset estiver definido. As mãos bissextos seguirão o movimento da câmara no editor se estiver LeapControllerOrientation definido como Desk.

Remover o Movimento Bissexto do Projeto

  1. Navegue para o Mixed Reality Toolkit>Leap Motion>Separate Leap Motion Unity Modules
    • Deixe o Unity atualizar como referências no ficheiro Microsoft.MixedReality.Toolkit.Providers.LeapMotion.asmdef neste passo
  2. Fechar Unidade
  3. Feche o Visual Studio, se estiver aberto
  4. Abra Explorador de Ficheiros e navegue para a raiz do projeto do Unity do MRTK
    • Eliminar o diretório UnityProjectName/Library
    • Eliminar o diretório UnityProjectName/Assets/Plugins/LeapMotion
    • Eliminar o ficheiro UnityProjectName/Assets/Plugins/LeapMotion.meta
  5. Reabrir o Unity

No Unity 2018.4, poderá reparar que os erros ainda permanecem na consola depois de eliminar a Biblioteca e os Recursos do Leap Motion Core. Se os erros forem registados após a reabertura, reinicie novamente o Unity.

Erros Comuns

O Leap Motion não está integrado no MRTK

Para testar se os Módulos do Leap Motion Unity foram integrados no MRTK:

  • Navegue para Mixed Reality Toolkit > Utilities > Leap Motion > Check Integration Status
    • Esta ação irá apresentar uma janela de pop-up com uma mensagem sobre se os Módulos do Leap Motion Unity foram ou não integrados no MRTK.
  • Se a mensagem indicar que os recursos não foram integrados:
    • Certifique-se de que os Módulos do Unity do Movimento Bissexto estão no projeto
    • Certifique-se de que a versão adicionada é suportada, consulte a tabela na parte superior da página para obter as versões suportadas.
    • Experimente Mixed Reality Toolkit > Utilities > Leap Motion > Integrate Leap Motion Unity Modules

Falha ao copiar o HLAPI multijogador da assemblagem

Ao importar os Recursos Do Unity Core do 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 a curto prazo é reiniciar o Unity. Veja Problema 7761 para obter mais informações.

Cena de Exemplo de Movimento Bissexto

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

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

Ver também