首页 理论教育 如何创建一个简单的虚拟现实场景

如何创建一个简单的虚拟现实场景

时间:2023-10-30 理论教育 版权反馈
【摘要】:看到如图8-19所示的一个空场景。一个项目可以保存多个场景。图8-20在场景中选中Main Camera下面添加一个单位立方体、一个平面、一个球体和照片背景到场景中。图8-21添加立方体这个立方体在各维度上都是一个单位,在Unity 3D中一个单位对应世界坐标系中的1米,其局部中心位于立方体的中心。

如何创建一个简单的虚拟现实场景

创建新项目“First_Pro”,进入了Unity集成开发环境。看到如图8-19所示的一个空场景。一个项目可以保存多个场景。

图8-19 在场景中选中Directional Light

一个默认的空Unity场景包括一个Main Camera(主摄像机)组件和一个Directional Light(平行光)组件,在Scene视图中可以看到它们,并且在Hierarchy视图中列出,见图8-19。Scene视图中还显示了一个无限基准面网格的透视图,就像一张空白的图纸。网格平铺X轴(红色)和Z轴(蓝色),而Y轴(绿色)向上。观察模式为Persp模式。

Unity下世界坐标观察模式有Iso和Persp两种。Persp是透视模式。在Persp模式下,物体在场景中所呈现的画面是距离摄像头近的物体显示得大,距离摄像头远的物体显示得小,近大远小。Iso模式是正交模式,不论物体距离摄像头远近,都给人的感觉是一样大的。

在图8-19中右边的“Inspector”视图中,显示当前选中对象的细节。单击Hierarchy视图列表中的“Directional Light”或Scene中选中平行光组件,观察“Inspector”视图中每个属性以及与选中对象关联的各个组件,其中包括Transform(变换值),对象的变换值指定其在3D世界坐标系中的位置、旋转和缩放比例。例如,位置值(0,3,0)指的是基准面中心点(X=0,Z=0)以上(Y方向)3个单位,旋转值(50,330,0)的意思是绕X轴顺时针旋转50°,绕Y轴旋转330°。

同样,如果点击“Main Camera”,位置值是(0,1,-10),没有旋转值,也就是说,它径直地指向前方的Z轴正方向。

当选择Main Camera时,如图8-20所示,一副Camera Preview小图会被添加到Scene视图中,它显示当前摄像机所看到的视野。图8-20中的视野是空的,而且基准面还没有被渲染,但是可以分辨出一条模糊的地平线,下面是灰色的地平面,上面是蓝色的默认天空盒子(Skybox)。

图8-20 在场景中选中Main Camera

下面添加一个单位立方体、一个平面、一个球体和照片背景到场景中。

1.添加立方体

首先,添加第一个对象,一个单位大小的立方体,到场景中。

选择“Hierarchy”视图,单击鼠标右键,选择“3D Object”→“Cube”,在场景中添加一个白色的立方体,放在了地平面的中心点(0,0,0)位置,没有旋转值和缩放值,如图8-21所示。可以在“Inspector”视图中看到这些值。这是Reset设置值,即Position(0,0,0),Rotation(0,0,0),Scale(1,1,1)。如果某些情况下添加的立方体不是这个值,则可以手动设置这些值,或者通过点击“Inspector”视图中Transform组件右上角的齿轮图标并选择“Reset”来设置。

图8-21 添加立方体

这个立方体在各维度上都是一个单位,在Unity 3D中一个单位对应世界坐标系中的1米,其局部中心位于立方体的中心。

在Scene视图中,按住鼠标右键的同时,按住W、A、S、D键,可以前后左右移动;按住Q、E键,可以上升、下降。通过鼠标滚轮,可以调整远近,按住右键拖动,可以自由调整视角。

当选中立方体对象时,其中心会出现3个坐标轴,见图8-21。这3个坐标轴代表三维空间中的X(红色)、Y(绿色)、Z(蓝色)轴,要移动这个立方体对象,应选择一条轴,当其颜色变为黄色时,按住鼠标左键进行拖动,就可以使物体沿对应的轴移动。若要旋转或缩放这个立方体,则可以选择工具栏中的旋转按钮或缩放按钮来操作。

2.添加平面

在“Hierarchy”视图中单击鼠标右键,选择“3D Object”→“Plane”,在场景中添加一个白色的平面,放在了地平面的中心点(0,0,0)位置。把它重命名为“GroundPlane”。

当缩放比例为(1,1,1)时,Unity中的平面对象实际上相当于在X轴和Z轴上10×10个单位的长度,也就是说,GroundPlane的长宽是10×10个单位大小,其Scale值是1。

现在,立方体的中心点在(0,0,0),与地平面相同。如图8-22所示。

图8-22 Scene视图中的物体

立方体陷入了地平面之下是因为其局部原点在其几何中心,也就是相当于1×1×1的中心点(0.5,0.5,0.5)。一个对象的Transform组件的位置值是其局部原点在世界坐标系中的位置值。

现在来移动一下这个立方体。在Inspector面板中将“Position”的“Y”值设置成0.5,使得立方体移到地平面的表面以上;将“Rotation”的“Y”设置为20,让立方体绕着Y轴旋转一点。如前所述,也可以直接用鼠标在Scene视图中改变对象的变换值。

注意,立方体旋转的方向是顺时针20°。Unity使用左手坐标系,Y轴向上。把左手握拳,竖起大拇指,其他四指指向的方向就是立方体旋转的方向。

3.添加球体

在“Hierarchy”视图中单击鼠标右键,选择“3D Object”→“Sphere”命令,在场景中添加一个球体。和立方体一样,球体的半径是1.0,原点也在几何中心。因为球体被嵌入在立方体中,所以需要移动球体的位置。选中球体对象,使用变换工具栏的移动按钮,拖动X轴、Y轴和Z轴的箭头来移动球体。最后,位置变成(2,1,-2)。这里,球体是不受物理规则限制的,也就是说它是静止不动的。

进一步,为球体添加一个Rigidbody(刚体)组件。刚体组件是Unity物理引擎中的重要组件,一个对象添加了刚体组件后就添加了基本的物理规则,如重力、摩擦力、碰撞产生的推力等。

选择球体,选择“Component”→“Physics”→“Rigidbody”菜单命令,为球体添加刚体组件。也可以在“Inspector”视图中点击“Add Component”按钮,在如图8-23所示的列表中选择“Physics”,在下一级列表中选择“Rigidbody”,勾选“Use Gravity”,如图8-24所示。

图8-23 Component列表

图8-24 Physics列表

这时,“Inspector”视图会显示相应的属性参数与功能选项,具体内容如图8-25所示。其中,功能属性有:

图8-25 刚体功能属性

Mass:添加质量;

Drag:添加空气阻力

Angular Drag:添加角阻力(旋转阻力);

Use Gravity:使用重力;

Is Kinematic:是否使用动力学;(www.xing528.com)

Interpolate:插值;

Collision Detection:碰撞检测;

Constraints:约束。

其中,碰撞检测有三个选项:Discrete,离散型检测模式,是普通的默认状态;Continuous,连续检测;Continuous dynamic,动态连续检测。

当物体添加了刚体组件后,它将感应物理引擎中的一切物理效果。

完成后保存修改。

(1)保存场景。在Hierarchy视图中可见当前场景的名称为“SampleScene”,可以在“File”菜单中选择“Save Scenes”保存场景;也可以在“File”菜单中选择“Save Scenes as”,修改场景名称。

(2)保存项目。在“File”菜单中选择“Save Project”。

4.添加材质

再制作一些有颜色的纹理,并将纹理应用到物体上,给场景增加一点颜色。

(1)在Project视图中,选择“Assets”文件夹,单击鼠标右键,选择“Create”→“Folder”,创建新文件夹,命名为“Materials”。

(2)选中Materials文件夹,单击鼠标右键,选择“Create”→“Material”,创建新材质,命名为“Red”。

(3)在Inspector视图中,点击“Albedo”右边的白色矩形打开一个Color窗口,选择红色(255,0,0),关闭Color窗口。如图8-26所示。

(4)在Project视图中选中红色材质球,用鼠标拖放到Hierarchy视图中的球体Sphere上,球体变成了红色。

(5)同理,制作一个蓝色的材质,并将蓝色材质赋予立方体Cube。

(6)保存场景和项目。单击Scene右边的“Game”标签,窗口变成Game(游戏视图),用来预览效果。单击“Play”按钮,游戏开始运行,如图8-27。再单击Play按钮,停止运行。

5.添加照片

在计算机图形学中,映射到物体上的图片被称为纹理。下面将图像文件添加到项目中作为场景的背景。

图8-26 创建红色材质球

图8-27 添加颜色后的场景

(1)在场景中添加一个平面,命名为“PhotoPlane”。

(2)点击“Inspector”视图中“Transform”面板的齿轮按钮,选择“Reset”,重置这个平面的变换值。

(3)设置“Rotation”中“Z”值为“-90”,让它绕着Z轴旋转90°。平面竖起来与地平面垂直。再设置“Rotation”中“Y”值为“90”,让它绕着Y轴旋转90°。

(4)设置“Position”的“Y”值、“Z”值均为“5”,将PhotoPlane平面移动到最后面,并且位于地平面上。

(5)在“Project”视图中,创建“Textures”文件夹。

(6)在“Textures”文件夹上单击鼠标右键,选择“Import New Asset…”导入一张图片。

(7)将图片从“Project”视图拖放到“Hierarchy”视图中的PhotoPlane上面。这时,图片看上去逆时针旋转了90°。选中“PhotoPlane”,让它绕X轴旋转90°。

(8)图片本身是矩形,而纹理是正方形,图片的高除以宽的值是0.75,因此,设置PhotoPlane的“Scale”中的“Z”值为“0.75”。使得图片显示比例正常。

(9)设置PhotoPlane的“Position”中的“Y”值为“3.5”,使得PhotoPlane正好位于地平面的上面。

(10)因为场景中模糊的光影响了图片,图片使得看起来有点褪色。需要将光去掉,选中PhotoPlane,在“Inspector”视图的“Shader”组件中,可以看到目前的值为“Standard”,点击下拉列表,选择“Unlit”→“Texture”。

(11)同样,导入一张图片,把图片拖放到GroundPlane平面上。单击“Game”标签,单击“Play”按钮,场景如图8-28所示。并且因为给球体添加了刚体组件,使用了重力,所以球体会落下来。

图8-28 运行的场景

6.添加第三人称角色

现在添加一个虚拟角色到场景中,为创建虚拟现实应用增加内容。Unity的标准资源Characters包中有一个第三人称角色,现在将它添加到场景中。

(1)选择“Assets”菜单中的“Import Package”→“Characters”。

(2)在弹出的“Import Unity Package”对话框中有一个可导入的列表,如图8-29所示。点击“All”按钮选择全部项,再点击“Import”导入所有资源。

图8-29 Import Unity Package

(3)ThirdPersonController是Project视图中的一个预制件(预置资源),可以在“Assets”→“Standard Assets”→“Characters”→“ThirdPersonCharacter”→“Prefabs”文件夹中找到。拖动该预制件放到场景中,把它的Position设置为(-2,0,-2)。其中,只要设置Y=0,让第三人称角色站在地面上,X值和Z值可以自行设置。现在的场景如图8-30所示。

(4)试试效果,点击工具栏上的Play按钮来运行,使用键盘上的4个方向键或者W、A、S、D键让第三人称角色跑动起来。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈