2017-08-19 13:21:01 biezhihua 阅读数 1507
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    604 人正在学习 去看看 刘国柱

原文教程:https://unity3d.com/cn/learn/tutorials/topics/graphics/cameras?playlist=17102(需翻墙)

在Unity中,摄像机(Camera)是一个最基础的组件(Component)。摄像机将场景中的内容展示给用户。每个场景必须有至少一个摄像机,否则我们会什么也看不到。

当一个新场景被创建时,一个摄像机也会随之被创建。这个就是主摄像机(Main Camera)。摄像机是一个绑定在GameObject上的组件。这意味着我们可以操作、移动摄像机,例如:设置父亲,设置脚本,或一些物理交互。

要创建第一人称或是第三人称的摄像机,包括移动效果,我们可以让Player GameObject作为父亲。对于第一人称摄像机,从人物的角度来看,要确保摄像机在其眼睛的部位。对于第三人称摄像机,要确保摄像机在人物的后面。


第一人称


第三人称

对于一些解谜游戏和上下的射击游戏,摄像机通常是静态放置的,只是渲染和展示所看到的。

这里举个例子,将摄像机放置到中心,移除无用的属性,将摄像机的视角向下去模拟上下型的游戏。此外,摄像机投射模式(Projection)使用直角(orthographic)。效果如下:

这里写图片描述

在一个场景中,也可以有多个摄像机。每个摄像机渲染不同的部分。在这个例子中,场景中有三个摄像机,一个用于渲染所有的动态物体(dynamic object)。一个用于渲染静态背景(static background),另一个显示UI叠加层。三个摄像机可以一起组合展示给用户。

这里写图片描述
多摄像机预览效果

当一个摄像机被选中时,我们可以看到一个预览窗口。当我们场景中有多个摄像机时,这个功能帮助我们知道每个摄像机各自渲染了什么。

即使场景中只有一个摄像机,这个预览窗口在全屏模式下也可以帮助让我们知道摄像机渲染了什么。

摄像机会渲染它前方视野中的一切。它的视野在场景中用白色轮廓的线显示。这个形状就是一个截头锥体(frustum)。一个frustum就是一个金字塔、锥体被截去了头部。锥体被截去的头部,就是近裁剪平面(near clipping plane),远处的是远裁剪平面(far clipping plane)。近、远裁剪平面控制着摄像机绘制的距离。

GameObject必须在远、近裁剪平面之间才能够被渲染。截头锥体的边代表着摄像机能够看到的左右上下的范围。场景中的任何部分,只有在frustum中才能够渲染。

这里写图片描述
截头锥体(frustum)所代表的可视区域

场景中的摄像机有两种不同的方式定义可看到的区域。一个是远景模式(Perspective Mode),一个是直角模式(Orthographic Mode)。切换这两种模式,摄像机可视区域截头锥体的形状会有显著的变化。

这里写图片描述

摄像机的远景模式(Perspective Mode)渲染场景,会更像真实世界的摄像机,有一种由远到近视角衰减的感觉。这是创建一个游戏,最常用的摄像机模式。直角模式(Orthographic Mode)并没有视角衰减。所有的对象都会被平行投影形式的摄像机所渲染。在场景中我们能看到一个直的截头锥体,前后看到视图的尺寸是一致的。这个模式常用与等距游戏,例如:实时策略游戏,2D游戏。

为了控制场景中渲染的范围,可以调节(near/far clipping plane)远、近截取平面的尺寸或截头锥体(frustum)的形状。

视野(Field Of View)用于控制摄像机的视图有多宽。这非常像现实世界中摄像机的变焦(zoom)效果。当使用直角模式时,尺寸(size)属性会替代视野(Field Of View)属性。这个属性控制着直角模式的视口(viewport)。这个属性非常像视野(Field Of View),但是改变尺寸(size)的值会同时改变前后平面的大小。

我们的场景必须要有一种背景。这个由清除标记(Clear Flags)和背景属性(Background Properties)来控制。背景属性设置的色值,会被绘制在场景中所有物体的后面。清除标记(Clear Flags)决定了摄像机会使用什么背景。当使用多个相机时,这个设置非常重要。当渲染视图时,每个相机都存储了颜色和深度信息。未被绘制的区域被认为是空的,清除标记(Clear Flags)决定了空的空间会如何显示。如果一个天空盒子被设置为背景,那么背景就是天空盒子。一个天空盒子是一个材质,它包含了包围场景的一些列图片,这些图片会为场景提供纹理背景。

如果不想要天空盒子,我们也可以选择一个纯色(Solid Color)作为清除标记。这个颜色会被绘制在所有物体的后面。

深度(Depth Only)主要用于多个摄像机。Don’t Clear一般不用于游戏中,它会导致每帧在最后绘制,会产生一个涂抹效果。

这里写图片描述

当使用多个相机时,清除标记常常使用Depth Only。使用这个设置,每个相机都会被一个值(value)和一个深度(depth),每个相机的视图分层叠在一起,从深度值最低的开始。通常主摄像机(Main Camera)会被分配一个较低的深度值,清楚标记被设置为天空盒子或是纯色。其他的摄像机的清除标记都被设置为depth only,这样最终只有一个背景。其他摄像机的图像会在主摄像机之上。

摄像机渲染的内容被Culling Mask属性所限制。Culling Mask菜单会列出场景中所有可用的的层(Layer)。摄像机仅仅会渲染Culling Mask属性中被选中的层。

这里写图片描述

在开发用户界面时,UI元素被设置为UI layer。我们的UI摄像机的Culling Mask被设置成UI。同时,清除标记被设置为depth only,深度值设置成所有相机中最高的。这样UI摄像机仅仅绘制UI元素,而且UI元素会被放置顶层。

2013-08-21 18:37:07 kfqcome 阅读数 32591
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    604 人正在学习 去看看 刘国柱

主要来自unity3d reference再加上一些自己的理解

一 概述

摄像头是用于将世界场景投影到屏幕的设备。可以在场景中放置不限数目的摄像机,它们可以设定成任意的渲染次序,渲染到屏幕上的任意地方。

摄像机实质上是用于将游戏显示给玩家看,它们可以被定制,在上面写脚本或者挂载到其他物体上面以获得想象中的各种效果。对于一个猜谜的游戏,可能只需对游戏的全部视图保持摄像机静止即可。对于第一人称的射击游戏,常会将摄像机挂载到玩家角色上面,将其放置在角色眼睛的高度。对于一个赛车游戏,可能会让摄像机跟随赛车。

可以创建多个摄像机,然后为每一个赋予一个不同的深度值。摄像机是从低深度值到高深度值的次序进行绘制,一个深度值为2的摄像机将会在深度值为1的摄像机绘制之后再绘制。同时可以调整Normalized View Port Rect属性来调整摄像机视图在屏幕上的位置大小,使用这个可以创建多个迷你视图。


二 属性

1 clear flags

确定屏幕的哪一部分将被清除。

每个摄像机在渲染它视图的时候都会缓存颜色和深度信息。绘制出来的图像中那部分没有被绘制到的部分是空白的,默认的情况下会显示天空盒的颜色。

当使用多个摄像机的时候,每个都在缓存中存放了它自己的颜色和深度信息,在每个相机渲染的时候会累积更多的数据。在场景中任何特定的摄像机渲染其视图的时候,可以指定清除标志来清除缓存信息中的不同部分。可选项有sky box,solid color,depth only和dont clear。


<1> Skybox

这是清除标志的默认设置。屏幕的任何空白部分都会显示摄像机的天空盒,如何当前摄像机没有设定天空盒,它会默认使用渲染设置中(Eidt->Render Settings)的天空盒。假如默认渲染设置中也没有设定天空盒,它会退而使用背景色。可以选择是否将一个天空盒组件添加到摄像机。

<2> Solid Color

屏幕的任何空白部分都会显示当前摄像机的背景色

<3> Depth Only

如果想要绘制一个玩家的枪而不让它在环境中不被裁剪,可以设定一个深度为0的相机来绘制环境,同时另一个深度为1的相机单独绘制这个武器。武器相机的清除标志应该设置成Depth Only。这会保持环境的图形显示在屏幕上,但是丢弃所有关于每个对象处于3D空间什么位置的信息。当枪被绘制的时候,被绘制出来的不透明部分会完全覆盖现有的被绘制的环境图像,而不管枪离墙壁多近。


为相机使用Depth Only作为清除标志,会使相机仅仅根据相机的深度信息来输出画面,比如相机深度为N的清除标志设为Depth only,那么它的输出会直接覆盖在所有深度小于N的相机输出画面上,而不管在真实的3D环境中,各种对象的z值如何

<4> Don’t clear

这个模式下不会清除颜色和深度缓存。这会导致下一帧会在上一帧的结果上进行绘制,这个模式在游戏中用得少,一般用于常规的shader中。

不清除的话不过一会屏幕所有的空白区域都会被填满,完全看不出是什么东西。


2 Background

在没有天空盒的时候,当所有的元素绘制完成后剩余屏幕的颜色,即那些没有被元素绘制到的屏幕区域显示的颜色


3 Culling Mask

用于来设定是否剔除处于某一层的对象。Unity场景中的每一个对象,都被分配了一个层,默认为“default”层。打开层级管理器可以看到初始状态下分配了8个层,即0-7层是已经被U3D使用,而”default”处于第0层。



摄像机的Culling Mask的可选项就是这些被使用的层,外加两个完全选项Everthing和Nothing,摄像机Culling Mask的默认选择是Everything,即不剔除任何层,这个时候所有的层也都被选中,如下图


假如现在要隐藏处于Background Image层的对象,只需在该列表中取消勾选Background Image即可。


4 Projection

摄像机的投影方式,有透视投影和正交投影两种。

正交投影:投影线垂直于投影面,也叫平行投影


将摄像机设成正交投影,可以看到它变成了一个立方体



5 Size

当摄像机设成正交投影时,摄像机对应的那个长方体的大小


6 Field of view

视角,透视投影时才有的特性。视角越大,能看到的视野也越大,对应的焦距也越短


7 Clipping Planes

裁剪平面,Near和Far指定了裁剪的区域范围,即在Near-Far范围之内的面将被裁剪掉,不进行渲染。

远近裁剪平面和由Field Of view决定的平面一起构成一个椎体,被称为相机椎体或视椎体,完全处于该椎体之外的物体将会被剔除,这被称为椎体剔除。

8 Normalized viewport rect

指定如何将摄像机的视图绘制到屏幕坐标系上(取值范围为0-1)

X:摄像机视图在屏幕上被绘制的水平初始位置

Y:摄像机视图在屏幕上被绘制的垂直初始位置

W:摄像机视图输出图像占屏幕宽度的比例

H:摄像机视图输出图像占屏幕高度的比例

U3D屏幕的坐标系是以左下角为坐标原点,向右为X轴,向上为Y轴


9 Depth

摄像机在绘制序列中的位置(层级)。有更大深度值的摄像机将会在深度值更小的摄像机上面绘制,即假如两个相机C1和C2,深度值分别为10和8,假如将摄像机设为在场景中可见,则C1会在C2的上层绘制,会把摄像机C2也绘制到图像中


10 Rendering Path

用于指定摄像机使用哪种渲染方法,有下面几种

  • Use Player Settings,摄像机会使用在玩家配置里面指定的渲染路径

  • Vertex Lit,所有被该摄像机渲染的对象都会被渲染成Vertex-Lit对象

  • Forward,所有的对象都会被渲染为一个材质对应一个通道

  • Deferred Lighting,所有的对象在没有光照的情况下绘制一次,然后在渲染队列的末端将所有对象的光照一起绘制,也就是所谓的“延迟光照”技术。


11 Target Texture

可以用于容纳摄像机视图输出的Render Texture对象的引用,设定这个引用将会禁止摄像机将视图绘制到屏幕


12 HDR

启用摄像机的高动态范围渲染(High Dynamic Range Rendering)



三 示例

示例:在屏幕上显示一个2D背景图

做法如下,来自这里

  • 创建一个新的摄像机,取名为”Background Camera”

  • 创建一个新的GUI贴图,取名为”Background Image”

  • 单击Background Image的监视器面板的”Layer”下拉按钮,创建一个新的层,取名为”Background Image”

  • 设置好贴图Background Image的大小和位置,同时将它的层设定为“Background Image”

  • 选中Background Camera,对它的一些属性进行这样的操作:取消勾选Flare Layer和Audio Listener,设定清除标志为Solid Color,设定深度为-1,先将Culling Mask设为nothing,然后设为Background Image

  • 选中主摄像机,设置清除标志为Depth Only,将它的Culling Mask里面的Background Image取消勾选

到此为止,即设定了一个屏幕的背景贴图。这里先将背景相机的清除标志设置为Solid Color,那么该相机绘图后的空白区域就会填充背景色,让后通过设置Culling Mask使其仅仅显示层”Background Image”,也就是说背景摄像机仅仅绘制背景贴图,空白部分用背景色填充。然后主摄像机设置Culling Mask使其不绘制背景贴图,并且将清除标志设置成Depth Only,因为背景相机的深度为-1,那么主相机的深度就为0,背景相机先进行绘制,然后主相机进行绘制,主相机绘制出来的不透明的部分会完全覆盖在前面层级相机的图像上,也就是说主相机的绘制结果会直接覆盖到背景贴图上,这就达到了屏幕背景贴图的效果。


假如要进行满屏显示的话,手动调整背景图的大小显然是不实际的,应该使用代码

backgroundGUITexture.pixelInset.width = Screen.width;

backgroundGUITexture.pixelInset.height = Screen.height;

backgroundGUITexture.pixelInset.x = 0;

backgroundGUITexture.pixelInset.y = 0;

但是由于程序运行的时候可能分辨率会发生改变,所以前面的两句应该设置成和分辨率相关的大小

backgroundGUITexture.pixelInset.width = Screen.currentResolution.width;

backgroundGUITexture.pixelInset.height = Screen.currentResolution.height;


2016-09-20 23:30:53 Acmer_Sly 阅读数 646
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    604 人正在学习 去看看 刘国柱

unity3d摄像机

转载自http://blog.csdn.net/kfqcome/article/details/10159201

主要来自unity3d reference再加上一些自己的理解

一 概述

摄像头是用于将世界场景投影到屏幕的设备。可以在场景中放置不限数目的摄像机,它们可以设定成任意的渲染次序,渲染到屏幕上的任意地方。

摄像机实质上是用于将游戏显示给玩家看,它们可以被定制,在上面写脚本或者挂载到其他物体上面以获得想象中的各种效果。对于一个猜谜的游戏,可能只需对游戏的全部视图保持摄像机静止即可。对于第一人称的射击游戏,常会将摄像机挂载到玩家角色上面,将其放置在角色眼睛的高度。对于一个赛车游戏,可能会让摄像机跟随赛车。

可以创建多个摄像机,然后为每一个赋予一个不同的深度值。摄像机是从低深度值到高深度值的次序进行绘制,一个深度值为2的摄像机将会在深度值为1的摄像机绘制之后再绘制。同时可以调整Normalized View Port Rect属性来调整摄像机视图在屏幕上的位置大小,使用这个可以创建多个迷你视图。


二 属性

1 clear flags

确定屏幕的哪一部分将被清除。

每个摄像机在渲染它视图的时候都会缓存颜色和深度信息。绘制出来的图像中那部分没有被绘制到的部分是空白的,默认的情况下会显示天空盒的颜色。

当使用多个摄像机的时候,每个都在缓存中存放了它自己的颜色和深度信息,在每个相机渲染的时候会累积更多的数据。在场景中任何特定的摄像机渲染其视图的时候,可以指定清除标志来清除缓存信息中的不同部分。可选项有sky box,solid color,depth only和dont clear。


<1> Skybox

这是清除标志的默认设置。屏幕的任何空白部分都会显示摄像机的天空盒,如何当前摄像机没有设定天空盒,它会默认使用渲染设置中(Eidt->Render Settings)的天空盒。假如默认渲染设置中也没有设定天空盒,它会退而使用背景色。可以选择是否将一个天空盒组件添加到摄像机。

<2> Solid Color

屏幕的任何空白部分都会显示当前摄像机的背景色

<3> Depth Only

如果想要绘制一个玩家的枪而不让它在环境中不被裁剪,可以设定一个深度为0的相机来绘制环境,同时另一个深度为1的相机单独绘制这个武器。武器相机的清除标志应该设置成Depth Only。这会保持环境的图形显示在屏幕上,但是丢弃所有关于每个对象处于3D空间什么位置的信息。当枪被绘制的时候,被绘制出来的不透明部分会完全覆盖现有的被绘制的环境图像,而不管枪离墙壁多近。


为相机使用Depth Only作为清除标志,会使相机仅仅根据相机的深度信息来输出画面,比如相机深度为N的清除标志设为Depth only,那么它的输出会直接覆盖在所有深度小于N的相机输出画面上,而不管在真实的3D环境中,各种对象的z值如何

<4> Don’t clear

这个模式下不会清除颜色和深度缓存。这会导致下一帧会在上一帧的结果上进行绘制,这个模式在游戏中用得少,一般用于常规的shader中。

不清除的话不过一会屏幕所有的空白区域都会被填满,完全看不出是什么东西。


2 Background

在没有天空盒的时候,当所有的元素绘制完成后剩余屏幕的颜色,即那些没有被元素绘制到的屏幕区域显示的颜色


3 Culling Mask

用于来设定是否剔除处于某一层的对象。Unity场景中的每一个对象,都被分配了一个层,默认为“default”层。打开层级管理器可以看到初始状态下分配了8个层,即0-7层是已经被U3D使用,而”default”处于第0层。



摄像机的Culling Mask的可选项就是这些被使用的层,外加两个完全选项Everthing和Nothing,摄像机Culling Mask的默认选择是Everything,即不剔除任何层,这个时候所有的层也都被选中,如下图


假如现在要隐藏处于Background Image层的对象,只需在该列表中取消勾选Background Image即可。


4 Projection

摄像机的投影方式,有透视投影和正交投影两种。

正交投影:投影线垂直于投影面,也叫平行投影


将摄像机设成正交投影,可以看到它变成了一个立方体



5 Size

当摄像机设成正交投影时,摄像机对应的那个长方体的大小


6 Field of view

视角,透视投影时才有的特性。视角越大,能看到的视野也越大,对应的焦距也越短


7 Clipping Planes

裁剪平面,Near和Far指定了裁剪的区域范围,即在Near-Far范围之内的面将被裁剪掉,不进行渲染。

远近裁剪平面和由Field Of view决定的平面一起构成一个椎体,被称为相机椎体或视椎体,完全处于该椎体之外的物体将会被剔除,这被称为椎体剔除。

8 Normalized viewport rect

指定如何将摄像机的视图绘制到屏幕坐标系上(取值范围为0-1)

X:摄像机视图在屏幕上被绘制的水平初始位置

Y:摄像机视图在屏幕上被绘制的垂直初始位置

W:摄像机视图输出图像占屏幕宽度的比例

H:摄像机视图输出图像占屏幕高度的比例

U3D屏幕的坐标系是以左下角为坐标原点,向右为X轴,向上为Y轴


9 Depth

摄像机在绘制序列中的位置(层级)。有更大深度值的摄像机将会在深度值更小的摄像机上面绘制,即假如两个相机C1和C2,深度值分别为10和8,假如将摄像机设为在场景中可见,则C1会在C2的上层绘制,会把摄像机C2也绘制到图像中


10 Rendering Path

用于指定摄像机使用哪种渲染方法,有下面几种

  • Use Player Settings,摄像机会使用在玩家配置里面指定的渲染路径

  • Vertex Lit,所有被该摄像机渲染的对象都会被渲染成Vertex-Lit对象

  • Forward,所有的对象都会被渲染为一个材质对应一个通道

  • Deferred Lighting,所有的对象在没有光照的情况下绘制一次,然后在渲染队列的末端将所有对象的光照一起绘制,也就是所谓的“延迟光照”技术。


11 Target Texture

可以用于容纳摄像机视图输出的Render Texture对象的引用,设定这个引用将会禁止摄像机将视图绘制到屏幕


12 HDR

启用摄像机的高动态范围渲染(High Dynamic Range Rendering)



三 示例

示例:在屏幕上显示一个2D背景图

做法如下,来自这里

  • 创建一个新的摄像机,取名为”Background Camera”

  • 创建一个新的GUI贴图,取名为”Background Image”

  • 单击Background Image的监视器面板的”Layer”下拉按钮,创建一个新的层,取名为”Background Image”

  • 设置好贴图Background Image的大小和位置,同时将它的层设定为“Background Image”

  • 选中Background Camera,对它的一些属性进行这样的操作:取消勾选Flare Layer和Audio Listener,设定清除标志为Solid Color,设定深度为-1,先将Culling Mask设为nothing,然后设为Background Image

  • 选中主摄像机,设置清除标志为Depth Only,将它的Culling Mask里面的Background Image取消勾选

到此为止,即设定了一个屏幕的背景贴图。这里先将背景相机的清除标志设置为Solid Color,那么该相机绘图后的空白区域就会填充背景色,让后通过设置Culling Mask使其仅仅显示层”Background Image”,也就是说背景摄像机仅仅绘制背景贴图,空白部分用背景色填充。然后主摄像机设置Culling Mask使其不绘制背景贴图,并且将清除标志设置成Depth Only,因为背景相机的深度为-1,那么主相机的深度就为0,背景相机先进行绘制,然后主相机进行绘制,主相机绘制出来的不透明的部分会完全覆盖在前面层级相机的图像上,也就是说主相机的绘制结果会直接覆盖到背景贴图上,这就达到了屏幕背景贴图的效果。


假如要进行满屏显示的话,手动调整背景图的大小显然是不实际的,应该使用代码

backgroundGUITexture.pixelInset.width = Screen.width;

backgroundGUITexture.pixelInset.height = Screen.height;

backgroundGUITexture.pixelInset.x = 0;

backgroundGUITexture.pixelInset.y = 0;

但是由于程序运行的时候可能分辨率会发生改变,所以前面的两句应该设置成和分辨率相关的大小

backgroundGUITexture.pixelInset.width = Screen.currentResolution.width;

backgroundGUITexture.pixelInset.height = Screen.currentResolution.height;

2016-02-19 11:08:49 wuyt2008 阅读数 6247
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    604 人正在学习 去看看 刘国柱

主摄像机设置




背景摄像机设置,其中,Depth最好小于或等于主摄像机的Depth



背景摄像机看到的物体设置



场景整体设置和实际效果


2014-06-25 10:10:58 u014345526 阅读数 1000
  • 虚拟现实之汽车模拟仿真项目开发

    详细概述:         从2018年开始虚拟现实、增强现实、混合现实(VR/AR/MR)技术已经被国家正式列入重点发展产业目录。 由中国通信工业协会协同地方政府主办,国内各大企业与高校积极参与的《世界VR产业大会暨第某届中国国际通信电子产业博览会》每年都会大约10月中旬在南昌市举办, 所以未来的数年将是虚拟现实技术大发展的时期。              本教学视频课程从企业真实虚拟现实项目中提取核心技术要点,总结必须开发功能要素,全面而细致的讲解虚拟现实之汽车模拟仿真项目中需要开发的各个功能模块、开发要点等。 本作从项目环境搭建、汽车零部件素材导入、 汽车零部件模拟拆卸、主摄像机旋转与缩进控制、部件灵活运转算法、部件颜色喷漆、汽车模拟导航、多摄像机镜头处理、项目整体音频音量控制、项目UI设计等方面,给出详细的解决方案。              本课程的细致学习将有助于虚拟现实企业高薪就业与优秀VR项目的高水平研发之目的。 一、热更新系列(技术含量:中高级): A:《lua热更新技术中级篇》 https://edu.csdn.net/course/detail/27087 B:《热更新框架设计之Xlua基础视频课程》 https://edu.csdn.net/course/detail/27110 C:《热更新框架设计之热更流程与热补丁技术》 https://edu.csdn.net/course/detail/27118 D:《热更新框架设计之客户端热更框架(上)》 https://edu.csdn.net/course/detail/27132 E:《热更新框架设计之客户端热更框架(中)》 https://edu.csdn.net/course/detail/27135 F:《热更新框架设计之客户端热更框架(下)》 https://edu.csdn.net/course/detail/27136 二:框架设计系列(技术含量:中级):  A:《游戏UI界面框架设计系列视频课程》 https://edu.csdn.net/course/detail/27142 B:《Unity客户端框架设计PureMVC篇视频课程(上)》 https://edu.csdn.net/course/detail/27172 C:《Unity客户端框架设计PureMVC篇视频课程(下)》 https://edu.csdn.net/course/detail/27173 D:《AssetBundle框架设计_框架篇视频课程》 https://edu.csdn.net/course/detail/27169 三、Unity脚本从入门到精通(技术含量:初级) A:《C# For Unity系列之入门篇》 https://edu.csdn.net/course/detail/4560 B:《C# For Unity系列之基础篇》 https://edu.csdn.net/course/detail/4595 C: 《C# For Unity系列之中级篇》 https://edu.csdn.net/course/detail/24422 D:《C# For Unity系列之进阶篇》 https://edu.csdn.net/course/detail/24465 四、虚拟现实(VR)与增强现实(AR):(技术含量:初级) A:《虚拟现实之汽车仿真模拟系统 》 https://edu.csdn.net/course/detail/26618 五、Unity基础课程系列(技术含量:初级)  A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》   https://edu.csdn.net/course/detail/24643 B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》 https://edu.csdn.net/course/detail/24645  C:《Unity ECS(二) 小试牛刀》 https://edu.csdn.net/course/detail/27096 六、Unity ARPG课程(技术含量:初中级): A:《MMOARPG地下守护神_单机版实战视频课程(上部)》 https://edu.csdn.net/course/detail/24965 B:《MMOARPG地下守护神_单机版实战视频课程(中部)》 https://edu.csdn.net/course/detail/24968 C:《MMOARPG地下守护神_单机版实战视频课程(下部)》 https://edu.csdn.net/course/detail/24979  

    604 人正在学习 去看看 刘国柱
using UnityEngine;
using System.Collections;


public class BallCamera : MonoBehaviour
{
    //跟随目标
    public Transform target;
    //跟随高度
    public float relativeHeigth = 10.0f;
    //跟随Z轴差值
    public float zDistance = 5.0f;
    //滑动差值
    public float dampSpeed = 2;


    void Update()
    {


        Vector3 newPos = target.position + new Vector3(0, 10, -zDistance);
        //滑动跟随
        transform.position = Vector3.Lerp(transform.position, newPos, Time.deltaTime * dampSpeed);
    }
}

unity3D 摄像机跟随

阅读数 539

Unity3D引擎-摄像机控制CameraControl

博文 来自: u014805591
没有更多推荐了,返回首页