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

Cardboard Unity SDK Reference 翻译版一

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

最近正在准备雅思,趁机翻译了Cardboard的文档,这个文档挂在谷歌官网上,不翻墙根本看不了,翻了墙这个网页也很不稳定,经常上不去,所以就搬运了过来,不过我英语水平实在有限,这次翻译也是对自己的一次锻炼,有的地方我自己明白但是也很难表述好,还请大神轻喷。
里面有很多奇怪的词汇查不到,都是我自己猜着翻译的,还有的词查到了也不知道是啥,比如“剔除掩膜”啥的…,翻译工作量也很大,都是我自己挤时间翻译的,还请大神们指出翻译的不好的地方,英文版请见我上一篇博客:http://blog.csdn.net/sunmc1204953974/article/details/47157951
Cardboard Unity SDK Reference中文翻译版,水平有限请以英文版为准。
Plugin Reference

Package 内容

Unity插件包包含以下内容:
脚本
·        Cardboard.cs  -本地代码虚拟现实设备的单例模式连接。
·        CardboardEye.cs  -用于立体相机的视角(eye view)/投影
·        CardboardHead.cs  -用于虚拟现实眼镜的头部视图的变换
·        GazeInputModule.cs  -通过目光(注视点)和点击触发控制uGUI元素。
·        Pose3D.cs  -包含一个旋转和平移。
·        RadialUndistortionEffect.cs  -图像效果虚拟现实校正(双屏)。
*注:这里的distortion我理解为利用双屏变换模拟显示,后同。
·        StereoController.cs  -控制非立体显示(全屏显示)还是立体显示(分屏显示)。
*注:这里的mono/ stereo我理解为全屏显示(VR模式关)与分屏显示(VR模式开),后同
编辑器脚本
·        CardboardEditor.cs  - Cardboard对象的自定义参数。
·        StereoControllerEditor.cs  -添加了一个按钮来更新立体双眼摄像头。
Prefabs
·        CardboardMain  -一个可直接替代的主相机对象。
·        CardboardHead  -一个可直接替代的其他摄像机。
·        CardboardAdapter  -将立体渲染添加到现有的摄像头。
Shaders
·        RadialUndistortionEffect  -着色器虚拟现实校正(双屏)。
演示
·        DemoScene  -插件的简单演示。
Legacy
这些特性是为了支持现有项目在老版本的Unity上也可以运行,是为统一版本而设计的。
·        CardboardGUI.cs  -采集OnGUI到一个纹理。
·        CardboardGUIWindow.cs  -在场景中的网格上显示OnGUI纹理。
·        CardboardGUIMouse.cs  -用用户的目光控制鼠标; 绘制鼠标指针。
·        CardboardGUI  Prefab -使得可以很容易的在立体视角中通过OnGUI实现显示和交互。
·        SkyboxMesh.cs  -将一个摄像头的skybox转换为一个运行时的网格纹理。
·        StereoLensFlare.cs  -支持方向的镜头耀斑但是存在一定视差。
·        SkyboxMesh  Shader-不发光的纹理背景。
·        GUIScreen  Shader-具有透明度的不发光纹理覆盖。

脚本

这部分包含单个脚本的特定目的和他们如何一起工作,无论是在使用提供的预制件时(prefab)还是如果您自己添加到自己的场景。
Cardboard.cs
提供了去访问底层虚拟现实设备的方法,这是在本地代码中实现的。应该只在其中一个场景中。如果需要的话,一个实例会在运行时产生,如果你想自定义它的初始属性,你也可以通过编辑器添加一个。
枚举
         enum Eye { Left, Right }
两只眼睛之间的区别(左眼右眼)。
enum Distortion { Distorted, Undistorted }
检索投影和视口(Viewport)属性,确定您是希望通过Cardboard眼镜来观看时所需的图像(Distorted,双屏)或如果没有眼镜的存在时所需的图像(Undistorted,全屏)。(注* 视口ViewPort是计算机图形学里面的重要概念之一,是与设备相关的一个矩形区域,坐标单位是与设备相关的,简单理解就是你在显示屏幕里能够看到的显示内容.)

属性(Properties)
Cardboard SDK [static, read only]
指向该脚本的单一全局实例。如果不是已经存在的话,该实例是按需创建的。
bool DistortionCorrection [default true]
是否虚拟现实校正由插件进行。如果被禁用,则它是由应用程序执行任何它想执行的虚拟现实校正,如果有的话。
bool VRModeEnabled [default true]
确定场景是非立体显示(全屏显示)还是立体显示(分屏显示)。指定这个字段可以自己控制分屏/全屏
bool TapIsTrigger [default false]
当启用时,Cardboard把一个屏幕点击(screen tap)视为一个触发(trigger pull)进行处理。(注* 感觉这里说的trigger是扣Cardboard侧面的磁铁)
bool EnableAlignmentMarker [default true]
启用或禁用立体视图之间呈现的垂直线,以帮助用户将手机屏幕对准Cardboard眼镜的中线。
bool EnableSettingsButton [default true]
启用或禁用Cardboard的设置按钮。它显示为立体视图之间的空白上的一个齿轮图标。这个设置按钮打开谷歌Cardboard app,允许用户配置他们的个人设置和Cardboard的耳机参数。
float NeckModelScale [0..1, default 1]
原生SDK将使用一个颈部偏移的头部跟踪,从而实现一个更逼真的人的头部位置模型。
该控制确定偏移的比例因子。要关闭颈部模型,将其设置为0,将其全部打开,设置为1。中间值可用于动画从开到关,反之亦然。
bool AutoDriftCorrection [default true]
当启用时,会进行陀螺漂移读数的估计和去除(自动漂移修正)。
bool Triggered [read only]
判断是否触发了Cardboard的触发器。在每次触发后为一个十分精确的完整帧。(注* 感觉这里说的trigger是扣Cardboard侧面的磁铁)
bool Tilted [read only]
判断Cardboard使用者是否呈倾斜在其一侧的状态。在每次倾斜后为一个十分精确的完整帧。一些应用程序把它视为一个“返回”或“退出场景”的动作。
RenderTexture StereoScreen
当虚拟现实模式被启用(VR Mode enable)时,立体相机会自动的并排的渲染在这一目标上。每一帧,其结果是经过虚拟现实校正(分屏)的,然后显示出来。请注意,当VR模式被禁用(VR Mode disable)或不支持虚拟现实校正,此属性将返回null。
该属性通常是通过Cardboard自动初始化的,但如果你想自定义纹理,你可以指派它到你的代码中。
Pose3D HeadPose [read only]
当前帧的头部姿态,将头部跟踪系统作为返回值。
Pose3D EyePose(Cardboard.Eye eye)
指定的眼睛相对于头部的姿态。
Matrix4x4 Projection(Cardboard.Eye eye, Distortion distortion [default Distorted])
当前帧的投影矩阵,用于给定的眼睛。该矩阵是一个分别具有1米和1千米的近端和远端剪裁平面的离轴透视投影。 CardboardEye  脚本负责采用调整这个特殊相机的矩阵。
Rect Viewport(Cardboard.Eye eye, Distortion distortion [default Distorted])
指定眼的摄像机会渲染成屏幕空间的视口(Viewport),在虚拟现实的情况下,这将是左或右半边的stereoscreen渲染纹理。在非虚拟现实的情况下,它指的是屏幕上可以看到实际看到的矩形区域。(注* 视口ViewPort是计算机图形学里面的重要概念之一,是与设备相关的一个矩形区域,坐标单位是与设备相关的,简单理解就是你在显示屏幕里能够看到的显示内容.)
Vector2 ComfortableViewingRange [read only, default 1-100000 meters]
在现实世界中,一个可以通过设备舒适地观看一个物体的最小和最大距离。
事件
Action OnTrigger
每当触发(Trigger)发生时发生该事件。如果  TapIsTrigger  被启用,那么当一个屏幕点击(screen tap)发生时也会发生该事件。(注* 感觉这里说Trigger的是扣Cardboard侧面的磁铁)
Action OnTilt
每当使用者呈倾斜在其一侧的状态(Tilt)发生该事件。如果  TapIsTrigger被启用,退出键也会成为需要注意的问题:在Android上,Unity会将后退按钮(BackButton)视为退出键。
方法
void UpdateState()
从手机中读取最新的跟踪数据。这必须在访问任何的姿态信息和矩阵之前调用。
每帧多次调用是允许的:后续调用仅仅产生第一次调用的缓存结果。为了最小化延迟,如果可能的话,应该首先在一帧的稍后进行第一次调用(例如,in LateUpdate
bool Recenter()
使头部追踪器回到中心位置,使手机的当前方向变为正方向。
void CreateStereoScreen()
创建(或重新创建)StereoScreen纹理并使用合理的默认设置。如果不支持虚拟现实校正则没有效果。

CardboardEye.cs
渲染同样的视图作为父类StereoController的一个单摄像头,而不是完整的立体眼睛。视图和投影矩阵被连续不断地从Cardboard对象的  EyeView  和  Projection  属性更新。渲染输出被指向到Cardboard的  StereoScreen   渲染纹理,是在左半或右半取决于所选择的眼睛。
渲染  CardboardEye  相机是由StereoController所控制的,而不是由正常的Unity渲染管线所控制的。因此,  CardboardEye  相机一般都将enable设置为false。
在每个帧中,所有的摄像机设置(例如,剔除掩模,视野,近/远剪裁距离,等等)在父类单相机渲染之前被复制。因此,去设置附属于cardboardeye本身的相机的属性是毫无意义的。
属性(Properties)
Cardboard.Eye eye
确定要渲染的立体眼睛,就是去用哪个  EyeOffset  和  Projection  矩阵并且去渲染到屏幕的哪一半。
LayerMask toggleCullingMask
允许你为这个眼睛打开或关闭特定剔除掩模层。掩模是一个触发器:这个眼睛的剔除掩模首先从父单相机复制,然后在此指定的层被启用。每只眼睛有它自己的触发器掩模。
StereoController Controller [read only]
返回  StereoController  来控制这个眼睛。
CardboardHead Head [read only]
返回最近的祖先  CardboardHead

CardboardHead.cs
将此脚本附加到任何与用户头部运动相匹配的游戏对象上。默认情况下,它连续不断地去更新本地转换到  HeadView  的  Cardboard 对象。一个目标对象可以被指定去为运动提供一个可替换的参考系。
如果你需要从原点偏移相机的话,这个脚本通常会直接连接到一个摄像头对象,或者其父类。另外,它可以作为Camera的子类以及CardboardEye  Camera的父类插入 。如果你已经掌控了逻辑驱动的单摄像机(*注:不知道翻译的对不对,原文:if you already have steering logic driving the mono Camera),并希望让用户的头部运动与此相关则需要这样去操作。需要注意的是在后者的设置中,只有当启用VR模式时,头部跟踪才是是可见的。
在某些情况下,你可能需要CardboardHead的两个实例,指的是两个不同的目标(其中之一可以是父类),为了将执行旋转与执行位置偏离分开。在这种情况下,将使用trackRotation  和  trackPosition  的特性。
属性(Properties)
bool trackRotation [default true]
确定是否将用户的头部转动应用到gameobject 的方向。*注:如果该属性为false,则转动头部和侧歪头部都无效,无法转动视角
bool trackPosition [default true]
确定是否将用户的头部偏移应用到gameobject 的位置。*注:类比上个属性
Transform target [default null]
用户的头部运动将被应用在该对象的参考系,而不是头部对象的父类。一个良好的使用情况下是基于头部转向。通常情况下,将父对象(换言之即身体或车辆)转向用户正在看的方向,head也会跟随附带着,由此创造了一个正反馈回路。使用一个外部的目标对象作为用户注视方向的一个固定参考点。通常情况下,父类的父类或更高的祖先是一个合适的目标。
bool updateEarly [default false]
确定头部跟踪是应用  LateUpdate()  还是  Update() 。默认值是LateUpdate() ,以减少等待时间。但是,一些脚本需要使用摄像机的方向来影响游戏的玩法,例如在LateUpdate()  阶段,使用投射光线或者操纵一辆车 。(*注:不知道casting rays是什么鬼,原文:e.g by casting rays or steering a vehicle, during the LateUpdate() phase.
由于Unity的原因,这可能会导致令人讨厌的抖动,在 LateUpdate()  阶段,在一些帧中将会优先更新头部对象,而其他的放在第二位。如果你的游戏出现了这些糟糕的情况,请尝试切换头部对象使用  Update()
Ray Gaze [read only]
在确保变换是最新的之后,返回基于头的位置和直视方向的光线。在场景中使用光线投射(注* Physics.Raycast 光线投射)来确定该用户正在查看的对象。

GazeInputModule.cs
此脚本提供统一个Unity的BaseInputModule 类的实现,使得Canvas-based UI元素(uGUI)可以通过注视以及磁铁触发或者触摸屏幕这三种方式来选择和使用。请参阅  指南  中有关使用的详细信息。
GazeInputModule  发出以下事件:  进入,  退出,  向下,  向上,  点击,  选择,  取消选择和  选择更新(UpdateSelected)。但不能发出滚动,拖拽,移动,以及提交和取消事件。
属性(Properties)
bool vrModeOnly [default false]
确定目光(注视点)输入是否是只在VR模式下有用(true),或所有的情况下(false)。如果你打算在非VR模式下使用直接的屏幕触击或其他输入方式时,设置为false。
AR学院(www.arvrschool.com),从这里感触未来!

欢迎分享

游客

返回顶部