Skip to content

unity3d plugin to build custom cloud rendering clients using larkxr

Notifications You must be signed in to change notification settings

ParaverseTechnology/lark_xr_unity3d_client_plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Watchers

Forks

Packages

No packages published

Languages