Наложение 3D Cube в Unity для SteamVR
Я пытаюсь наложить простой 3D-куб (в 3D-объекте Unity) на другое приложение для SteamVR, используя OpenVR. Для этого я применил следующий скрипт и настройки в Unity. Но он показывает Cube только в 2D. Я думаю, что что-то не так в настройке текстур.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.VR;
using Valve.VR;
public class Cubeoverlay : MonoBehaviour {
public GameObject Cube;
private RenderTexture renderTexture { get; set; }
private ulong OverlayHandle;
public Camera mainCamera;
private uint openvrid;
void Start()
{
OverlayHandle = Valve.VR.OpenVR.k_ulOverlayHandleInvalid;
HmdColor_t hmdColor_T = new HmdColor_t();
hmdColor_T.a = 1;
hmdColor_T.b = 1;
hmdColor_T.g = 1;
hmdColor_T.r = 1;
Debug.Log(gameObject.name);
Debug.Log(OverlayHandle.ToString());
OpenVR.Overlay.CreateOverlay(gameObject.name, gameObject.name, ref OverlayHandle);
OpenVR.Overlay.SetOverlayRenderModel(OverlayHandle, Cube.name, ref hmdColor_T);
OpenVR.Overlay.ShowOverlay(OverlayHandle);
RenderTexture renderTexture = new RenderTexture(1000, 1000, 1000);
mainCamera.targetTexture = renderTexture;
SteamVR_Camera Cam = SteamVR_Render.Top();
SteamVR_Utils.RigidTransform offset = new SteamVR_Utils.RigidTransform(transform);
offset.pos.x /= Cam.origin.localScale.x;
offset.pos.y /= Cam.origin.localScale.y;
offset.pos.z /= Cam.origin.localScale.z;
HmdMatrix34_t matrix = offset.ToHmdMatrix34();
OpenVR.Overlay.SetOverlayTransformTrackedDeviceRelative(OverlayHandle, OpenVR.k_unTrackedDeviceIndexInvalid, ref matrix);
Texture_t overlayTexture = new Texture_t();
overlayTexture.handle = renderTexture.GetNativeTexturePtr();
OpenVR.Overlay.SetOverlayTexture(OverlayHandle, ref overlayTexture);
}
}
CubeOverlayInspector
CanvasInspector
CameraInspector
CameraInspectorSecondtry