다음을 통해 공유


인식 시뮬레이션

앱에 대한 자동화된 테스트를 빌드하시겠습니까? 테스트가 구성 요소 수준 단위 테스트를 넘어 앱 엔드 투 엔드를 실제로 실행하도록 하시겠습니까? 인식 시뮬레이션은 원하는 것입니다. Perception Simulation 라이브러리는 테스트를 자동화할 수 있도록 사용자 및 세계 입력 데이터를 앱에 보냅니다. 예를 들어 반복 가능한 특정 위치를 찾는 사람의 입력을 시뮬레이션한 다음 제스처 또는 모션 컨트롤러를 사용할 수 있습니다.

인식 시뮬레이션은 이와 같은 시뮬레이션된 입력을 실제 HoloLens, HoloLens 에뮬레이터(1세대), HoloLens 2 에뮬레이터 또는 Mixed Reality Portal이 설치된 PC로 보낼 수 있습니다. 인식 시뮬레이션은 Mixed Reality 디바이스에서 라이브 센서를 우회하고 시뮬레이션된 입력을 디바이스에서 실행되는 애플리케이션에 보냅니다. 애플리케이션은 항상 사용하는 것과 동일한 API를 통해 이러한 입력 이벤트를 수신하며 실제 센서를 사용한 실행과 인식 시뮬레이션 간의 차이를 알 수 없습니다. 인식 시뮬레이션은 HoloLens 에뮬레이터에서 시뮬레이션된 입력을 HoloLens Virtual Machine에 보내는 데 사용하는 것과 동일한 기술입니다.

코드에서 시뮬레이션 사용을 시작하려면 먼저 IPerceptionSimulationManager 개체를 만듭니다. 해당 개체에서 명령을 실행하여 머리 위치, 손 위치 및 제스처를 포함하여 시뮬레이션된 "human"의 속성을 제어할 수 있습니다. 모션 컨트롤러를 사용하도록 설정하고 조작할 수도 있습니다.

인식 시뮬레이션을 위한 Visual Studio 프로젝트 설정

  1. 개발 PC에 HoloLens 에뮬레이터 를 설치합니다. 에뮬레이터에는 인식 시뮬레이션에 사용하는 라이브러리가 포함됩니다.

  2. 새 Visual Studio C# 데스크톱 프로젝트를 만듭니다(콘솔 프로젝트는 시작하기에 적합합니다).

  3. 프로젝트에 다음 이진 파일을 참조로 추가합니다(Project-Add-Reference>>...). HoloLens 2 에뮬레이터의 %ProgramFiles(x86)%\Microsoft XDE\10.0.18362.0과 같은 %ProgramFiles(x86)%\Microsoft XDE\(버전)에서 찾을 수 있습니다.

    참고 항목

    이진 파일은 HoloLens 2 에뮬레이터의 일부이지만 데스크톱의 Windows Mixed Reality에서도 작동합니다.)

    a. PerceptionSimulationManager.Interop.dll - 인식 시뮬레이션에 대한 관리되는 C# 래퍼입니다.
    b. PerceptionSimulationRest.dll - HoloLens 또는 에뮬레이터에 대한 웹 소켓 통신 채널을 설정하기 위한 라이브러리입니다.
    c. SimulationStream.Interop.dll - 시뮬레이션을 위한 공유 형식입니다.

  4. 프로젝트에 구현 이진 PerceptionSimulationManager.dll 추가

    a. 먼저 프로젝트에 이진 파일로 추가합니다(Project-Add-Existing>> Item...). 프로젝트 원본 폴더에 복사하지 않도록 링크로 저장합니다.
    프로젝트에 링크로 PerceptionSimulationManager.dll 추가

    b. 그런 다음 빌드할 때 출력 폴더에 복사되는지 확인합니다. 이진 파일의 속성 시트에 있습니다.
    출력 디렉터리에 복사할 PerceptionSimulationManager.dll 표시

  5. 활성 솔루션 플랫폼을 x64로 설정합니다. (아직 없는 경우 Configuration Manager를 사용하여 x64에 대한 플랫폼 항목을 만듭니다.)

IPerceptionSimulation Manager 개체 만들기

시뮬레이션을 제어하기 위해 IPerceptionSimulationManager 개체에서 검색된 개체에 대한 업데이트를 실행합니다. 첫 번째 단계는 해당 개체를 가져와서 대상 디바이스 또는 에뮬레이터에 연결하는 것입니다. 도구 모음에서 디바이스 포털 단추를 클릭하여 에뮬레이터의 IP 주소를 가져올 수 있습니다.

장치 포털 열기 아이콘디바이스 포털 열기: 에뮬레이터에서 HoloLens OS용 Windows 디바이스 포털을 엽니다. Windows Mixed Reality의 경우 "업데이트 및 보안" 아래의 설정 앱에서 검색한 다음 " 디바이스 포털 사용"의 "Connect using:" 섹션에서 "개발자용"으로 검색할 수 있습니다. IP 주소와 포트를 모두 기록해 둡니다.

먼저 RestSimulationStreamSink.Create를 호출하여 RestSimulationStreamSink 개체를 가져옵니다. http 연결을 제어할 대상 디바이스 또는 에뮬레이터입니다. 명령은 디바이스 또는 에뮬레이터에서 실행되는 Windows 디바이스 포털에 전달되고 처리됩니다. 개체를 만드는 데 필요한 네 가지 매개 변수는 다음과 같습니다.

  • Uri uri - 대상 디바이스의 IP 주소(예: "https://123.123.123.123" 또는 "https://123.123.123.123:50080")
  • System.Net.NetworkCredential 자격 증명 - 대상 디바이스 또는 에뮬레이터에서 Windows 디바이스 포털 에 연결하기 위한 사용자 이름/암호입니다. 로컬 주소(예: 168.)를 통해 에뮬레이터에 연결하는 경우 *) 동일한 PC에서 모든 자격 증명이 허용됩니다.
  • bool normal - 정상 우선 순위의 경우 True, 낮은 우선 순위의 경우 false입니다. 일반적으로 테스트 시나리오에 대해 이를 true설정하여 테스트를 제어할 수 있도록 합니다. 에뮬레이터 및 Windows Mixed Reality 시뮬레이션은 우선 순위가 낮은 연결을 사용합니다. 테스트에서 우선 순위가 낮은 연결도 사용하는 경우 가장 최근에 설정된 연결이 제어됩니다.
  • System.Threading.CancellationToken 토큰 - 비동기 작업을 취소하는 토큰입니다.

둘째, IPerceptionSimulationManager를 만듭니다. 시뮬레이션을 제어하는 데 사용하는 개체입니다. 비동기 메서드에서도 이 작업을 수행해야 합니다.

시뮬레이션된 휴먼 제어

IPerceptionSimulationManager에는 ISimulatedHuman 개체를 반환하는 Human 속성이 있습니다. 시뮬레이션된 인간을 제어하려면 이 개체에 대한 작업을 수행합니다. 예시:

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

기본 샘플 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();
        }
    }
}

확장 샘플 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);
            }
        }
    }
}

6-DOF 컨트롤러에 대한 참고 사항

시뮬레이션된 6-DOF 컨트롤러의 메서드에 대한 속성을 호출하기 전에 컨트롤러를 활성화해야 합니다. 이렇게 하지 않으면 예외가 발생합니다. Windows 10 2019년 5월 업데이트 시작하여 ISimulatedSixDofController 개체의 Status 속성을 SimulatedSixDofControllerStatus.Active로 설정하여 시뮬레이션된 6-DOF 컨트롤러를 설치하고 활성화할 수 있습니다. Windows 10 2018년 10월 업데이트 및 이전 버전에서는 먼저 \Windows\System32 폴더에 있는 PerceptionSimulationDevice 도구를 호출하여 시뮬레이션된 6-DOF 컨트롤러를 별도로 설치해야 합니다. 이 도구의 사용법은 다음과 같습니다.

    PerceptionSimulationDevice.exe <action> 6dof <instance>

예를 들어

    PerceptionSimulationDevice.exe i 6dof 1

지원되는 작업은 다음과 같습니다.

  • i = install
  • q = 쿼리
  • r = remove

지원되는 인스턴스는 다음과 같습니다.

  • 1 = 왼쪽 6-DOF 컨트롤러
  • 2 = 오른쪽 6-DOF 컨트롤러

프로세스의 종료 코드는 성공(0 반환 값) 또는 실패(0이 아닌 반환 값)를 나타냅니다. 'q' 작업을 사용하여 컨트롤러가 설치되어 있는지 여부를 쿼리하는 경우 컨트롤러가 아직 설치되지 않은 경우 반환 값은 0이 되고 컨트롤러가 설치되어 있으면 반환 값은 0이 됩니다.

Windows 10 2018년 10월 업데이트 또는 이전 버전에서 컨트롤러를 제거할 때 먼저 API를 통해 상태를 Off로 설정한 다음 PerceptionSimulationDevice 도구를 호출합니다.

이 도구는 관리자 권한으로 실행해야 합니다.

API 참조

Microsoft.PerceptionSimulation.SimulatedDeviceType

시뮬레이션된 디바이스 유형에 대해 설명합니다.

public enum SimulatedDeviceType
{
    Reference = 0
}

Microsoft.PerceptionSimulation.SimulatedDeviceType.Reference

가상 참조 디바이스, PerceptionSimulationManager의 기본값

Microsoft.PerceptionSimulation.HeadTrackerMode

헤드 트래커 모드를 설명합니다.

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

Microsoft.PerceptionSimulation.HeadTrackerMode.Default

기본 헤드 추적. 즉, 시스템이 런타임 조건에 따라 최상의 헤드 추적 모드를 선택할 수 있습니다.

Microsoft.PerceptionSimulation.HeadTrackerMode.Orientation

방향만 머리 추적 즉, 추적된 위치가 신뢰할 수 없으며 헤드 위치에 종속된 일부 기능을 사용할 수 없습니다.

Microsoft.PerceptionSimulation.HeadTrackerMode.Position

위치 헤드 추적. 즉, 추적된 헤드 위치와 방향이 모두 신뢰할 수 있습니다.

Microsoft.PerceptionSimulation.SimulatedGesture

시뮬레이션된 제스처에 대해 설명합니다.

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

Microsoft.PerceptionSimulation.SimulatedGesture.None

제스처를 나타내지 않는 데 사용되는 sentinel 값입니다.

Microsoft.PerceptionSimulation.SimulatedGesture.FingerPressed

손가락으로 제스처를 누릅니다.

Microsoft.PerceptionSimulation.SimulatedGesture.FingerReleased

손가락으로 제스처를 해제했습니다.

Microsoft.PerceptionSimulation.SimulatedGesture.Home

홈/시스템 제스처입니다.

Microsoft.PerceptionSimulation.SimulatedGesture.Max

유효한 최대 제스처입니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus

시뮬레이션된 6-DOF 컨트롤러의 가능한 상태입니다.

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

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.Off

6-DOF 컨트롤러가 꺼져 있습니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.Active

6-DOF 컨트롤러가 켜지고 추적됩니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerStatus.TrackingLost

6-DOF 컨트롤러가 켜져 있지만 추적할 수 없습니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton

시뮬레이션된 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

단추 없음을 나타내는 데 사용되는 sentinel 값입니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Home

홈 단추를 누릅니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Menu

메뉴 단추를 누릅니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Grip

그립 단추를 누릅니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.TouchpadPress

터치 패드를 눌렀습니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Select

선택 단추를 누릅니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.TouchpadTouch

터치 패드가 터치됩니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Thumbstick

엄지스틱을 눌렀습니다.

Microsoft.PerceptionSimulation.SimulatedSixDofControllerButton.Max

유효한 최대 단추입니다.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState

시뮬레이션된 눈의 보정 상태입니다.

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

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Unavailable

눈 보정을 사용할 수 없습니다.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Ready

눈이 보정되었습니다. 기본값입니다.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.Configuring

눈이 보정되고 있습니다.

Microsoft.PerceptionSimulation.SimulatedEyesCalibrationState.UserCalibrationNeeded

눈을 보정해야 합니다.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy

손의 관절의 추적 정확도입니다.

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

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Unavailable

관절은 추적되지 않습니다.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Approximate

조인트 위치가 유추됩니다.

Microsoft.PerceptionSimulation.SimulatedHandJointTrackingAccuracy.Visible

관절은 완전히 추적됩니다.

Microsoft.PerceptionSimulation.SimulatedHandPose

손의 관절의 추적 정확도입니다.

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

Microsoft.PerceptionSimulation.SimulatedHandPose.Closed

손의 손가락 관절은 닫힌 포즈를 반영하도록 구성됩니다.

Microsoft.PerceptionSimulation.SimulatedHandPose.Open

손의 손가락 관절은 열린 포즈를 반영하도록 구성됩니다.

Microsoft.PerceptionSimulation.SimulatedHandPose.Point

손의 손가락 관절은 포인팅 포즈를 반영하도록 구성됩니다.

Microsoft.PerceptionSimulation.SimulatedHandPose.Pinch

손의 손가락 관절은 손가락 모으기 포즈를 반영하도록 구성됩니다.

Microsoft.PerceptionSimulation.SimulatedHandPose.Max

SimulatedHandPose의 유효한 최대값입니다.

Microsoft.PerceptionSimulation.PlaybackState

재생 상태를 설명합니다.

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

Microsoft.PerceptionSimulation.PlaybackState.Stopped

녹음/녹화가 현재 중지되어 재생이 준비되었습니다.

Microsoft.PerceptionSimulation.PlaybackState.Play

녹음이 현재 재생되고 있습니다.

Microsoft.PerceptionSimulation.PlaybackState.Paused

녹음/녹화가 현재 일시 중지되었습니다.

Microsoft.PerceptionSimulation.PlaybackState.End

녹음이 끝났습니다.

Microsoft.PerceptionSimulation.Vector3

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

벡터의 X 구성 요소입니다.

Microsoft.PerceptionSimulation.Vector3.Y

벡터의 Y 구성 요소입니다.

Microsoft.PerceptionSimulation.Vector3.Z

벡터의 Z 구성 요소입니다.

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

새 Vector3을 생성합니다.

매개 변수

  • x - 벡터의 x 구성 요소입니다.
  • y - 벡터의 y 구성 요소입니다.
  • z - 벡터의 z 구성 요소입니다.

Microsoft.PerceptionSimulation.Rotation3

세 가지 구성 요소 회전에 대해 설명합니다.

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

Microsoft.PerceptionSimulation.Rotation3.Pitch

X축을 중심으로 회전의 피치 구성 요소입니다.

Microsoft.PerceptionSimulation.Rotation3.Yaw

Y축 바로 주위에 있는 회전의 Yaw 구성 요소입니다.

Microsoft.PerceptionSimulation.Rotation3.Roll

Z축 바로 주위에 있는 회전의 Roll 구성 요소입니다.

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

새 Rotation3을 생성합니다.

매개 변수

  • pitch - 회전의 피치 구성 요소입니다.
  • yaw - 회전의 요 구성 요소입니다.
  • roll - 회전의 롤 구성 요소입니다.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration

시뮬레이션된 손의 조인트 구성에 대해 설명합니다.

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

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.Position

조인트 위치입니다.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.Rotation

조인트 회전입니다.

Microsoft.PerceptionSimulation.SimulatedHandJointConfiguration.TrackingAccuracy

조인트 추적 정확도입니다.

Microsoft.PerceptionSimulation.Frustum

일반적으로 카메라에서 사용하는 보기 frustum에 대해 설명합니다.

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

Microsoft.PerceptionSimulation.Frustum.Near

frustum에 포함된 최소 거리입니다.

Microsoft.PerceptionSimulation.Frustum.Far

frustum에 포함된 최대 거리입니다.

Microsoft.PerceptionSimulation.Frustum.FieldOfView

frustum의 가로 보기 필드(PI보다 작음)입니다.

Microsoft.PerceptionSimulation.Frustum.AspectRatio

가로 보기 필드와 세로 보기 필드의 비율입니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration

시뮬레이션된 헤드셋 디스플레이의 구성을 설명합니다.

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

스테레오 렌더링을 위해 머리 가운데에서 왼쪽 눈으로 변환합니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.LeftEyeRotation

스테레오 렌더링을 위해 왼쪽 눈의 회전입니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.RightEyePosition

스테레오 렌더링을 위해 머리 가운데에서 오른쪽 눈으로 변환합니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.RightEyeRotation

스테레오 렌더링을 위해 오른쪽 눈의 회전입니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.Ipd

스테레오 렌더링을 위해 시스템에서 보고한 Ipd 값입니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.ApplyEyeTransforms

왼쪽 및 오른쪽 눈 변환에 제공된 값을 유효한 것으로 간주하고 실행 중인 시스템에 적용해야 하는지 여부입니다.

Microsoft.PerceptionSimulation.SimulatedDisplayConfiguration.ApplyIpd

Ipd에 제공된 값을 유효한 것으로 간주하고 실행 중인 시스템에 적용해야 하는지 여부입니다.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager

디바이스를 제어하는 데 사용되는 패킷을 생성하기 위한 루트입니다.

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

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Device

시뮬레이션된 인간과 시뮬레이션된 세계를 해석하는 시뮬레이션된 디바이스 개체를 검색합니다.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Human

시뮬레이션된 인간을 제어하는 개체를 검색합니다.

Microsoft.PerceptionSimulation.IPerceptionSimulationManager.Reset

시뮬레이션을 기본 상태로 다시 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedDevice

시뮬레이션된 세계와 시뮬레이션된 인간을 해석하는 디바이스를 설명하는 인터페이스

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

Microsoft.PerceptionSimulation.ISimulatedDevice.HeadTracker

시뮬레이션된 디바이스에서 헤드 트래커를 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedDevice.HandTracker

시뮬레이션된 디바이스에서 손 추적기를 검색합니다.

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

제공된 디바이스 유형과 일치하도록 시뮬레이션된 디바이스의 속성을 설정합니다.

매개 변수

  • 형식 - 시뮬레이션된 디바이스의 새 형식

Microsoft.PerceptionSimulation.ISimulatedDevice2

ISimulatedDevice를 ISimulatedDevice2로 캐스팅하여 추가 속성을 사용할 수 있습니다.

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

};

Microsoft.PerceptionSimulation.ISimulatedDevice2.IsUserPresent

시뮬레이션된 사람이 헤드셋을 적극적으로 착용하고 있는지 여부를 검색하거나 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedDevice2.DisplayConfiguration

시뮬레이션된 디스플레이의 속성을 검색하거나 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHeadTracker

시뮬레이션된 사람의 머리를 추적하는 시뮬레이션된 디바이스의 부분을 설명하는 인터페이스입니다.

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

Microsoft.PerceptionSimulation.ISimulatedHeadTracker.HeadTrackerMode

현재 헤드 트래커 모드를 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHandTracker

시뮬레이션된 사람의 손을 추적하는 시뮬레이션된 디바이스의 부분을 설명하는 인터페이스

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

세계와 관련된 노드의 위치를 미터로 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Position

머리 가운데를 기준으로 시뮬레이션된 손 추적기의 위치를 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Pitch

시뮬레이션된 손 추적기의 아래쪽 피치를 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.FrustumIgnored

시뮬레이션된 손 추적기의 frustum이 무시되는지 여부를 검색하고 설정합니다. 무시하면 양손이 항상 표시됩니다. 무시되지 않는 경우(기본값) 손은 손 추적기의 frustum 내에 있는 경우에만 표시됩니다.

Microsoft.PerceptionSimulation.ISimulatedHandTracker.Frustum

시뮬레이션된 손 추적기에서 손을 볼 수 있는지 여부를 확인하는 데 사용되는 frustum 속성을 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman

시뮬레이션된 인간을 제어하기 위한 최상위 인터페이스입니다.

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.ISimulatedHuman.WorldPosition

세계와 관련된 노드의 위치를 미터로 검색하고 설정합니다. 위치는 인간의 발 중앙에 있는 지점에 해당합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.Direction

세계에서 시뮬레이션된 인간의 얼굴을 검색하고 방향을 설정합니다. 음수 Z 축 아래로 0 라디안이 향합니다. 양수 라디안은 Y축을 기준으로 시계 방향으로 회전합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.Height

시뮬레이션된 사람의 높이를 미터 단위로 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.LeftHand

시뮬레이션된 사람의 왼손을 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.RightHand

시뮬레이션된 사람의 오른손을 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.Head

시뮬레이션된 사람의 헤드를 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.Move(Microsoft.PerceptionSimulation.Vector3)

시뮬레이션된 인간을 현재 위치(미터)로 이동합니다.

매개 변수

  • translation - 현재 위치를 기준으로 이동할 번역입니다.

Microsoft.PerceptionSimulation.ISimulatedHuman.Rotate(System.Single)

Y축에 대해 시계 방향으로 현재 방향을 기준으로 시뮬레이션된 인간을 회전합니다.

매개 변수

  • radians - Y축을 중심으로 회전할 양입니다.

Microsoft.PerceptionSimulation.ISimulatedHuman2

ISimulatedHuman을 ISimulatedHuman2로 캐스팅하여 추가 속성을 사용할 수 있습니다.

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

Microsoft.PerceptionSimulation.ISimulatedHuman2.LeftController

왼쪽 6-DOF 컨트롤러를 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHuman2.RightController

올바른 6-DOF 컨트롤러를 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHand

시뮬레이션된 사람의 손을 설명하는 인터페이스

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

세계와 관련된 노드의 위치를 미터로 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHand.Position

인간을 기준으로 시뮬레이션된 손의 위치를 미터 단위로 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHand.Activated

핸드가 현재 활성화되었는지 여부를 검색하고 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHand.Visible

핸드가 현재 SimulatedDevice에 표시되는지 여부를 검색합니다(즉, HandTracker에서 검색할 위치에 있는지 여부).

Microsoft.PerceptionSimulation.ISimulatedHand.EnsureVisible

SimulatedDevice에 표시되도록 손을 이동합니다.

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

시뮬레이션된 손의 위치를 현재 위치를 기준으로 미터 단위로 이동합니다.

매개 변수

  • translation - 시뮬레이션된 손을 번역할 양입니다.

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

시뮬레이션된 손을 사용하여 제스처를 수행합니다. 손을 사용할 수 있는 경우에만 시스템에서 검색됩니다.

매개 변수

  • 제스처 - 수행할 제스처입니다.

Microsoft.PerceptionSimulation.ISimulatedHand2

ISimulatedHand를 ISimulatedHand2로 캐스팅하여 추가 속성을 사용할 수 있습니다.

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

Microsoft.PerceptionSimulation.ISimulatedHand2.Orientation

시뮬레이션된 손의 회전을 검색하거나 설정합니다. 양수 라디안은 축을 따라 보면 시계 방향으로 회전합니다.

Microsoft.PerceptionSimulation.ISimulatedHand3

ISimulatedHand를 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

지정된 조인트에 대한 조인트 구성을 가져옵니다.

Microsoft.PerceptionSimulation.ISimulatedHand3.SetJointConfiguration

지정된 조인트에 대한 조인트 구성을 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedHand3.SetHandPose

손을 애니메이션 효과를 주는 선택적 플래그가 있는 알려진 포즈로 설정합니다. 참고: 애니메이션 효과를 주면 관절이 최종 공동 구성을 즉시 반영하지는 않습니다.

Microsoft.PerceptionSimulation.ISimulatedHead

시뮬레이션된 사람의 머리를 설명하는 인터페이스입니다.

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

Microsoft.PerceptionSimulation.ISimulatedHead.WorldPosition

세계와 관련된 노드의 위치를 미터로 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedHead.Rotation

시뮬레이션된 헤드의 회전을 검색합니다. 양수 라디안은 축을 따라 보면 시계 방향으로 회전합니다.

Microsoft.PerceptionSimulation.ISimulatedHead.Diameter

시뮬레이션된 헤드의 지름을 검색합니다. 이 값은 헤드의 중심(회전 지점)을 결정하는 데 사용됩니다.

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

현재 회전을 기준으로 시뮬레이션된 헤드를 회전합니다. 양수 라디안은 축을 따라 보면 시계 방향으로 회전합니다.

매개 변수

  • rotation - 회전할 양입니다.

Microsoft.PerceptionSimulation.ISimulatedHead2

ISimulatedHead를 ISimulatedHead2로 캐스팅하여 추가 속성을 사용할 수 있습니다.

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

Microsoft.PerceptionSimulation.ISimulatedHead2.Eyes

시뮬레이션된 사람의 눈을 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController

시뮬레이션된 사용자와 연결된 6-DOF 컨트롤러를 설명하는 인터페이스입니다.

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

세계와 관련된 노드의 위치를 미터로 검색합니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Status

컨트롤러의 현재 상태를 검색하거나 설정합니다. 컨트롤러 상태는 이동, 회전 또는 누름 단추 호출이 성공하기 전에 Off 이외의 값으로 설정해야 합니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Position

인간을 기준으로 시뮬레이션된 컨트롤러의 위치를 미터 단위로 검색하거나 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.Orientation

시뮬레이션된 컨트롤러의 방향을 검색하거나 설정합니다.

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

현재 위치를 기준으로 시뮬레이션된 컨트롤러의 위치를 미터 단위로 이동합니다.

매개 변수

  • translation - 시뮬레이션된 컨트롤러를 번역할 양입니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.PressButton(SimulatedSixDofControllerButton)

시뮬레이션된 컨트롤러에서 단추를 누릅니다. 컨트롤러를 사용하는 경우에만 시스템에서 검색됩니다.

매개 변수

  • 단추 - 누를 단추입니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController.ReleaseButton(SimulatedSixDofControllerButton)

시뮬레이션된 컨트롤러에서 단추를 놓습니다. 컨트롤러를 사용하는 경우에만 시스템에서 검색됩니다.

매개 변수

  • 단추 - 해제할 단추입니다.

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

시뮬레이션된 컨트롤러의 터치 패드에서 시뮬레이션된 손가락의 위치를 가져옵니다.

매개 변수

  • x - 손가락의 가로 위치입니다.
  • y - 손가락의 세로 위치입니다.

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

시뮬레이션된 컨트롤러의 터치 패드에서 시뮬레이션된 손가락의 위치를 설정합니다.

매개 변수

  • x - 손가락의 가로 위치입니다.
  • y - 손가락의 세로 위치입니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController2

ISimulatedSixDofController를 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)

시뮬레이션된 컨트롤러에서 시뮬레이션된 엄지스틱의 위치를 가져옵니다.

매개 변수

  • x - 엄지스틱의 가로 위치입니다.
  • y - 엄지스틱의 세로 위치입니다.

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

시뮬레이션된 컨트롤러에서 시뮬레이션된 엄지스틱의 위치를 설정합니다.

매개 변수

  • x - 엄지스틱의 가로 위치입니다.
  • y - 엄지스틱의 세로 위치입니다.

Microsoft.PerceptionSimulation.ISimulatedSixDofController2.BatteryLevel

시뮬레이션된 컨트롤러의 배터리 수준을 검색하거나 설정합니다. 값은 0.0보다 크고 100.0보다 작거나 같아야 합니다.

Microsoft.PerceptionSimulation.ISimulatedEyes

시뮬레이션된 사람의 눈을 설명하는 인터페이스입니다.

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

Microsoft.PerceptionSimulation.ISimulatedEyes.Rotation

시뮬레이션된 눈의 회전을 검색합니다. 양수 라디안은 축을 따라 보면 시계 방향으로 회전합니다.

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

현재 회전을 기준으로 시뮬레이션된 눈을 회전합니다. 양수 라디안은 축을 따라 보면 시계 방향으로 회전합니다.

매개 변수

  • rotation - 회전할 양입니다.

Microsoft.PerceptionSimulation.ISimulatedEyes.CalibrationState

시뮬레이션된 눈의 보정 상태를 검색하거나 설정합니다.

Microsoft.PerceptionSimulation.ISimulatedEyes.WorldPosition

세계와 관련된 노드의 위치를 미터로 검색합니다.

Microsoft.PerceptionSimulation.ISimulationRecording

재생을 위해 로드된 단일 기록과 상호 작용하기 위한 인터페이스입니다.

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

Microsoft.PerceptionSimulation.ISimulationRecording.DataTypes

기록의 데이터 형식 목록을 검색합니다.

Microsoft.PerceptionSimulation.ISimulationRecording.State

기록의 현재 상태를 검색합니다.

Microsoft.PerceptionSimulation.ISimulationRecording.Play

재생을 시작합니다. 녹화가 일시 중지되면 일시 중지된 위치에서 재생이 다시 시작됩니다. 중지되면 재생이 시작됩니다. 이미 재생 중인 경우 이 호출은 무시됩니다.

Microsoft.PerceptionSimulation.ISimulationRecording.Pause

현재 위치에서 재생을 일시 중지합니다. 녹음이 중지되면 호출이 무시됩니다.

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

기록을 지정된 시간(처음부터 100나노초 간격)으로 찾고 해당 위치에서 일시 중지합니다. 시간이 기록의 끝을 벗어나면 마지막 프레임에서 일시 중지됩니다.

매개 변수

  • 틱 - 검색할 시간입니다.

Microsoft.PerceptionSimulation.ISimulationRecording.Stop

재생을 중지하고 위치를 시작 부분으로 다시 설정합니다.

Microsoft.PerceptionSimulation.ISimulationRecordingCallback

재생 중에 상태 변경 내용을 수신하기 위한 인터페이스입니다.

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

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

ISimulationRecording의 재생 상태가 변경될 때 호출됩니다.

매개 변수

  • newState - 기록의 새 상태입니다.

Microsoft.PerceptionSimulation.PerceptionSimulationManager

Perception Simulation 개체를 만들기 위한 루트 개체입니다.

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)

시뮬레이션된 패킷을 생성하고 제공된 싱크에 배달하기 위한 개체를 만듭니다.

매개 변수

  • sink - 생성된 모든 패킷을 수신할 싱크입니다.

반환 값

만든 관리자입니다.

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

지정된 경로의 파일에 수신된 모든 패킷을 저장하는 싱크를 만듭니다.

매개 변수

  • path - 만들 파일의 경로입니다.

반환 값

만든 싱크입니다.

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

지정된 파일에서 녹음/녹화를 로드합니다.

매개 변수

  • path - 로드할 파일의 경로입니다.
  • 팩터리 - 필요할 때 ISimulationStreamSink를 만들기 위해 기록에서 사용하는 팩터리입니다.

반환 값

로드된 기록입니다.

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

지정된 파일에서 녹음/녹화를 로드합니다.

매개 변수

  • path - 로드할 파일의 경로입니다.
  • 팩터리 - 필요할 때 ISimulationStreamSink를 만들기 위해 기록에서 사용하는 팩터리입니다.
  • 콜백 - 녹음/녹화 상태를 다시 채점하는 업데이트를 수신하는 콜백입니다.

반환 값

로드된 기록입니다.

Microsoft.PerceptionSimulation.StreamDataTypes

다양한 유형의 스트림 데이터에 대해 설명합니다.

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

스트림 데이터 형식을 나타내지 않는 데 사용되는 sentinel 값입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.Head

머리의 위치 및 방향에 대한 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.Hands

손의 위치 및 제스처에 대한 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.SpatialMapping

환경의 공간 매핑을 위한 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.Calibration

디바이스 보정을 위한 데이터 스트림입니다. 보정 패킷은 원격 모드의 시스템에서만 허용됩니다.

Microsoft.PerceptionSimulation.StreamDataTypes.Environment

디바이스 환경에 대한 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.SixDofControllers

모션 컨트롤러에 대한 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.Eyes

시뮬레이션된 사람의 눈을 가진 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.DisplayConfiguration

디바이스의 표시 구성이 포함된 데이터 스트림입니다.

Microsoft.PerceptionSimulation.StreamDataTypes.All

기록된 모든 데이터 형식을 나타내는 데 사용되는 sentinel 값입니다.

Microsoft.PerceptionSimulation.ISimulationStreamSink

시뮬레이션 스트림에서 데이터 패킷을 수신하는 개체입니다.

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

Microsoft.PerceptionSimulation.ISimulationStreamSink.OnPacketReceived(uint length, byte[] packet)

내부적으로 형식화되고 버전이 지정된 단일 패킷을 받습니다.

매개 변수

  • length - 패킷의 길이입니다.
  • packet - 패킷의 데이터입니다.

Microsoft.PerceptionSimulation.ISimulationStreamSinkFactory

ISimulationStreamSink를 만드는 개체입니다.

public interface ISimulationStreamSinkFactory
{
    ISimulationStreamSink CreateSimulationStreamSink();
}

Microsoft.PerceptionSimulation.ISimulationStreamSinkFactory.CreateSimulationStreamSink()

ISimulationStreamSink의 단일 인스턴스를 만듭니다.

반환 값

만든 싱크입니다.