Skip to content

About

unity3d plugin to build custom cloud rendering clients using larkxr

Resources

Stars

2 stars

Watchers

2 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

Repository files navigation

LarkXR Unity3D Client SDK


English 中文


About

SDK for muti device, zspace phone ar or headset, LarkXR cloudrendering Unity3D client.

Cloud app use OpenVR/OpenXR plugin.

SDK contain LarkXR restful api, streaming decode, pose upload.

SDK out left/right eye cloudrendering decoded texture2d.

Tested Device

  • [:heavy_check_mark:] Windows X64
  • [:heavy_check_mark:] Android Phone
  • [:heavy_check_mark:] Zspace (Win64)

Links:

Paraverse

LarkSR Doc

Experience

Running

QuickStart

  1. Import LarkXR SDK pacakge

  1. DemoScene

  1. Config SDK ID

Open DemoRender.cs, find line 38.

// Your SDK ID 
string sdkID = "Your SDK ID ";

if (!XRApi.InitSdkAuthorization(sdkID)) {
    int errCode = XRApi.GetLastError();
    Debug.LogError("Init failed " + errCode);
}
  1. Config with LarkXR Server address

With right config got running result.

Interface

XRManager

Mount XRManager script or call XRManager.Instance to auto mount and get XRManager singleton.

XRManager auto init.

Set SDK ID first.

// 初始化 SDK ID 
string sdkID = "Your SDK ID";

if (!XRApi.InitSdkAuthorization(sdkID)) {
    int errCode = XRApi.GetLastError();
    Debug.LogError("Init failed " + errCode);
}

Delegate

Delegate for connection state. Got remote texture.

onTexture2D,onTexture2DStereo Got remote texture. Left/Right or Both.

// Connection closed
XRManager.Instance.RenderManger.onClose += OnClose;
// Connection connected.
XRManager.Instance.RenderManger.onConnected += OnConnect;
// Left and right eye texture2d.
XRManager.Instance.RenderManger.onTexture2DStereo += OnTexture2DStrereo;
// Left and right eye with in one texture2d.
XRManager.Instance.RenderManger.onTexture2D += OnTexture2D;

Send tracked pose

Use XRApi.UpdateDevicePose to update device pose.

Use XRApi.SendDeivcePair to send device pose to cloud.

Should send tracked pose to cloud after connected.

void Update()
{
    UpdateCamera();
    // Send every frame.
    if (XRApi.IsConnected())
    {
        UpdateCloudPose();
    }
}
OpenVrPose openVrPose = new OpenVrPose(hmd.transform);
openVrPose.Position.y += LarkXR.Config.GetExtraHeight();
XRApi.UpdateDevicePose(XRApi.DeviceType.Device_Type_HMD, openVrPose.Position, openVrPose.Rotation);
XRApi.SendDeivcePair();

Cloud rendering use same coordinate system with OpenVr, See OpenVrPose turn Unity3D coordinate system to OpenVr coordinate system.

Config

// config render.
XRApi.RenderInfo renderInfo = XRApi.GetDefaultRenderInfo();
renderInfo.renderWidth = 1920;
renderInfo.renderHeight = 1080;
renderInfo.fps = 60;
XRApi.SetRenderInfo(renderInfo);

// config bitrate
XRApi.SetupBitrateKbps(50 * 1000);

// config output texture type
XRApi.SetUseMultiview(true);

setup server IP

// update android server address;
XRApi.SetServerAddr(Config.GetServerIp(), Config.GetLarkPort());

More: LarkXR/Scripts/UI/UIManager.cs

Server Restful API

XRManager auto send get task request, got form delegate.

// got applist
XRManager.Instance.TaskManager.onApplistSuccess += OnApplistSuccess;
// got applist failed.
XRManager.Instance.TaskManager.onApplistFailed += OnApplistFailed;

More LarkXR/Scripts/UI/UIManager.cs

About

unity3d plugin to build custom cloud rendering clients using larkxr

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages