Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
在光学中,反射和折射是众所周知的现象。反射和折射分向都是基于相交点处的法线和入射光线(主光线)的方向[22]。为了计算折射方向,我们还需指定材料的折射率。
同样,我们也必须意识到像玻璃球这样的物体同时具有反射性和折射性的事实。我们需要为表面上的给定点计算两者的混合值。反射和折射具体值的混合取决于主光线(或观察方向)和物体的法线和折射率之间的夹角。有一个方程式精确地计算了每个参数应该如何混合,这个方程称为菲涅耳方程。
加入反射折射后,进行以下三个步骤(见图3-8)。
图3-8 玻璃球与光线关系
1)计算反射
为此,我们需要两个项:交点处的法线和主光线的方向。一旦获得了反射方向,我们就朝这个方向发射新的光线。假设反射光线撞击了红色球体,通过向光线投射阴影射线来找出到达红色球体上的那个点的光线多少。这会得到一种颜色(如果是阴影,则为黑色),然后乘以光强并返回到玻璃球的表面。
2)计算折射(www.chuimin.cn)
注意,因为光线穿过玻璃球,所以被认为是透射光线(光线从球体的一侧传播到另一侧)。为了计算透射方向,需要在知道击中点的法线、主射线方向和材料的折射率。
当光线进入并离开玻璃物体时,光线的方向会改变。每当介质发生变化时都会发生折射,而且两种介质具有不同的折射率。折射对光线有轻微弯曲的作用。这个过程是让物体在透视时或在不同折射率的物体上出现偏移的原因。
现在让我们想象一下,当折射的光线离开玻璃球时,它会碰到一个绿色的球体。在那里,我们再次计算绿色球体和折射射线之间交点处的局部照明(通过拍摄阴影射线)。然后,将颜色(如果被遮挡,则为黑色)乘以光强并返回到玻璃球的表面。
3)应用菲涅耳方程
我们需要玻璃球的折射率、主光线的角度,以及击中点的法线。使用点积、菲涅耳方程返回两个混合值。
这种算法的美妙之处在于它是递归的。迄今为止,在我们研究过的情况下,反射光线照射到一个红色的、不透明的球体上,而折射光线照射到一个绿色的、不透明的和漫射的球体上。但是,我们会想象红色和绿色的球体也是玻璃球。为了找到由反射和折射光线返回的颜色,必须按照与原始玻璃球一起使用的红色和绿色球体的相同过程。
这是光线追踪算法的一个严重缺陷。想象一下,我们的相机是在一个只有反射面的盒子里。从理论上讲,光线被困住了,并且会持续不断地从箱子的墙壁反弹(或者直到你停止模拟)。出于这个原因,必须设置一个任意的限制值,从而防止光线相互作用导致的无限递归。每当光线反射或折射时,其深度都会增加。当光线深度大于最大递归深度时,我们就停止递归过程。
有关虚拟现实理论基础与应用开发实践的文章
Unity引擎的更新迭代速度很快,从2017年开始每个季度都会有次大版本的更新,比如2017.1,2017.2等,至今正式的大版本升级到了2018.2版本。Unity LTS版本将从TECH版本每年最后一个版本开始,持续支持二年的时间。如果读者实际准备发布上线的项目,为了稳定起见,建议使用LTS版本,即2017.4最新的版本,以保证项目最大限度地稳定运行。如果发现没有红色报错信息,基本可以确定大部分版本升级是成功的。......
2023-10-17
图8-32Ball脚本创建1)概要前面创建了一个游戏项目,并且创建了玩家角色和小球这些游戏对象,还通过添加游戏脚本实现了小方块的弹跳。图8-33游戏开始状态图8-34Ball项文本变为蓝色图8-35多出一个小球对象将Player和Floor游戏对象也做成预设。图8-37创建文件夹并修改其名称图8-38移动Player预设和Floor预设至Prefabs文件夹将预设Ball Prefab拖拽到Prefabs文件夹下。图8-39保存文件夹回到Assets图8-40游戏对象命名5)发射小球在窗口顶部菜单中依次单击GameObject→Create Empty。......
2023-10-17
Unity中可以扩展的相机属性●清除标记:决定场景的哪个部分需要清除。你可以创建多个相机并赋予它们不同的深度。如果当前相机没有设置天空盒,它将缺省使用在渲染设置中的天空盒。武器相机的Clear Flags应该被设置为仅深度。为了使UI显示在所有其他相机视的顶部,你还需要设置Clear Flags和Depth only并确定相机的深度比其他相机的高。图7-53景深相机正交相机。......
2023-10-17
实例化预设使用上面章节中描述的创建预设的方法。一旦你创建了预设,你就可以简单快速地得到一个预设的拷贝,称为实例。为了创建任何预设的一个实例,从工程视图中拖动一个预设到层次或场景视图中。添加组件和脚本当你选中任何预设或物体时,你可以通过使用组件来向其中添加一些额外的功能。脚本也是组件的一种类型。缺省情况下脚本也包含在组件菜单中。你可以通过Components→Camera-Control来找到它。......
2023-10-17
在推导角谱理论基本公式和式时,没有应用菲涅耳近似,所以这组公式可以用来严格求解衍射问题。又因所以这正是式的菲涅耳衍射积分,如果对上式采用更加严格的夫琅和费近似,忽略积分中与有关的二次位相因子,则可以导出式表示的夫琅和费衍射积分公式。......
2023-11-23
在Assets→Audio文件夹下,右击Create→AudioMixer。只要在主角受伤时播放音效就可以了,开枪的声音同理。刚刚制作的AudioMixer还没有用到,现在我们开始制作,双击AudioMixer,添加一个SoundEffect。在AudioMixer添加一个Music用来控制背景音乐,SoundEffect用来控制音效,Master用来同时控制二者。图8-261enemies放到怪物的AudioSource的output图8-262添加组件图8-263新建脚本MixLevel图8-264把代码放至Canvas回到MasterMixer,单击volumn,选择exposed。图8-267添加music、sound脚本代码回到UI界面里面的slider条,按照不同的slider条功能添加不同的函数。......
2023-10-17
2)创建新项目启动Unity后将出现一个并列显示Projects和Getting started的窗口。图8-6查看GameScene项图8-7调整摄像角度6)创建方块和小球创建完地面后,接下来将创建代表玩家角色的小方块和球体游戏对象。将方块移动到左侧,小球移动到右侧。图8-8选中小方块图8-9X值修改7)运行游戏再次保存项目文件)。图8-10Maximize on Play图标状态启动游戏后,将自动切换到游戏视图。图8-15游戏视图11)让玩家角色跳起来由于该脚本用于操作玩家角色,所以命名为Player。......
2023-10-17
图9-71创建游戏管理器的逻辑脚本游戏胜负逻辑是与GameManager等脚本关联起来的。图9-76添加Look At Target组件运行游戏,发现收集物状态UI已经可以正常显示,面向摄像机了。图9-78添加Wall Mover组件图9-79组件关联在Scripts文件夹内右键Create→C# Script,重命名GoalZone,用于处理到达终点的逻辑。找到VR Win Panel→Exit Game Button上的Button组件,设置On Click事件调用为Game Manager UI→GameManager.ExitGame方法。图9-84设置完成的效果显示成功拾取到4个盾牌收集物到达GoalZone,也会弹出VR Win Panel的UI,可以进行一样的操作。......
2023-10-17
相关推荐