《Unity虚拟现实开发实战》——第2章,第2.5节Blender简介

简介:

本节书摘来自华章出版社《Unity虚拟现实开发实战》一书中的第2章,第2.5节Blender简介,作者[美] 乔纳森·林诺维斯,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5Blender简介
打开Blender程序,关闭欢迎界面后呈现的就是Blender编辑器了,与下面的截图差不多:


98411c0a0b9aee6d58cbeb0bbb91a8ec72ced9d8

同Unity一样,Blender包括一些不重叠的窗口,可以按喜好自定义这些窗口的布局。但是,Blender的界面更复杂,从某方面来说因为它集成了若干个不同的编辑器,而这些编辑器可以同时在各自的面板中打开。
改变默认视图的大小很有用,因为上面那张图中包含5个不同的编辑器。
最明显的编辑器是那个大的3D View,我已经用红色矩形高亮显示了,在这个视图中可以察看、移动和组织Blender场景中的对象。
其余4个打开的编辑器是:
Info editor,会发现它沿着程序顶部的边缘,其中包含程序的全局菜单和信息。
Timeline editor,在程序的下底边上,用于动画。
Outliner editor,在右上方,场景中所有对象的层级视图都在这里。
Properties editor,在Outliner的右下方,是一个很有用的面板,可以察看和修改场景中对象的多个属性。
每个编辑器也可以有多个面板,我们来看看3D视图编辑器:
中间的大片区域是3D Viewport,可以察看、移动和组织Blender场景中的对象。
3D Viewport的下方是编辑器的Header,它虽然在下方我们却叫它Header。这个Header是一行菜单和工具栏,提供了很多控制编辑器的功能,包括选择器、编辑模式、变换操作和层次管理。
左边的是Tool Shelf,包括各种编辑工具,可以用于当前选中对象、放进选项卡,Tool Shelf可以通过滑动其边缘或者按T键来切换开关状态。
3D视角也有一个Properties面板,它默认可能是隐藏的,可以按N键来切换开关状态,它提供了当前选中对象的属性设置。
在接下来的介绍中,会要求你改变3D视图编辑器的Interaction Mode,变成Edit Mode和Texture Paint模式之间的值,可以在Header中选择,如下图所示:


6b609b7aff30fd1564f3636e2f3f8df73614ec7a

其他编辑器也有Header面板,Info editor(程序顶部)本身就是一个Header!Outliner和Properties编辑器(右边)的Header在自身面板的顶部而不是在底部。
调整过布局后,看起来就不是那么拥挤和混乱了。
Properties编辑器有一长溜图标,像是选项卡一样,要选择面板中的其余属性。鼠标悬停在图标上(这里其他的UI部件也都一样)就会显示出一个提示语告诉你它的功能,后面的(后续章节中用到它的时候)图片中可以看到。
Blender的布局非常灵活,你甚至可以把一个面板从一个编辑器变成另外一个,每个Header的最左边是Editor Type选择器。点击它就可以看到所有选项。
除了Blender界面上可以点击东西之外,还可以用键盘快捷键执行命令,如果忘了在哪找到某个功能,可以敲空格键再输入最接近你要找的命令名称,它可能就会弹出来!
下图是Blender中的Editor Type选择器:

7aa80ebf1d542e396510f0669ee729422d00a3ed

2.5.1立方体
现在,我们来在Blender中构建一个单位立方体。
默认的场景中可能已经有物体了,包括一个立方体、摄像机和一个光源,如同前面在Blender窗口中显示的那样。(你的初始设置可能会不同,因为它是可配置的。)
如果初始场景中没有单位立方体,那么就像下面这样创建一个:
1.删除场景中的任何东西以确保场景是空的(右键选择,X键删除)。
2.用Shift+S (打开Snap选项列表)| Cursor To Center把3D光标的原点设置成 (0, 0, 0)。
3.在左边的Tool Shelf面板中,选择Create选项卡,再在Mesh下选择Cube 以添加一个立方体。
好了,我们现在进度一样了。
注意在Blender中,参考网格延伸了x轴和y轴,z轴朝上(不像Unity,y轴朝上)。
还有,注意Blender中默认的立方体的大小是 (2, 2, 2)。
而我们需要的是一个单位立方体立在基准面的原点之上,就像这样操作吧:
1.用N键打开Properties面板。
2.选择Transform | Scale 把X,Y,Z设置成 (0.5, 0.5, 0.5)。
3.选择Transform | Location把Z设置成 0.5。
4.再按N键隐藏面板。
5.可以用鼠标滚轮来缩放。
我们还要确保当前渲染器是Blender Render(在程序窗口顶部中间的Info 编辑器中的下拉选项里)。
2.5.2UV纹理图片
接下来,我们创建一张UV纹理图片:


b227d3594ef1399c65f246e782a1dac5c0edfac7
  1. 找到Edit Mode,在底部的Header栏中选择Interaction Mode选择器。
  2. 用全选(双击A键)确保所有表面都被选中。
  3. 在左边的Tool Shelf面板中,选择Shading/UVs选项卡。
  4. 在UV Mapping下方点击Unwrap,在下拉列表中选择Smart UV Project,接受默认值,点击OK(结果见下图,也能看到光皮的立方体长什么样)。
  5. 现在再用底部的Header栏把Interaction Mode变成Texture Paint模式。
  6. 我们还需要为我们的材质定义一个绘制槽,点击Add Paint Slot,选择Diffuse Color,命名为CubeFaces,点击OK。
    我们现在开始直接在立方体上绘制,首先画前面,步骤如下:
  7. 制作一个小一点的画刷。在左边的Tool Shelf面板中,Tools选项卡下选择Brush | Radius,然后输入8 px。
  8. 可能在正交视图下更容易操作。在底部菜单栏中选择View | View Persp/Ortho。
  9. 然后选择View | Front。
  10. 如果需要的话你可以用鼠标滚轮来缩放大小。
  11. 用你最好的书法水平用鼠标左键写上单词“Front”。
  12. 再在背面做同样的操作。
  13. 在底部的菜单栏中选择View | Back再用右键选择这一面。
  14. 好好写一个“Back”。
    再在左、右、上、下的面上重复上面的操作,如果发生不能画的情况,确认是否选中了当前表面,试试用右键在这个面上重新选择,结果应该差不多像下面这样(同时在3D View编辑器中用正交透视和UV/Image Editor):

现在,我们保存图片,然后设置其属性,步骤如下:

  1. 使用3D View编辑器底部Header的最左边的选择器,把当前的Editor Type改成UV/Image Editor。
  2. 点击Browse Image to be linked选择器图标。(朝着+图标的左边),再在列表中选择 CubeFaces。
  3. 底部菜单栏的Image 菜单项现在有一个星号(Image*)表示有一张未保存的图片,点击它,选择Save As Image,保存成CubeFaces.png,使用一个Unity工程之外的文件夹。
  4. 在左边,在Properties编辑器的面板上,在其Header中找到一长排图标,选择Texture(倒数第三个),如果面板不够宽的话它可能会不显示,你可以用鼠标下滑来显示,如下图所示:

    a0c17c1ce9830386fbd8d6ad1300ad8286e46114

    1. 在Texture属性中,把Type变成Image or Movie。
    2. 在属性的Image组中,点击Browse Image to be linked选择器图标(见下图)选择CubeFaces。

      660b734624b272f1182e27c98c678135eb29299a

      1. 你应该在Preview窗口中可以看到带有标签的纹理图片了。
        不错!我们保存这个Blender模型吧,步骤如下:
      2. 在顶部菜单栏中的Info编辑器中选择File,再点击Save(或按Ctrl+S)。
      3. 使用之前保存纹理图片的文件夹。
      4. 命名为UprightCube.blend,点击Save Blender File。
        我们现在应该在文件夹中有两个文件了,UprightCube.blend和CubeFaces.png。我使用了一个在Unity项目根目录中叫作Blender的文件夹。注意,也可以导出成其他标准格式,比如FBX(Filmbox的简称)就可作为一种选择。

      太棒了,完成这么多了。没弄懂也没关系,Blender可能比较难,但是Unity需要模型,你可以一直都从Unity的Asset Store和3D模型分享网站中下载其他人的模型。但不要做一个没用的人,学习自己做自己的模型吧。哈哈!我说真的,这是一个很好的学习起点。
      2.5.3导入Unity
      回到Unity,我们要导入刚才那两个文件—UprightCube.blend和CubeFaces.png,一个一个来,步骤如下:

      1. 在Project面板中,选择Assets根目录,定位到Create | Folder,重命名这个文件夹为Models。
      2. 有一个简单的方法导入文件到Unity中,就是从Windows资源管理器(或Mac的Finder)窗口拖拽 .blend文件到Project面板的Assets/Models文件夹,把 .png文件拖拽到Assets/Textures文件夹中(或者也可以用主菜单栏中的Assets | Import New Assets)。
      3. 通过从Assets/Models文件夹,也就是刚才导入Scene视图的地方,把刚才导入的模型UprightCube拖动到场景中。
      4. 把它的坐标值设置成与其他对象远离,我设置的Position值是(2.6, 2.2, -3)。
      5. 从Assets/Textures文件夹中拖动CubeFaces纹理到Scene视图中,停在刚才添加的UprightCube上让它接收这个纹理,然后把松开纹理把放到立方体上。
        这样场景应该看着像下面这样了:

        423a4e006e353c4824ed6f0c3ca1ca616a05d9a8

        2.5.4观察者
        立方体的背面对着我们,这是一个失误吗?其实这是正常的,因为当前视点是朝前看的,那么我们就应该看着立方体的背面。你应该没注意到,Ethan也是这样。而这个立方体看着差不多有一个单位的容积。
        但是,仔细检查一下,在立方体的Inspector面板中,会发现它导入的缩放比例是我们在Blender中给的(0.5, 0.5, 0.5),另外它还有一个X轴的-90°旋转(负90),所以如果我们重置变换值,也就是比例尺为(1, 1, 1),它在我们的世界坐标系中将会是两个单位大小,而且是颠倒的(所以,别重置)。
        不用回到Blender中,稍微操作一下就可以抵消这个旋转值了。
        Blender的默认朝上的方向是Z轴,而Unity是Y轴。所以,导入时X轴-90°的旋转用于调整这个差异。导入的比例可以在对象的Inspector面板的Import Settings中调整。
        比例问题可以通过下面的步骤修复:
        1.在Project面板中,选择我们导入的UprightCube。Inspector面板会显示其Import Settings。

        1. 把Scale Factor的值从1改成0.5。
        2. 点击Apply。
          场景中的立方体现在可以是Scale (1, 1, 1),且可以是一个单位立方体,如我们所愿。
        3. 在Hierarchy中选择UprightCube,把Transform的Sacle值改成 (1, 1, 1)。
          在结束上面这个过程之前,在Hierarchy面板中选择UprightCube并把它拖进Project面板的Assets文件夹中。(你可以考虑建立一个Assets/Prefabs文件夹把文件放进去。)这样就做成了一个可重复使用的预制件,包括纹理图片和所有内容。

        本节中的一些重要练习(除了在Blender学习的那些之外)可以用于任何3D Unity项目,包括虚拟现实项目。正常来说,你应该会导入比立方体要复杂得多的模型,会遇到数据转换、缩放比例、朝向、UV纹理图片等相关的问题让你困惑。如果遇到了,试着把问题分解成小问题,分解成更独立的场景。做一些小的试验来了解程序是如何交换数据的,这对于你理解混杂的参数可能会有所帮助。

相关文章
|
5月前
|
开发框架 数据可视化 前端开发
【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)
【Unity 3D】GameFramework、QFramework框架简介及应用实战(超详细 附源码)
144 0
|
5月前
|
C# 图形学
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
82 0
|
5月前
|
算法 图形学
Unity——DOTween插件使用方法简介
Unity——DOTween插件使用方法简介
246 0
|
5月前
|
算法 图形学
Unity 矩阵简介
Unity 矩阵简介
|
9月前
|
弹性计算 图形学
unity ECS简介
unity ECS简介
712 0
|
数据可视化 图形学
Unity Mecanim 动画系统简介
Unity Mecanim 动画系统简介
93 0
Unity Mecanim 动画系统简介
|
开发工具 图形学
|
图形学 Windows 容器
Unity学习系列一简介
一、简介 Unity的目标是为了提升"依赖注入"的思想,去建立更加松耦合的系统.patterns & practices 小组在那个时候实现DI的方式和我们现在认为的DI有所不同,DI不是单一的可重复使用的容器,而是应该专门用于正在使用它的系统.
1563 0
|
数据可视化 C# 图形学