Files
VR-WuKong/Packages/PICO Unity Integration SDK-3.3.2-20251111/Enterprise/Scripts/Struct/RGBCameraStruct.cs
2025-11-13 17:40:28 +08:00

171 lines
5.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Runtime.InteropServices;
using Unity.XR.PXR;
using UnityEngine;
namespace Unity.XR.PICO.TOBSupport
{
// pico slam results
[StructLayout(LayoutKind.Sequential)]
public struct SixDof
{
public Int64 timestamp; // nanoseconds
public double x; // position X
public double y; // position Y
public double z; // position Z
public double rw; // rotation W
public double rx; // rotation X
public double ry; // rotation Y
public double rz; // rotation Z
public byte type; //1:6DOF 0:3DOF
public byte confidence; //1:good 0:bad
public PoseErrorType error;
public double plane_height;
public byte plane_status;
public byte relocation_status;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 24)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct AlgoResult
{
public SixDof pose;
public SixDof relocation_pose;
public double vx, vy, vz; // linear velocity
public double ax, ay, az; // linear acceleration
public double wx, wy, wz; // angular velocity
public double w_ax, w_ay, w_az; // angular acceleration
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct FrameItem
{
public byte camera_id;
public UInt32 width; // width
public UInt32 height; // height
public UInt32 format; // format - rgb24
public UInt32 exposure_duration; // exposure duration:ns
public UInt64 timestamp; // start of exposure time:ns (BOOTTIME)
public UInt64 qtimer_timestamp; // nanoseconds in qtimer
public UInt64 framenumber; // frame number
public UInt32 datasize; // datasize
public IntPtr data; // image data.
}
[StructLayout(LayoutKind.Sequential)]
public struct FrameItemExt
{
public FrameItem frame;
public bool is_rgb;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public double[] rgb_tsw_matrix;
public bool is_anti_distortion;
public AlgoResult six_dof_pose;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]
public byte[] reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct Frame
{
public UInt32 width; // width
public UInt32 height; // height
public UInt64 timestamp; // start of exposure time:ns (BOOTTIME)
public UInt32 datasize; // datasize
public IntPtr data; // image data
public UnityEngine.Pose pose; // The head Pose at the time of image production.Right-handed coordinate system: X right, Y up, Z in
public int status; // sensor status(1:good 0:bad)
}
[StructLayout(LayoutKind.Sequential)]
public struct SensorState
{
public UnityEngine.Pose pose; // Predict the head Pose at the screen up time.Right-handed coordinate system: X right, Y up, Z in
public int status; // sensor status(1:good 0:bad)
}
[StructLayout(LayoutKind.Sequential)]
public struct RGBCameraParams
{
// Intrinsics
public double fx;
public double fy;
public double cx;
public double cy;
// Extrinsics
public double x;
public double y;
public double z;
public double rw;
public double rx;
public double ry;
public double rz;
}
public struct RGBCameraParamsNew
{
// Intrinsics
public double fx;
public double fy;
public double cx;
public double cy;
// Extrinsics
public Vector3 l_pos;
public Quaternion l_rot;
public Vector3 r_pos;
public Quaternion r_rot;
public void identity()
{
this.fx = 0;
this.fy = 0;
this.cx = 0;
this.cy = 0;
l_pos = Vector3.zero;
l_rot = Quaternion.identity;
r_pos =Vector3.zero;
r_rot = Quaternion.identity;
}
}
public enum PXRCaptureRenderMode
{
PXRCapture_RenderMode_LEFT, //左camera数据
PXRCapture_RenderMode_RIGHT, //右camera数据
PXRCapture_RenderMode_3D, //左右camera拼接成一张图
PXRCapture_RenderMode_Interlace, //左右camera数据依次发送时间戳间隔相差1
}
[StructLayout(LayoutKind.Sequential)]
public struct PXRFrame
{
public UInt32 width; // width
public UInt32 height; // height
public UInt32 size;
public IntPtr data; // image data
public PxrSensorState2 sensorState; // Sensor data
public long time; //
}
// [StructLayout(LayoutKind.Sequential)]
// public struct CameraFrame
// {
// public UInt32 width; // width
// public UInt32 height; // height
// public UInt32 size;
// public IntPtr data; // image data
// public UInt64 time; //
// }
[StructLayout(LayoutKind.Sequential)]
public struct KeyValuePair
{
[MarshalAs(UnmanagedType.LPStr)]
public string Key;
[MarshalAs(UnmanagedType.LPStr)]
public string Value;
}
}