归海一啸
管理员
管理员
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 喜欢达人
  • 原创写手
阅读:496回复:0

Cardboard Unity SDK Reference 翻译版二

楼主#
更多 发布于:2016-08-30 23:23
AR学院注:Google VR API已更新,这个版本相对较老,仅供参考~
另外,有兴趣加入AR学院翻译社团志愿者的同学,欢迎私信我,多谢~

GameObject cursor [default null]
这是一个可选的对象被作为注视点的光标(raycast intersection)放置,担任3D的鼠标光标。  重要提示:  请务必设置所有的光线发射器都忽略这个对象的所在层。
float clickTime [default 0.1]
在通过进行一次触发,指针按下与弹起之间的一段短时间,是UI元素去转换他们的状态的准许时间。
Vector2 hotspot [default (0.5, 0.5)]
在视口(ViewPort)坐标中,通过该像素投射光线。一般地,中心像素是最佳的,假定一个单视场摄像机被选作Canvas的事件相机。(注* 视口ViewPort是计算机图形学里面的重要概念之一,是与设备相关的一个矩形区域,坐标单位是与设备相关的,简单理解就是你在显示屏幕里能够看到的显示内容.)


Pose3D.cs
封装一个旋转和一个平移。这是一个很方便的类,允许构造和值访问无论是通过Matrix4x4或是四元数 + Vector3的类型。
Vector3 Position
pose的translation组件。
Quaternion Orientation
Pose的rotation组件。
Matrix4x4 Matrix
Pose在Unity游戏对象习惯约定下的Matrix4x4矩阵。(左手系)
Matrix4x4 RightHandedMatrix
Pose在右手坐标系下的矩阵。

RadialUndistortionEffect.cs
实现了由本地代码执行的相同的桶形变形。它用于在编辑器里去运行一个场景时,能够显示失真校正的效果,并且在本地代码的失真校正为不可用或禁用时进行返回。(注* 一条直线经过镜头拍摄后,变成弯曲的现象,称为歪曲像差。向对角线往外弯的是「枕状变形」(pincushion),向内弯的是「桶状变形」(Barrel)。一支变焦镜头,通常在广角端呈现桶状变形,而在望远程呈现枕状变形。)

StereoController.cs
这个脚本必须被添加到任何一个当APP在VR Mode下时可以渲染立体效果(双屏)的相机。这包括画中画窗口,无论它们的内容是否在立体模式下(双屏):不管什么情况窗口本身必须成双用于立体显示。
对于每一帧,  StereoController  决定是否经由其绑定的摄像机(单摄像机)进行渲染还是使用其控制的立体的eyes(见  CardboardEye)。您可以通过设置Cardboard.SDK.VRModeEnabled的值来立马控制所有摄像机 。
由于技术原因,在帧的起始部分单摄像头保持启用。它只在渲染在  OnPreCull()的作用下开始时被禁用,并在该帧的末尾再次被重新启用。这将允许使用第三方使用Camera.main的脚本,例如,即使在VR模式被启用的情况下引用该单摄像机。
在启动脚本时请确保有一个完整的立体显示系统,其中包括两个附加了CardboardEye  脚本的子摄像机,以及一个用于头部追踪的在某个父子层级的CardboardHead  脚本。在必要的情况下该系统被创建, CardboardHead  被连接到控制器本身。子摄像机的设置会从单摄像机克隆或更新。
一个 StereoController  包含另一个StereoController作为一个孩子是被允许的。在这种情况下,一个CardboardEye  由其最近的 StereoController  父级控制。
此脚本的Inspector面板包括一个按钮来更新立体摄像机。这会执行与上述启动相同的动作,但是可以在编辑器(Editor)中运行。如果你想要自定义使用的话就这样来产生立体显示系统。这个功能也可以在编辑器的主菜单中的Component- >Cardboard- >Update Stereo Cameras使用,也可以通过该摄像机组件的右键菜单来使用。
属性(Properties)
bool directRender [default true]
如果您想在立体模式下使用延迟渲染或任何图像效果,关闭该选项。
float stereoMultiplier [0..1, default 1]
调整该立体显示系统中实体视觉的等级。请注意,此参数并不是Head的虚拟尺寸—为此使用一个CardboardHead 对象上的尺寸。相反,它是一个对人眼聚散度的控制,换言之,是立体显示系统的视觉重合程度。如果设置为0,将会独立的将此立体显示系统的立体视觉关闭。
float matchMonoFOV [0..1, default 0]
立体摄像机默认使用Cardboard装置的实际光学视野(actual optical FOV),因为否则将会破坏头部运动和场景运动之间的匹配关系,从而影响到虚拟现实的效果。然而,在某些情况下,比如为了特殊效果或艺术原因,去调整视野也是可取的。但在任何情况下都不要让视野与真正的光学视野有很大出入,否则用户可能会感到不适。
这个值决定了单摄像机的视野的匹配。这是一个分数:0意味着没有匹配,1意味着完全匹配,中间的值是一种折衷。不去匹配100%的原因包括保留一些虚拟现实,以及由于镜头畸变,当手机不是在虚拟现实模式时,视野的边缘是不容易看到的。
这个变量的另一个用途是保存在各种Cardboard模型的光学视场的不同场景组成。在所有的情况下,这个值只允许单摄像头在虚拟现实模式中有一定的控制权,就像它在非虚拟现实模式下一样。
float matchByZoom [0..1, default 0]
确定由立体摄像机的视场匹配单摄像机的视场的方法(假设matchmonofov不是0)。默认是移动立体相机(matchByZoom = 0),与之相反的是做一个简单的摄像机缩放(matchByZoom= 1)。中间值为两种行为的混合。
不建议对典型场景组合使用简单的缩放,因为它会与虚拟现实需要匹配用户的头部运动与相应的场景运动的要求相矛盾。这应该作为特殊效果例如当玩家通过望远镜或其它放大镜(以及因此玩家知道VR是要受到影响)来观看场景,或类似的情况下被保留。
值得注意的是,通过移动眼睛的匹配要求centerofinterest对象是非空的,否则会没有效果。
Transform centerOfInterest [default null]
通过移动眼睛来使立体显示(分屏显示)中的单摄像机视野保持一致需要一个指定的“兴趣中心(center ofinterest)”。无论是一个你在场景中放置的空间中的点(空游戏物体)来作为一种“三维光标”,还是一个玩家有可能被吸引的实际的场景实体都可以作为“兴趣中心”。
由于在单摄像机上,其FOV调节是通过移动眼睛的朝向或远离COI来完成的,以便于在屏幕上看起来有相同大小。如果COI为null,该调节将被禁用。
float radiusOfInterest [default 0]
该  “兴趣中心(center of interest)” 通常指的就是空间中的一个点,就像一个三维光标一样。有时候,你将希望它是一个具有明确的大小的实际物体。将此属性设置为该物体的近似半径会帮助视场匹配代码(FOV-matching code)去补偿物体的视野*注:原文:object's horizon 不知道译的对不对
bool checkStereoComfort [default true]
当控制器检查  centerOfInterest  在最近和最远舒适的观看距离(见Cardboard)之间,则为真,否则调节立体效果倍率来弥补。如果 centerOfInterest  具有非零的radiusOfInterest,那么近侧将会被检查。该  centerOfInterest  必须为非空时此设置才能生效。
float screenParallax [0..1, default 0]
对于画中画摄像机不填充整个屏幕的问题,可以设置窗口本身的虚拟深度。值为0意味着零视差,这是相当贴近用户的。值为1表示完全视差,这等于瞳距并且相当于视觉上无限远的窗口。这不影响所述窗口部分(以像素为单位)的实际屏幕大小,只影响立体分屏显示的左右图像。
float stereoPaddingX [0..1, default 0]
float stereoPaddingY [0..1, default 0]

对于画中画摄像机,通过移动窗口来远离VR模式中的边缘使其更容易地看到。HMD光学系统会使屏幕边缘很难看到,所以你可以用该属性来保持VR模式或非VR模式下的PIP可见。 X值是沿屏幕两边垫起的部分,以及Y值是用于在屏幕的顶部和底部。
CardboardHead Head [read only]
返回最近的影响该控制器的立体摄像机的  CardboardHead
CardboardEye[] Eyes [read only]
返回一个由该脚本的实例控制的立体摄像机的数组。请注意,为了更快的访问该数组会有一定的缓存。调用  InvalidateEyes() ,可以调用  InvalidateEyes()
RenderTexture StereoScreen [read only]
返回eyes将要进行渲染的目标texture。在存在一个的情况下,这是一个单摄像机的目标texture,否则有其他Cardboard.SDK.StereoScreen
方法
void InvalidateEyes()
清除缓存的  Eyes 数组。只有你改变其活动的游戏对象有被这个StereoController所控制的  CardboardEye组件时,才能调用这个函数。

编辑器脚本

下面的脚本定制了一些Cardboard组件的inspector面板。
CardboardEditor.cs
一个为Cardboard脚本的属性设计的自定义编辑器。它会出现在一个Cardboard对象的inspector窗口中。其目的是为了改变  Cardboard.SDK  对象的属性。特别是,当游戏在Editor中运行时,可以直接对InCardboard  属性的值进行设置,以便去模拟手机被插入Cardboard或从Cardboard中拿出。
StereoControllerEditor.cs
一个为 StereoController  脚本设计的自定义编辑器 。它存在的意义在于向StereoController的Inspector窗口添加一个更新立体相机的按钮,并将该按钮添加进了相应的主菜单项和摄像机的右键菜单。对这些行为的使用说明在stereocontroller.cs以上部分。

预制(Prefabs

本节描述了由包所提供的预制件。
CardboardMain
这种预制旨在成为一个正常的Unity摄像头的简易替换品,如主相机,前提是当相机很简单时,即还没有挂满脚本的时候。一个全新的Unity项目是一个使用它的好时机。在把他应用于编辑器时,删除上述相机,并将其用该预制的实例来替换。
这种预制含有一个叫做CardboardMain的顶层对象,并且会有一个Cardboard脚本附着于它用来控制VR模式的设置。在它之下有一个Head对象,会有一个 CardboardHead  附着用于跟踪该用户的头部运动。Head之下还有一个  Main Camera  子对象,附着一个StereoController 脚本。这个摄像机被标记为一个  MainCamera  从而使Unity的属性  Camera.main  发现它。最后,在层级的最底部会有左右立体摄像机。
CardboardHead
这种预制是为了替换场景中那些同样需要头部跟踪的其他摄像机。它有含有一个附着CardboardHead  脚本的叫做Head 的顶层对象。在它之下是一个附有  StereoController  脚本的Camera子对象,然后是左,右立体声摄像机。与 CardboardMain不同,Camera在这个预制种不会被标记为  MainCamera。
CardboardAdapter
这种预制是为你希望保留现有的Camera对象时准备的,通常是因为Camera在很大程度上与游戏逻辑相连并且已经完全符合非虚拟现实游戏的玩法了。把这个预制件作为Camera的孩子,然后执行更新立体相机  (或手动附加  StereoController到Camera)来完成配置。
不像其他的预制件那样,这种预置的设置是将头部跟踪节点放置在主摄像的下面。因此,只有立体摄像机受到用户的头部运动的影响。
一般预制注意事项
每个预制被作为用户自定义化的起点提供。这是一个为您的需要而附加额外脚本的框架。Head节点以下的元素将保持在屏幕上的固定位置,就像个平视显示器一样。Head的同级元素会保持一个固定的位置和相对于全局的方向,从而更像一个驾驶舱仪表板。
AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

游客

返回顶部