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í
Nainstalujte emulátor HoloLens na vývojový počítač. Emulátor obsahuje knihovny, které používáte pro simulaci vnímání.
Vytvořte nový desktopový projekt v sadě Visual Studio C# (konzolový projekt funguje skvěle, abyste mohli začít).
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.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.
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.
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ů.
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.