从本文开始,将介绍SvrEye脚本中详细的代码逻辑。 在SvrEye中首先利用一个静态变量Instances保存了场景中SvrEye的实例。 public static List 上文提到由于SvrEye是在运行状态下动态添加到leftEye以及RightEye的物体上的,因此程序运行后需要对Instances进行赋值。 在SvrEye脚本中实在Awake的方法里对Instances进行赋值的。 void Awake() { Instances.Add(this); AcquireComponents(); InitializeCoords(); }除了对Instances进行赋值以外,Awake还完成了其他初始化的方法,该部分后续文章中会进行详细的讲解。 除了赋值以外,Svr还在OnDestroy的方法中清除Instances实例,防止Instances的重复赋值等。 void OnDestroy() { Instances.Remove(this); }如何使用? 在SvrManager中正是通过SvrEye.Instances变量获取到场景中左右眼的SvrEye脚本。 并对该脚本进行赋值的。 for (int i = 0; i < SvrEye.Instances.Count; i++) { var eye = SvrEye.Instances; if (!eyes.Contains(eye)) { eyes.Add(eye); // Add eyes found outside of svr camera hierarchy } } SvrPlugin.DeviceInfo info = plugin.deviceInfo; foreach(SvrEye eye in eyes) { if (eye == null) continue; eye.FovMargin = settings.eyeFovMargin; eye.Format = RenderTextureFormat.Default; eye.Resolution = new Vector2(info.targetEyeWidthPixels, info.targetEyeHeightPixels); eye.Depth = (int)settings.eyeDepth; eye.AntiAliasing = (int)settings.eyeAntiAliasing; // hdr not supported with antialiasing eye.FrustumType = (int)settings.frustumType; eye.OnPreRenderListener = OnPreRenderListener; eye.OnPostRenderListener = OnPostRenderListener; eye.Initialize(); }在SvrManager中首先通过一个for循环以及一个私有变量eyes保存了场景中的SvrEye属性,之后通过遍历eyes对每一个SvrEye脚本进行属性以及方法的赋值。 |
只有小组成员才能发言,加入小组>>
83个成员聚集在这个小组
加入小组Qualcomm_Snapdragon_VR_SDK SvrPlugin脚本简介(1)
1765 浏览 0 评论
【DragonBoard 410c试用体验】之OpenCV中canny算子边缘检测
9104 浏览 0 评论
【DragonBoard 410c】汇总帖(2016.10.25更新)
36164 浏览 2 评论