Qualcomm_Snapdragon_VR_SDK SvrEye脚本简介(5)

在SvrEye中存在一个变量imageCamera表示当前eye物体上的Camera属性:

  [Tooltip("Image display transform")]
    public Camera imageCamera;

在脚本的Awake()方法中:

 void Awake()
    {
        Instances.Add(this);
        AcquireComponents();
        InitializeCoords();
    }

AcquireComponents方法的作用就是为imageCamera变量进行赋值,具体实现如下:

void AcquireComponents()
    {
        if (imageCamera == null) imageCamera = gameObject.GetComponent<Camera>();
        Debug.Assert(imageCamera != null, "ImageCamera object required");
        mainCameras = imageCamera.GetComponentsInChildren<Camera>();
    }

SvrEye脚本依赖Camera属性,因此初始化的时候需要完成imageCamera变量的赋值,具体实现是在脚本物体上获取Camera的属性值,通过该变量,用户可以方便的获取到当前的SvrEye物体上的Camera属性。

Awake中另一个方法是InitializeCoords,其具体实现如下:

 void InitializeCoords()
    {
        clipLowerLeft.Set(-1, -1, 0, 1);
        clipUpperLeft.Set(-1, 1, 0, 1);
        clipUpperRight.Set(1, 1, 0, 1);
        clipLowerRight.Set(1, -1, 0, 1);
    }

代码的逻辑比较简单,完成的只是对四个变量的赋值工作。

  [Tooltip("Image display region (camera clip space)")]
    public Vector4 clipLowerLeft = new Vector4(-1, -1, 0, 1);
    public Vector4 clipUpperLeft = new Vector4(-1, 1, 0, 1);
    public Vector4 clipUpperRight = new Vector4(1, 1, 0, 1);
    public Vector4 clipLowerRight = new Vector4(1, -1, 0, 1);

这四个变量保存的是Camera视窗的四个顶点坐标。在SvrManager中执行SubmitFrame方法时会将这四个坐标传入到底层SDK的接口中,代码逻辑如下:

 float[] lowerLeft = { eye.clipLowerLeft.x, eye.clipLowerLeft.y, eye.clipLowerLeft.z, eye.clipLowerLeft.w, eye.uvLowerLeft.x, eye.uvLowerLeft.y };
            float[] upperLeft = { eye.clipUpperLeft.x, eye.clipUpperLeft.y, eye.clipUpperLeft.z, eye.clipUpperLeft.w, eye.uvUpperLeft.x, eye.uvUpperLeft.y };
            float[] upperRight = { eye.clipUpperRight.x, eye.clipUpperRight.y, eye.clipUpperRight.z, eye.clipUpperRight.w, eye.uvUpperRight.x, eye.uvUpperRight.y };
            float[] lowerRight = { eye.clipLowerRight.x, eye.clipLowerRight.y, eye.clipLowerRight.z, eye.clipLowerRight.w, eye.uvLowerRight.x, eye.uvLowerRight.y };
            SvrSetupLayerCoords(0, eyeCount, lowerLeft, lowerRight, upperLeft, upperRight);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值