Sdílet prostřednictvím


Simulace vnímání

Chcete pro svou aplikaci vytvořit automatizovaný test? Chcete, aby testy překročily testování jednotek na úrovni komponent a skutečně se vycvičily kompletní testování aplikace? Simulace vnímání je to, co hledáte. Knihovna Pro simulaci vnímání odesílá do aplikace vstupní data člověka a světa, abyste mohli automatizovat testy. Můžete například simulovat vstup člověka, který hledá konkrétní, opakovatelnou pozici, a pak použít gesto nebo ovladač pohybu.

Simulace vnímání může posílat simulované vstupy do fyzického HoloLensu, emulátoru HoloLens (první generace), emulátoru HoloLens 2 nebo počítače s nainstalovaným portálem hybridní reality. Simulace vnímání obchází živé senzory na zařízení hybridní reality a odesílá simulovaný vstup do aplikací běžících na zařízení. Aplikace přijímají tyto vstupní události prostřednictvím stejných rozhraní API, která vždy používají, a nemůžou zjistit rozdíl mezi provozem s reálnými senzory a simulací vnímání. Simulace vnímání je stejná technologie, kterou emulátory HoloLens používají k odesílání simulovaného vstupu do virtuálního počítače HoloLens.

Pokud chcete začít používat simulaci v kódu, začněte vytvořením objektu IPerceptionSimulationManager. Z tohoto objektu můžete vydat příkazy pro řízení vlastností simulovaného "člověka", včetně pozice hlavy, pozice ruky a gest. Můžete také povolit a manipulovat s ovladači pohybu.

Nastavení projektu sady Visual Studio pro simulaci vnímání

  1. Nainstalujte emulátor HoloLens na vývojový počítač. Emulátor obsahuje knihovny, které používáte pro simulaci vnímání.

  2. Vytvořte nový desktopový projekt v sadě Visual Studio C# (konzolový projekt funguje skvěle, abyste mohli začít).

  3. Přidejte do projektu následující binární soubory jako odkazy (Project-Add-Reference>>...). Najdete je v %ProgramFiles(x86)%\Microsoft XDE\(verze), například %ProgramFiles(x86)%\Microsoft XDE\10.0.18362.0 pro emulátor HoloLens 2.

    Poznámka:

    I když jsou binární soubory součástí emulátoru HoloLens 2, fungují také pro Windows Mixed Reality na ploše.)

    a. PerceptionSimulationManager.Interop.dll – spravovaný obálka jazyka C# pro simulaci vnímání
    b. PerceptionSimulationRest.dll – knihovna pro nastavení komunikačního kanálu webového soketu pro HoloLens nebo emulátor.
    c. SimulationStream.Interop.dll – sdílené typy pro simulaci.

  4. Přidání binárního PerceptionSimulationManager.dll implementace do projektu

    a. Nejdřív ho přidejte jako binární soubor do projektu (Project-Add-Existing>> Item...). Uložte ho jako odkaz, aby ho nekopíroval do zdrojové složky projektu.
    Přidání PerceptionSimulationManager.dll do projektu jako odkazu

    b. Pak se ujistěte, že se při sestavení zkopíruje do výstupní složky. Toto je v seznamu vlastností binárního souboru.
    Označení PerceptionSimulationManager.dll pro zkopírování do výstupního adresáře

  5. Nastavte aktivní platformu řešení na x64. (Nástroj Configuration Manager slouží k vytvoření položky platformy pro platformu x64, pokud ještě neexistuje.)

Vytvoření objektu Správce IPerceptionSimulation

K řízení simulace vydáte aktualizace objektů načtených z objektu IPerceptionSimulationManager. Prvním krokem je získat tento objekt a připojit ho k cílovému zařízení nebo emulátoru. IP adresu emulátoru můžete získat kliknutím na tlačítko Portál zařízení na panelu nástrojů.

Ikona Otevřít portál zařízeníOtevřete portál zařízení: V emulátoru otevřete portál zařízení s Windows pro operační systém HoloLens. Pro Windows Mixed Reality se to dá načíst v aplikaci Nastavení v části Aktualizace a zabezpečení a pak pro vývojáře v části Připojit pomocí:" v části Povolit portál zařízení. Nezapomeňte si poznamenat IP adresu i port.

Nejprve zavoláte RestSimulationStreamSink.Create, abyste získali objekt RestSimulationStreamSink. Toto je cílové zařízení nebo emulátor, které budete řídit přes připojení HTTP. Příkazy se předají a zpracují na portálu zařízení s Windows spuštěným na zařízení nebo emulátoru. Čtyři parametry, které budete potřebovat k vytvoření objektu, jsou:

  • Identifikátor URI – IP adresa cílového zařízení (např. "https://123.123.123.123" nebo "https://123.123.123.123:50080")
  • System.Net.NetworkCredential credentials – uživatelské jméno a heslo pro připojení k portálu zařízení s Windows na cílovém zařízení nebo emulátoru. Pokud se připojujete k emulátoru přes místní adresu (např. 168... *) na stejném počítači budou přijaty všechny přihlašovací údaje.
  • bool normal - True pro normální prioritu, false pro nízkou prioritu. Obecně chcete nastavit tuto hodnotu na true pro testovací scénáře, což vašemu testu umožňuje převzít kontrolu. Emulátor a simulace Windows Mixed Reality používají připojení s nízkou prioritou. Pokud váš test používá také připojení s nízkou prioritou, bude mít nejnovější navázáno připojení kontrolu.
  • Token System.Threading.CancellationToken – token pro zrušení asynchronní operace.

Za druhé vytvoříte IPerceptionSimulationManager. Toto je objekt, který používáte k řízení simulace. To je také nutné provést v asynchronní metodě.

Řízení simulovaného člověka

IPerceptionSimulationManager má human vlastnost, která vrací ISimulated Human objekt. K řízení simulovaného člověka proveďte operace s tímto objektem. Příklad:

manager.Human.Move(new Vector3(0.1f, 0.0f, 0.0f))

Základní ukázková konzolová aplikace jazyka C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.PerceptionSimulation;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Task.Run(async () =>
            {
                RestSimulationStreamSink sink = null;
                CancellationToken token = new System.Threading.CancellationToken();

                try
                {
                    sink = await RestSimulationStreamSink.Create(
                        // use the IP address for your device/emulator
                        new Uri("https://169.254.227.115"),
                        // no credentials are needed for the emulator
                        new System.Net.NetworkCredential("", ""),
                        // normal priorty
                        true,
                        // cancel token
                        token);

                    IPerceptionSimulationManager manager = PerceptionSimulationManager.CreatePerceptionSimulationManager(sink);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                // Always close the sink to return control to the previous application.
                if (sink != null)
                {
                    await sink.Close(token);
                }
            });

            // If main exits, the process exits.  
            Console.WriteLine("Press any key to exit...");
            Console.ReadLine();
        }
    }
}

Rozšířená ukázková konzolová aplikace jazyka C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.PerceptionSimulation;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            RestSimulationStreamSink sink = null;
            CancellationToken token = new System.Threading.CancellationToken();

            Task.Run(async () =>
            {
                try
                {
                    sink = await RestSimulationStreamSink.Create(
                        // use the IP address for your device/emulator
                        new Uri("https://169.254.227.115"),
                        // no credentials are needed for the emulator
                        new System.Net.NetworkCredential("", ""),
                        // normal priorty
                        true,
                        // cancel token
                        token);

                    IPerceptionSimulationManager manager = PerceptionSimulationManager.CreatePerceptionSimulationManager(sink);

                    // Now, we'll simulate a sequence of actions.
                    // Sleeps in-between each action give time to the system
                    // to be able to properly react.
                    // This is just an example. A proper automated test should verify
                    // that the app has behaved correctly
                    // before proceeding to the next step, instead of using Sleeps.

                    // Activate the right hand
                    manager.Human.RightHand.Activated = true;

                    // Simulate Bloom gesture, which should cause Shell to disappear
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.Home);
                    Thread.Sleep(2000);

                    // Simulate Bloom gesture again... this time, Shell should reappear
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.Home);
                    Thread.Sleep(2000);

                    // Simulate a Head rotation down around the X axis
                    // This should cause gaze to aim about the center of the screen
                    manager.Human.Head.Rotate(new Rotation3(0.04f, 0.0f, 0.0f));
                    Thread.Sleep(300);

                    // Simulate a finger press & release
                    // Should cause a tap on the center tile, thus launching it
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerPressed);
                    Thread.Sleep(300);
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerReleased);
                    Thread.Sleep(2000);

                    // Simulate a second finger press & release
                    // Should activate the app that was launched when the center tile was clicked
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerPressed);
                    Thread.Sleep(300);
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerReleased);
                    Thread.Sleep(5000);

                    // Simulate a Head rotation towards the upper right corner
                    manager.Human.Head.Rotate(new Rotation3(-0.14f, 0.17f, 0.0f));
                    Thread.Sleep(300);

                    // Simulate a third finger press & release
                    // Should press the Remove button on the app
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerPressed);
                    Thread.Sleep(300);
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.FingerReleased);
                    Thread.Sleep(2000);

                    // Simulate Bloom gesture again... bringing the Shell back once more
                    manager.Human.RightHand.PerformGesture(SimulatedGesture.Home);
                    Thread.Sleep(2000);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            });

            // If main exits, the process exits.  
            Console.WriteLine("Press any key to exit...");
            Console.ReadLine();

            // Always close the sink to return control to the previous application.
            if (sink != null)
            {
                sink.Close(token);
            }
        }
    }
}

Poznámka na řadičích 6-DOF

Před voláním jakýchkoli vlastností metod na simulovaném řadiči 6-DOF je nutné aktivovat kontroler. Pokud to neuděláte, dojde k výjimce. Počínaje Aktualizace Windows 10 z května 2019 lze simulované kontrolery 6-DOF nainstalovat a aktivovat nastavením Status vlastnost ISimulatedSixDofController na SimulatedSixDofControllerStatus.Active. V Aktualizace Windows 10 z října 2018 a starších musíte nejprve nainstalovat simulovaný kontroler 6-DOF zavoláním nástroje PerceptionSimulationDevice umístěného ve složce \Windows\System32. Použití tohoto nástroje je následující:

    PerceptionSimulationDevice.exe <action> 6dof <instance>

Například

    PerceptionSimulationDevice.exe i 6dof 1

Podporované akce jsou:

  • i = instalace
  • q = dotaz
  • r = odebrat

Mezi podporované instance patří:

  • 1 = levý kontroler 6-DOF
  • 2 = pravý kontroler 6-DOF

Ukončovací kód procesu bude indikovat úspěch (nulová návratová hodnota) nebo selhání (nenulová návratová hodnota). Při použití akce q dotaz na to, zda je kontroler nainstalován, bude návratová hodnota nula (0), pokud řadič ještě není nainstalovaný, nebo jedna (1), pokud je kontroler nainstalován.

Při odebírání kontroleru na Aktualizace Windows 10 z října 2018 nebo starším nastavte jeho stav na Vypnuto prostřednictvím rozhraní API a pak zavolejte nástroj PerceptionSimulationDevice.

Tento nástroj musí být spuštěný jako správce.

Referenční dokumentace ke knihovně API

Microsoft.PerceptionSimulation.SimulatedDeviceType

Popisuje typ simulovaného zařízení.

public enum SimulatedDeviceType
{
    Reference = 0
}

Microsoft.PerceptionSimulation.SimulatedDeviceType.Reference

Fiktivní referenční zařízení, výchozí nastavení pro PerceptionSimulationManager

Microsoft.PerceptionSimulation.HeadTrackerMode

Popisuje režim sledování hlavy.

public enum HeadTrackerMode
{
    Default = 0,
    Orientation = 1,
    Position = 2
}

Microsoft.PerceptionSimulation.HeadTrackerMode.Default

Výchozí sledování hlavy. To znamená, že systém může vybrat nejlepší režim sledování hlavy na základě podmínek za běhu.

Microsoft.PerceptionSimulation.HeadTrackerMode.Orientation

Orientace pouze sledování hlavy. To znamená, že sledované umístění nemusí být spolehlivé a některé funkce závislé na pozici hlavy nemusí být k dispozici.

Microsoft.PerceptionSimulation.HeadTrackerMode.Position

Sledování pozice hlavy. To znamená, že pozice a orientace sledované hlavy jsou obě spolehlivé.

Microsoft.PerceptionSimulation.SimulatedGesture

Popisuje simulované gesto.

public enum SimulatedGesture
{
    None = 0,
    FingerPressed = 1,
    FingerReleased = 2,
    Home = 4,
    Max = Home
}

Microsoft.PerceptionSimulation.SimulatedGesture.None

Hodnota sentinelu použitá k označení žádných gest.

Microsoft.PerceptionSimulation.SimulatedGesture.FingerPressed

Gesto stisknutí prstu

Microsoft.PerceptionSimulation.SimulatedGesture.FingerReleased

Gesto uvolnění prstu.

Microsoft.PerceptionSimulation.SimulatedGesture.Home

Gesto pro domovskou/systémovou stránku.

Microsoft.PerceptionSimulation.SimulatedGesture.Max

Maximální platné gesto.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus

Možné stavy simulovaného kontroleru 6-DOF.

public enum SimulatedSixDofControllerStatus
{
    Off = 0,
    Active = 1,
    TrackingLost = 2,
}

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.Off

Řadič 6-DOF je vypnutý.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.Active

Kontroler 6-DOF je zapnutý a sledovaný.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.TrackingLost

Kontroler 6-DOF je zapnutý, ale nelze ho sledovat.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton

Podporovaná tlačítka na simulovaném ovladači 6-DOF.

public enum SimulatedSixDofControllerButton
{
    None = 0,
    Home = 1,
    Menu = 2,
    Grip = 4,
    TouchpadPress = 8,
    Select = 16,
    TouchpadTouch = 32,
    Thumbstick = 64,
    Max = Thumbstick
}

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.None

Hodnota sentinelu použitá k označení žádných tlačítek.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Home

Tlačítko Domů se stiskne.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Menu

Tlačítko Nabídky se stiskne.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Grip

Tlačítko Grip je stisknuto.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.TouchpadPress

TouchPad se stiskne.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Select

Tlačítko Vybrat se stiskne.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.TouchpadTouch

TouchPad se dotkne.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Thumbstick

Palec je stisknut.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Max

Maximální platné tlačítko.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState

Stav kalibrace simulovaných očí

public enum SimulatedGesture
{
    Unavailable = 0,
    Ready = 1,
    Configuring = 2,
    UserCalibrationNeeded = 3
}

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Unavailable

Kalibrace očí není k dispozici.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Ready

Oči byly kalibrovány. Tato hodnota je výchozí.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Configuring

Oči se kalibrují.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.UserCalibrationNeeded

Oči musí být kalibrovány.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy

Přesnost sledování kloubu ruky.

public enum SimulatedHandJointTrackingAccuracy
{
    Unavailable = 0,
    Approximate = 1,
    Visible = 2
}

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Unavailable

Ten kloub není sledován.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Approximate

Pozice kloubu je odvozena.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Visible

Kloub je plně sledován.

Microsoft.PerceptionSimulation.SimulatedHandPose

Přesnost sledování kloubu ruky.

public enum SimulatedHandPose
{
    Closed = 0,
    Open = 1,
    Point = 2,
    Pinch = 3,
    Max = Pinch
}

Microsoft.PerceptionSimulation.SimulatedHandPose.Closed

Klouby prstů ruky jsou nakonfigurovány tak, aby odrážely uzavřenou pozici.

Microsoft.PerceptionSimulation.SimulatedHandPose.Open

Klouby prstů ruky jsou nakonfigurovány tak, aby odrážely otevřenou pozici.

Microsoft.PerceptionSimulation.SimulatedHandPose.Point

Klouby prstů ruky jsou nakonfigurovány tak, aby odrážely bodující pozici.

Microsoft.PerceptionSimulation.SimulatedHandPose.Pinch

Klouby prstů ruky jsou nakonfigurovány tak, aby odrážely pinching pozice.

Microsoft.PerceptionSimulation.SimulatedHandPose.Max

Maximální platná hodnota pro SimulatedHandPose.

Microsoft.PerceptionSimulation.PlaybackState

Popisuje stav přehrávání.

public enum PlaybackState
{
    Stopped = 0,
    Playing = 1,
    Paused = 2,
    End = 3,
}

Microsoft.PerceptionSimulation.PlaybackState.Stopped

Nahrávka je aktuálně zastavená a připravená k přehrávání.

Microsoft.PerceptionSimulation.PlaybackState.Play

Nahrávka se právě přehrává.

Microsoft.PerceptionSimulation.PlaybackState.Paused

Nahrávka je nyní pozastavená.

Microsoft.PerceptionSimulation.PlaybackState.End

Nahrávka dosáhla konce.

Microsoft.PerceptionSimulation.Vector3

Popisuje tři vektory komponent, které můžou popsat bod nebo vektor v prostorech 3D.

public struct Vector3
{
    public float X;
    public float Y;
    public float Z;
    public Vector3(float x, float y, float z);
}

Microsoft.PerceptionSimulation.Vector3.X

Komponenta X vektoru.

Microsoft.PerceptionSimulation.Vector3.Y

Komponenta Y vektoru.

Microsoft.PerceptionSimulation.Vector3.Z

Komponenta Z vektoru.

Microsoft.PerceptionSimulation.Vector3.#ctor(System.Single,System.Single,System.Single)

Vytvořte nový Vector3.

Parametry

  • x - x komponenta vektoru.
  • y - Komponenta y vektoru.
  • z - Komponenta z vektoru.

Microsoft.PerceptionSimulation.Rotation3

Popisuje otočení tří součástí.

public struct Rotation3
{
    public float Pitch;
    public float Yaw;
    public float Roll;
    public Rotation3(float pitch, float yaw, float roll);
}

Microsoft.PerceptionSimulation.Rotation3.Pitch

Komponenta Rozteč otáčení kolem osy X.

Microsoft.PerceptionSimulation.Rotation3.Yaw

Komponenta Yaw otáčení, přímo kolem osy Y.

Microsoft.PerceptionSimulation.Rotation3.Roll

Komponenta Roll otáčení, přímo kolem osy Z.

Microsoft.PerceptionSimulation.Rotation3.#ctor(System.Single,System.Single,System.Single))

Vytvořte novou rotaci3.

Parametry

  • rozteč – součást otáčení.
  • yaw - součást rotace.
  • roll - součást otáčení.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration

Popisuje konfiguraci kloubu na simulované straně.

public struct SimulatedHandJointConfiguration
{
    public Vector3 Position;
    public Rotation3 Rotation;
    public SimulatedHandJointTrackingAccuracy TrackingAccuracy;
}

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.Position

Pozice kloubu.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.Rotation

Rotace kloubu.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.TrackingAccuracy

Přesnost sledování kloubu.

Microsoft.PerceptionSimulation.Frustum

Popisuje zobrazení frustum, jak obvykle používá kamera.

public struct Frustum
{
    float Near;
    float Far;
    float FieldOfView;
    float AspectRatio;
}

Microsoft.PerceptionSimulation.Frustum.Near

Minimální vzdálenost obsažená v frustum.

Microsoft.PerceptionSimulation.Frustum.Far

Maximální vzdálenost obsažená v frustum.

Microsoft.PerceptionSimulation.Frustum.FieldOfView

Vodorovné pole zobrazení frustum v radiánech (menší než PI).

Microsoft.PerceptionSimulation.Frustum.AspectRatio

Poměr vodorovného pole zobrazení k svislým polím zobrazení.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration

Popisuje konfiguraci simulovaného displeje náhlavní soupravy.

public struct SimulatedDisplayConfiguration
{
    public Vector3 LeftEyePosition;
    public Rotation3 LeftEyeRotation;
    public Vector3 RightEyePosition;
    public Rotation3 RightEyeRotation;
    public float Ipd;
    public bool ApplyEyeTransforms;
    public bool ApplyIpd;
}

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.LeftEyePosition

Transformace ze středu hlavy do levého oka pro účely stereo vykreslování.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.LeftEyeRotation

Otočení levého oka pro účely stereo vykreslování.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.RightEyePosition

Transformace ze středu hlavy do pravého oka pro účely stereo vykreslování.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.RightEyeRotation

Otočení pravého oka pro účely stereo vykreslování.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.Ipd

Hodnota IPd hlášená systémem pro účely stereo vykreslování.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.ApplyEyeTransforms

Zda hodnoty zadané pro transformace levého a pravého oka by měly být považovány za platné a použity pro spuštěný systém.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.ApplyIpd

Zda má být hodnota zadaná pro Ipd považována za platnou a použitou pro spuštěný systém.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager

Kořen pro generování paketů používaných k řízení zařízení.

public interface IPerceptionSimulationManager
{   
    ISimulatedDevice Device { get; }
    ISimulatedHuman Human { get; }
    void Reset();
}

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Device

Načtěte objekt simulovaného zařízení, který interpretuje simulovaný člověk a simulovaný svět.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Human

Načtěte objekt, který řídí simulovaný člověk.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Reset

Obnoví simulaci do výchozího stavu.

Microsoft.PerceptionSimulation.ISimulatedDevice

Rozhraní popisující zařízení, které interpretuje simulovaný svět a simulovaný člověk

public interface ISimulatedDevice
{
    ISimulatedHeadTracker HeadTracker { get; }
    ISimulatedHandTracker HandTracker { get; }
    void SetSimulatedDeviceType(SimulatedDeviceType type);
}

Microsoft.PerceptionSimulation.ISimulatedDevice.HeadTracker

Načtěte nástroj Head Tracker ze simulovaného zařízení.

Microsoft.PerceptionSimulation.ISimulatedDevice.HandTracker

Načtěte nástroj Hand Tracker ze simulovaného zařízení.

Microsoft.PerceptionSimulation.ISimulatedDevice.SetSimulatedDeviceType(Microsoft.PerceptionSimulation.SimulatedDeviceType)

Nastavte vlastnosti simulovaného zařízení tak, aby odpovídaly zadanému typu zařízení.

Parametry

  • type – nový typ simulovaného zařízení

Microsoft.PerceptionSimulation.ISimulatedDevice2

Další vlastnosti jsou k dispozici přetypováním ISimulatedDevice na ISimulatedDevice2

public interface ISimulatedDevice2
{
    bool IsUserPresent { [return: MarshalAs(UnmanagedType.Bool)] get; [param: MarshalAs(UnmanagedType.Bool)] set; }
    SimulatedDisplayConfiguration DisplayConfiguration { get; set; }

};

Microsoft.PerceptionSimulation.ISimulatedDevice2.IsUserPresent

Načtěte nebo nastavte, jestli simulovaný člověk aktivně nosí náhlavní soupravu.

Microsoft.PerceptionSimulation.ISimulatedDevice2.DisplayConfiguration

Načtěte nebo nastavte vlastnosti simulovaného zobrazení.

Microsoft.PerceptionSimulation.ISimulatedHeadTracker

Rozhraní popisující část simulovaného zařízení, která sleduje hlavu simulovaného člověka.

public interface ISimulatedHeadTracker
{
    HeadTrackerMode HeadTrackerMode { get; set; }
};

Microsoft.PerceptionSimulation.ISimulatedHeadTracker.HeadTrackerMode

Načte a nastaví aktuální režim sledování hlavy.

Microsoft.PerceptionSimulation.ISimulatedHandTracker

Rozhraní popisující část simulovaného zařízení, která sleduje ruce simulovaného člověka

public interface ISimulatedHandTracker
{
    Vector3 WorldPosition { get; }
    Vector3 Position { get; set; }
    float Pitch { get; set; }
    bool FrustumIgnored { [return: MarshalAs(UnmanagedType.Bool)] get; [param: MarshalAs(UnmanagedType.Bool)] set; }
    Frustum Frustum { get; set; }
}

Microsoft.PerceptionSimulation.ISimulatedHandTracker.WorldPosition

Načtěte pozici uzlu s vztahem ke světu v metrech.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Position

Načtěte a nastavte polohu simulovaného sledování rukou vzhledem ke středu hlavy.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Pitch

Načtěte a nastavte výšku dolů simulovaného sledování rukou.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.FrustumIgnored

Načtěte a nastavte, zda je ignorován frustum simulovaného sledování rukou. Při ignorování jsou obě ruce vždy viditelné. Pokud nejsou ignorovány (výchozí) ruce jsou viditelné pouze tehdy, když jsou uvnitř frustum sledování rukou.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Frustum

Načtěte a nastavte vlastnosti frustum používané k určení, zda jsou ruce viditelné pro simulovaný sledování rukou.

Microsoft.PerceptionSimulation.ISimulated Human

Rozhraní nejvyšší úrovně pro řízení simulovaného člověka.

public interface ISimulatedHuman 
{
    Vector3 WorldPosition { get; set; }
    float Direction { get; set; }
    float Height { get; set; }
    ISimulatedHand LeftHand { get; }
    ISimulatedHand RightHand { get; }
    ISimulatedHead Head { get; }s
    void Move(Vector3 translation);
    void Rotate(float radians);
}

Microsoft.PerceptionSimulation.ISimulated Human.WorldPosition

Načtení a nastavení pozice uzlu s vztahem ke světu v metrech. Pozice odpovídá bodu uprostřed chodidel člověka.

Microsoft.PerceptionSimulation.ISimulated Human.Direction

Načtěte a nastavte směr simulovaných lidských tváří na světě. 0 radiánů čelí dolní ose Z. Kladné radiány otočí o osu Y po směru hodinových ručiček.

Microsoft.PerceptionSimulation.ISimulated Human.Height

Načtěte a nastavte výšku simulovaného člověka v metrech.

Microsoft.PerceptionSimulation.ISimulated Human.LeftHand

Načtěte levou ruku simulovaného člověka.

Microsoft.PerceptionSimulation.ISimulated Human.RightHand

Načtěte pravou ruku simulovaného člověka.

Microsoft.PerceptionSimulation.ISimulated Human.Head

Načtěte hlavu simulovaného člověka.

Microsoft.PerceptionSimulation.ISimulated Human.Move(Microsoft.PerceptionSimulation.Vector3)

Přesunutí simulovaného člověka vzhledem k jeho aktuální poloze v metrech.

Parametry

  • translation – překlad, který se má přesunout, vzhledem k aktuální pozici.

Microsoft.PerceptionSimulation.ISimulated Human.Rotate(System.Single)

Otočení simulovaného člověka vzhledem k jeho aktuálnímu směru ve směru hodinových ručiček o ose Y

Parametry

  • radiány – množství, které se má otočit kolem osy Y.

Microsoft.PerceptionSimulation.ISimulated Human2

Další vlastnosti jsou k dispozici přetypováním ISimulated Human na ISimulated Human2

public interface ISimulatedHuman2
{
    /* New members in addition to those available on ISimulatedHuman */
    ISimulatedSixDofController LeftController { get; }
    ISimulatedSixDofController RightController { get; }
}

Microsoft.PerceptionSimulation.ISimulated Human2.LeftController

Načtěte levý kontroler 6-DOF.

Microsoft.PerceptionSimulation.ISimulated Human2.RightController

Načtěte správný kontroler 6-DOF.

Microsoft.PerceptionSimulation.ISimulatedHand

Rozhraní popisující ruku simulovaného člověka

public interface ISimulatedHand
{
    Vector3 WorldPosition { get; }
    Vector3 Position { get; set; }
    bool Activated { [return: MarshalAs(UnmanagedType.Bool)] get; [param: MarshalAs(UnmanagedType.Bool)] set; }
    bool Visible { [return: MarshalAs(UnmanagedType.Bool)] get; }
    void EnsureVisible();
    void Move(Vector3 translation);
    void PerformGesture(SimulatedGesture gesture);
}

Microsoft.PerceptionSimulation.ISimulatedHand.WorldPosition

Načtěte pozici uzlu s vztahem ke světu v metrech.

Microsoft.PerceptionSimulation.ISimulatedHand.Position

Načtěte a nastavte pozici simulované ruky vzhledem k člověku v metrech.

Microsoft.PerceptionSimulation.ISimulatedHand.Activated

Načtěte a nastavte, zda je ruka aktuálně aktivována.

Microsoft.PerceptionSimulation.ISimulatedHand.Visible

Načtěte, jestli je ruka aktuálně viditelná pro SimulatedDevice (to znamená, jestli je v pozici, kterou má zjistit HandTracker).

Microsoft.PerceptionSimulation.ISimulatedHand.EnsureVisible

Přesuňte ruku tak, aby byla viditelná pro SimulatedDevice.

Microsoft.PerceptionSimulation.ISimulatedHand.Move(Microsoft.PerceptionSimulation.Vector3)

Přesuňte pozici simulované ruky vzhledem k její aktuální poloze v metrech.

Parametry

  • překlad – množství pro překlad simulované ruky.

Microsoft.PerceptionSimulation.ISimulatedHand.PerformGesture(Microsoft.PerceptionSimulation.SimulatedGesture)

Pomocí simulované ruky proveďte gesto. Systém ji rozpozná pouze v případě, že je povolená ruka.

Parametry

  • gesto – gesto, které se má provést.

Microsoft.PerceptionSimulation.ISimulatedHand2

Další vlastnosti jsou k dispozici přetypováním ISimulatedHand na ISimulatedHand2.

public interface ISimulatedHand2
{
    /* New members in addition to those available on ISimulatedHand */
    Rotation3 Orientation { get; set; }
}

Microsoft.PerceptionSimulation.ISimulatedHand2.Orientation

Načtěte nebo nastavte otočení simulované ruky. Pozitivní radiány otáčejí po směru hodinových ručiček při pohledu na osu.

Microsoft.PerceptionSimulation.ISimulatedHand3

Další vlastnosti jsou k dispozici přetypováním ISimulatedHand na ISimulatedHand3

public interface ISimulatedHand3
{
    /* New members in addition to those available on ISimulatedHand and ISimulatedHand2 */
    GetJointConfiguration(SimulatedHandJoint joint, out SimulatedHandJointConfiguration jointConfiguration);
    SetJointConfiguration(SimulatedHandJoint joint, SimulatedHandJointConfiguration jointConfiguration);
    SetHandPose(SimulatedHandPose pose, bool animate);
}

Microsoft.PerceptionSimulation.ISimulatedHand3.GetJointConfiguration

Získejte konfiguraci spojení pro zadaný spoj.

Microsoft.PerceptionSimulation.ISimulatedHand3.SetJointConfiguration

Nastavte konfiguraci spojení pro zadaný spoj.

Microsoft.PerceptionSimulation.ISimulatedHand3.SetHandPose

Nastavte ruku na známou pozici s volitelným příznakem, který chcete animovat. Poznámka: Animace nebude mít za následek, že klouby okamžitě odrážejí jejich konečné konfigurace kloubu.

Microsoft.PerceptionSimulation.ISimulatedHead

Rozhraní popisující hlavu simulovaného člověka.

public interface ISimulatedHead
{
    Vector3 WorldPosition { get; }
    Rotation3 Rotation { get; set; }
    float Diameter { get; set; }
    void Rotate(Rotation3 rotation);
}

Microsoft.PerceptionSimulation.ISimulatedHead.WorldPosition

Načtěte pozici uzlu s vztahem ke světu v metrech.

Microsoft.PerceptionSimulation.ISimulatedHead.Rotation

Načtěte otočení simulované hlavy. Pozitivní radiány otáčejí po směru hodinových ručiček při pohledu na osu.

Microsoft.PerceptionSimulation.ISimulatedHead.Diameter

Načtěte průměr simulované hlavy. Tato hodnota se používá k určení středu hlavy (bod otáčení).

Microsoft.PerceptionSimulation.ISimulatedHead.Rotate(Microsoft.PerceptionSimulation.Rotation3)

Otočte simulovanou hlavu vzhledem k jeho aktuálnímu otočení. Pozitivní radiány otáčejí po směru hodinových ručiček při pohledu na osu.

Parametry

  • rotation - množství, které se má otočit.

Microsoft.PerceptionSimulation.ISimulatedHead2

Další vlastnosti jsou k dispozici přetypováním ISimulatedHead na ISimulatedHead2

public interface ISimulatedHead2
{
    /* New members in addition to those available on ISimulatedHead */
    ISimulatedEyes Eyes { get; }
}

Microsoft.PerceptionSimulation.ISimulatedHead2.Eyes

Načtěte oči simulovaného člověka.

Microsoft.PerceptionSimulation.ISimulatedSixDofController

Rozhraní popisující kontroler 6-DOF přidružený k simulovanému člověku.

public interface ISimulatedSixDofController
{
    Vector3 WorldPosition { get; }
    SimulatedSixDofControllerStatus Status { get; set; }
    Vector3 Position { get; }
    Rotation3 Orientation { get; set; }
    void Move(Vector3 translation);
    void PressButton(SimulatedSixDofControllerButton button);
    void ReleaseButton(SimulatedSixDofControllerButton button);
    void GetTouchpadPosition(out float x, out float y);
    void SetTouchpadPosition(float x, float y);
}

Microsoft.PerceptionSimulation.ISimulatedSixDofController.WorldPosition

Načtěte pozici uzlu s vztahem ke světu v metrech.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Status

Načtení nebo nastavení aktuálního stavu kontroleru Stav kontroleru musí být nastavený na jinou hodnotu než Vypnuto, aby se všechna volání pro přesunutí, otočení nebo stisknutí tlačítek dařilo.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Position

Načtěte nebo nastavte pozici simulovaného kontroleru vzhledem k člověku v metrech.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Orientation

Načtěte nebo nastavte orientaci simulovaného kontroleru.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Move(Microsoft.PerceptionSimulation.Vector3)

Přesuňte pozici simulovaného kontroleru vzhledem k jeho aktuální poloze v metrech.

Parametry

  • translation – množství pro překlad simulovaného kontroleru.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.PressButton(SimulatedSixDofControllerButton)

Stiskněte tlačítko na simulovaném ovladači. Systém ho rozpozná pouze v případě, že je kontroler povolený.

Parametry

  • - Tlačítko, které chcete stisknout.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.ReleaseButton(SimulatedSixDofControllerButton)

Uvolněte tlačítko na simulovaném ovladači. Systém ho rozpozná pouze v případě, že je kontroler povolený.

Parametry

  • - Tlačítko, které se má uvolnit.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.GetTouchpadPosition(out float, out float)

Získejte pozici simulovaného prstu na touchpadu simulovaného ovladače.

Parametry

  • x - Vodorovná pozice prstu.
  • y - Svislá pozice prstu.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.SetTouchpadPosition(float, float)

Nastavte pozici simulovaného prstu na touchpadu simulovaného ovladače.

Parametry

  • x - Vodorovná pozice prstu.
  • y - Svislá pozice prstu.

Microsoft.PerceptionSimulation.ISimulatedSixDofController2

Další vlastnosti a metody jsou k dispozici přetypováním ISimulatedSixDofController na ISimulatedSixDofController2

public interface ISimulatedSixDofController2
{
    /* New members in addition to those available on ISimulatedSixDofController */
    void GetThumbstickPosition(out float x, out float y);
    void SetThumbstickPosition(float x, float y);
    float BatteryLevel { get; set; }
}

Microsoft.PerceptionSimulation.ISimulatedSixDofController2.GetThumbstickPosition(out float, out float)

Získejte pozici simulovaného kryptografickéhosticku na simulovaném ovladači.

Parametry

  • x - Vodorovná pozice kryptografického znaménka.
  • y - Svislá pozice palce.

Microsoft.PerceptionSimulation.ISimulatedSixDofController2.SetThumbstickPosition(float, float)

Nastavte pozici simulovaného kryptografickéhosticku na simulovaném ovladači.

Parametry

  • x - Vodorovná pozice kryptografického znaménka.
  • y - Svislá pozice palce.

Microsoft.PerceptionSimulation.ISimulatedSixDofController2.BatteryLevel

Načtěte nebo nastavte úroveň baterie simulovaného kontroleru. Hodnota musí být větší než 0,0 a menší nebo rovna 100,0.

Microsoft.PerceptionSimulation.ISimulatedEyes

Rozhraní popisující oči simulovaného člověka.

public interface ISimulatedEyes
{
    Rotation3 Rotation { get; set; }
    void Rotate(Rotation3 rotation);
    SimulatedEyesCalibrationState CalibrationState { get; set; }
    Vector3 WorldPosition { get; }
}

Microsoft.PerceptionSimulation.ISimulatedEyes.Rotation

Načtěte rotaci simulovaných očí. Pozitivní radiány otáčejí po směru hodinových ručiček při pohledu na osu.

Microsoft.PerceptionSimulation.ISimulatedEyes.Rotate(Microsoft.PerceptionSimulation.Rotation3)

Otočte simulované oči vzhledem k jeho aktuálnímu otočení. Pozitivní radiány otáčejí po směru hodinových ručiček při pohledu na osu.

Parametry

  • rotation - množství, které se má otočit.

Microsoft.PerceptionSimulation.ISimulatedEyes.CalibrationState

Načte nebo nastaví stav kalibrace simulovaných očí.

Microsoft.PerceptionSimulation.ISimulatedEyes.WorldPosition

Načtěte pozici uzlu s vztahem ke světu v metrech.

Microsoft.PerceptionSimulation.ISimulationRecording

Rozhraní pro interakci s jednou nahrávkou načtenou pro přehrávání

public interface ISimulationRecording
{
    StreamDataTypes DataTypes { get; }
    PlaybackState State { get; }
    void Play();
    void Pause();
    void Seek(UInt64 ticks);
    void Stop();
};

Microsoft.PerceptionSimulation.ISimulationRecording.DataTypes

Načte seznam datových typů v záznamu.

Microsoft.PerceptionSimulation.ISimulationRecording.State

Načte aktuální stav záznamu.

Microsoft.PerceptionSimulation.ISimulationRecording.Play

Spusťte přehrávání. Pokud je záznam pozastavený, přehrávání se obnoví z pozastaveného umístění; pokud je zastaveno, přehrávání se spustí na začátku. Pokud už se tento hovor přehrává, bude tento hovor ignorován.

Microsoft.PerceptionSimulation.ISimulationRecording.Pause

Pozastaví přehrávání v aktuálním umístění. Pokud je nahrávání zastavené, hovor se ignoruje.

Microsoft.PerceptionSimulation.ISimulationRecording.Seek(System.UInt64)

Vyhledá záznam do zadaného času (v intervalech 100 nanosekund od začátku) a pozastaví se v tomto umístění. Pokud je čas za koncem nahrávky, je pozastavený na posledním snímku.

Parametry

  • ticks - čas, na který se má hledat.

Microsoft.PerceptionSimulation.ISimulationRecording.Stop

Zastaví přehrávání a obnoví pozici na začátek.

Microsoft.PerceptionSimulation.ISimulationRecordingCallback

Rozhraní pro příjem změn stavu během přehrávání.

public interface ISimulationRecordingCallback
{
    void PlaybackStateChanged(PlaybackState newState);
};

Microsoft.PerceptionSimulation.ISimulationRecordingCallback.PlaybackStateChanged(Microsoft.PerceptionSimulation.PlaybackState)

Volá se, když se změnil stav přehrávání ISimulationRecording.

Parametry

  • newState – nový stav záznamu.

Microsoft.PerceptionSimulation.PerceptionSimulationManager

Kořenový objekt pro vytváření objektů Simulace vnímání

public static class PerceptionSimulationManager
{
    public static IPerceptionSimulationManager CreatePerceptionSimulationManager(ISimulationStreamSink sink);
    public static ISimulationStreamSink CreatePerceptionSimulationRecording(string path);
    public static ISimulationRecording LoadPerceptionSimulationRecording(string path, ISimulationStreamSinkFactory factory);
    public static ISimulationRecording LoadPerceptionSimulationRecording(string path, ISimulationStreamSinkFactory factory, ISimulationRecordingCallback callback);

Microsoft.PerceptionSimulation.PerceptionSimulationManager.CreatePerceptionSimulationManager(Microsoft.PerceptionSimulation.ISimulationStreamSink)

Vytvořte objekt pro generování simulovaných paketů a jejich doručování do poskytnuté jímky.

Parametry

  • jímka – jímka, která bude přijímat všechny vygenerované pakety.

Vrácená hodnota

Vytvořený správce.

Microsoft.PerceptionSimulation.PerceptionSimulationManager.CreatePerceptionSimulationRecording(System.String)

Vytvořte jímku, která ukládá všechny přijaté pakety do souboru v zadané cestě.

Parametry

  • path – cesta k souboru, který chcete vytvořit.

Vrácená hodnota

Vytvořená jímka.

Microsoft.PerceptionSimulation.PerceptionSimulationManager.LoadPerceptionSimulationRecording(System.String,Microsoft.PerceptionSimulationStreamSinkFactory)

Načtěte záznam ze zadaného souboru.

Parametry

  • path – cesta k souboru, který se má načíst.
  • factory – továrna používaná záznamem k vytvoření ISimulationStreamSink v případě potřeby.

Vrácená hodnota

Načtená nahrávka.

Microsoft.PerceptionSimulation.PerceptionSimulationManager.LoadPerceptionSimulationRecording(System.String,Microsoft.PerceptionSimulationStreamSinkFactory,Microsoft.PerceptionSimulation.ISimulationRecordingCallback)

Načtěte záznam ze zadaného souboru.

Parametry

  • path – cesta k souboru, který se má načíst.
  • factory – továrna používaná záznamem k vytvoření ISimulationStreamSink v případě potřeby.
  • zpětné volání – zpětné volání, které přijímá aktualizace, které regraduje stav záznamu.

Vrácená hodnota

Načtená nahrávka.

Microsoft.PerceptionSimulation.StreamDataTypes

Popisuje různé typy dat datového proudu.

public enum StreamDataTypes
{
    None = 0x00,
    Head = 0x01,
    Hands = 0x02,
    SpatialMapping = 0x08,
    Calibration = 0x10,
    Environment = 0x20,
    SixDofControllers = 0x40,
    Eyes = 0x80,
    DisplayConfiguration = 0x100
    All = None | Head | Hands | SpatialMapping | Calibration | Environment | SixDofControllers | Eyes | DisplayConfiguration
}

Microsoft.PerceptionSimulation.StreamDataTypes.None

Hodnota sentinelu použitá k označení žádných datových typů datových proudů

Microsoft.PerceptionSimulation.StreamDataTypes.Head

Datový proud pro pozici a orientaci hlavy

Microsoft.PerceptionSimulation.StreamDataTypes.Hands

Stream dat pro pozici a gesta rukou

Microsoft.PerceptionSimulation.StreamDataTypes.SpatialMapping

Stream dat pro prostorové mapování prostředí

Microsoft.PerceptionSimulation.StreamDataTypes.Calibration

Stream dat pro kalibraci zařízení. Pakety kalibrace přijímají pouze systém ve vzdáleném režimu.

Microsoft.PerceptionSimulation.StreamDataTypes.Environment

Stream dat pro prostředí zařízení

Microsoft.PerceptionSimulation.StreamDataTypes.SixDofControllers

Stream dat pro ovladače pohybu

Microsoft.PerceptionSimulation.StreamDataTypes.Eyes

Stream dat s očima simulovaného člověka.

Microsoft.PerceptionSimulation.StreamDataTypes.DisplayConfiguration

Stream dat s konfigurací zobrazení zařízení

Microsoft.PerceptionSimulation.StreamDataTypes.All

Hodnota sentinelu použitá k označení všech zaznamenaných datových typů.

Microsoft.PerceptionSimulation.ISimulationStreamSink

Objekt, který přijímá datové pakety ze streamu simulace.

public interface ISimulationStreamSink
{
    void OnPacketReceived(uint length, byte[] packet);
}

Microsoft.PerceptionSimulation.ISimulationStreamSink.OnPacketReceived(délka uint, bajt[] paket)

Přijme jeden paket, který je interně zadaný a verze.

Parametry

  • délka – délka paketu.
  • packet – data paketu.

Microsoft.PerceptionSimulation.ISimulationStreamSinkFactory

Objekt, který vytvoří ISimulationStreamSink.

public interface ISimulationStreamSinkFactory
{
    ISimulationStreamSink CreateSimulationStreamSink();
}

Microsoft.PerceptionSimulation.ISimulationStreamSinkFactory.CreateSimulationStreamSink()

Vytvoří jednu instanci ISimulationStreamSink.

Vrácená hodnota

Vytvořená jímka.