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.
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
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.
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.
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.
- Selecione o Perfil de Configuração de Entrada
- Selecione Clonar no perfil do sistema de entrada para ativar a modificação.
- 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
- Selecione Clonar para alterar as predefinições de Movimento Bissexto.
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 comoLeapControllerOrientation.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:LeapVRDeviceOffsetY
eLeapVRDeviceOffsetZ
LeapVRDeviceTiltX
. 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 aLeapVRDeviceOrigin
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
eExitPinchDistance
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çãoEnterPinchDistance
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)LeapControllerOrientation
: MesaTestar 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.
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 LeapControllerOrientation
Headset, 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
- 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
- Fechar Unidade
- Feche o Visual Studio, se estiver aberto
- 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
- 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/ .