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

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

同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中选择,如下图所示:

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

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纹理图片:

  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(倒数第三个),如果面板不够宽的话它可能会不显示,你可以用鼠标下滑来显示,如下图所示:

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

  3. 你应该在Preview窗口中可以看到带有标签的纹理图片了。
    不错!我们保存这个Blender模型吧,步骤如下:
  4. 在顶部菜单栏中的Info编辑器中选择File,再点击Save(或按Ctrl+S)。
  5. 使用之前保存纹理图片的文件夹。
  6. 命名为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,一个一个来,步骤如下:
  7. 在Project面板中,选择Assets根目录,定位到Create | Folder,重命名这个文件夹为Models。
  8. 有一个简单的方法导入文件到Unity中,就是从Windows资源管理器(或Mac的Finder)窗口拖拽 .blend文件到Project面板的Assets/Models文件夹,把 .png文件拖拽到Assets/Textures文件夹中(或者也可以用主菜单栏中的Assets | Import New Assets)。
  9. 通过从Assets/Models文件夹,也就是刚才导入Scene视图的地方,把刚才导入的模型UprightCube拖动到场景中。
  10. 把它的坐标值设置成与其他对象远离,我设置的Position值是(2.6, 2.2, -3)。
  11. 从Assets/Textures文件夹中拖动CubeFaces纹理到Scene视图中,停在刚才添加的UprightCube上让它接收这个纹理,然后把松开纹理把放到立方体上。
    这样场景应该看着像下面这样了:

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。
2. 把Scale Factor的值从1改成0.5。
3. 点击Apply。
场景中的立方体现在可以是Scale (1, 1, 1),且可以是一个单位立方体,如我们所愿。
4. 在Hierarchy中选择UprightCube,把Transform的Sacle值改成 (1, 1, 1)。
在结束上面这个过程之前,在Hierarchy面板中选择UprightCube并把它拖进Project面板的Assets文件夹中。(你可以考虑建立一个Assets/Prefabs文件夹把文件放进去。)这样就做成了一个可重复使用的预制件,包括纹理图片和所有内容。
本节中的一些重要练习(除了在Blender学习的那些之外)可以用于任何3D Unity项目,包括虚拟现实项目。正常来说,你应该会导入比立方体要复杂得多的模型,会遇到数据转换、缩放比例、朝向、UV纹理图片等相关的问题让你困惑。如果遇到了,试着把问题分解成小问题,分解成更独立的场景。做一些小的试验来了解程序是如何交换数据的,这对于你理解混杂的参数可能会有所帮助。

时间: 2025-01-23 20:34:08

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

《Unity虚拟现实开发实战》——第2章,第2.1节开始使用Unity

第2章 物体和缩放比例 你应该记得幼年时在学校用鞋盒制作透视图的项目吧,现在让我们用Unity来做这个项目.让我们用几个简单的几何物体来组装第一个场景,在这个过程中,我们会谈及很多关于空间比例尺的内容.在本章中,我们将讨论以下话题: 简单地介绍一下Unity 5 的3D游戏引擎. 用Unity创建一个简单的透视图. 制作一些测量工具,其中包括一个单位立方体和一个网格投影. 使用Blender创建一个带有纹理贴图的立方体,然后把它导入Unity.2.1开始使用Unity 如果你的电脑上还没有安装U

《Unity虚拟现实开发实战》——第3章,第3.4节为Google Cardboard构建项目

3.4为Google Cardboard构建项目 如果你的Google Cardboard的目标平台是Android或iOS,请阅读本节. <适用于Unity的Google Cardboard入门指南>是一个很好的切入点. 3.4.1配置Android环境 如果你从来没在Android环境上开发过,那么需要先下载和安装Android SDK.看一下Unity手册中关于Android SDK安装的文章,还需要安装Android Developer Studio(或至少要安装SDK工具包)和其他相

《Unity虚拟现实开发实战》——第1章,第1.5节本书涵盖的内容

1.5本书涵盖的内容本书采用一个实践性的.基于项目的方法教授使用Unity3D游戏开发引擎开发的虚拟现实细节.你将学习如何使用Unity 5开发可以使用诸如Oculus Rift 和Google Cardboard等设备体验的VR应用.然而,我们还有一个小问题-这项技术发展得太迅速了.当然,这是个甜蜜的负担.实际上,这是个非常棒的问题,除非你是一个项目开发者或者一个关于这项技术的书籍作者!如何做到写一本书,保证在它出版的时候没有过时的内容呢?本书中,我试图提炼出一些基本原理,它们会比任何近期的虚

《Unity虚拟现实开发实战》——第1章,第1.7节VR必备技能

1.7 VR必备技能 本书每章都介绍了一些对于构建属于自己的虚拟现实应用非常重要的新技巧和概念.你可以在本书中学习到以下内容: 空间缩放比例:当构建一个VR体验时,重视3D空间和缩放是很重要的.Unity的1个单位通常等于虚拟世界中的1m. 第一人称控制:有很多种技术可以用来控制你的虚拟角色(第一人称摄像机)的移动,基于凝视的选择器.游戏控制器和头部移动. UI控件:不同于传统的视频游戏(和手机游戏),所有的UI组件都处于VR中的世界坐标系中,而不是屏幕坐标系.我们将探讨如何向用户显示提醒.按钮

《Unity虚拟现实开发实战》——第1章,第1.8节小结

1.8节小结本章中,我们简单地了解了虚拟现实,并且意识到对于不同的人来说它意味着很多事情,并且可以开发出不同的应用.它没有唯一的定义,它在持续变化.但是我们并不孤单,因为很多人都在试图弄明白它.事实上,虚拟现实成为一种新型媒介将在数年后,但或许又用不了十年,它将发挥自身的潜力.VR并不是仅仅用于游戏,它同样可以改变各种不同的应用.我们已经构建了很多个应用.有很多种不同的VR体验,我们将在本书中通过工程进行探索.VR头盔设备可以分为两类:一种需要单独的处理器(例如一台台式PC或主机),它运行一个强

《Unity虚拟现实开发实战》——第3章,第3.5节不依赖于设备的点击器类

3.5不依赖于设备的点击器类在这里我还需要做一件事, 它对于后面的章节非常有帮助.在写本书之时,虚拟现实的输入还不能跨平台,输入设备不一定能适配Unity自己的Input Manager和API.事实上,虚拟现实的输入是一个巨大的话题,值得写一本书去讨论,所以在这里就简言之.作为对史蒂芬•乔布斯的悼念,以及对第一台苹果计算机的复古,我将限制这些项目尽量为一键输入!我们来写一个脚本用于检查键盘.鼠标以及其他设备的任何输入.(我在上一章中已经给出了一个详细的关于Unity脚本的介绍,所以现在请就按照

《Unity虚拟现实开发实战》——第3章,第3.3节为 Oculus Rift构建项目

3.3为 Oculus Rift构建项目如果你有Rift,你应该已经下载了Oculus Runtime.示例应用程序,以及众多优秀的游戏.要为Rift开发,你需要确保Rift在你使用Unity的机器上运行良好.Unity内置支持Oculus Rift,你只需要按下面步骤配置你的Build Settings...: 在主菜单中,打开File | Build Settings.... 如果当前场景没有列出在Scenes In Build,点击Add Current. 在Platform左边的列表中选

《Unity虚拟现实开发实战》——第3章,第3.6节虚拟现实设备的运行原理

3.6虚拟现实设备的运行原理 戴上头盔,体验透视图吧!出现了3D,感受3D,可能你会有一种真正处于这个合成场景中的感觉.我猜想这不是你第一次体验虚拟现实,但是既然我们一起体验了,就让我们花几分钟讨论一下它的原理. 显而易见的是,虚拟现实看起来真的很酷!那它是怎么做到的呢? 沉浸感和存在感这两个词用来描述虚拟现实体验的特性.Holy Grail就是用来增强这两个特性的,让它看起来非常真实,让你忘记了是在虚拟世界中.沉浸感是模拟你身体接收的(视觉的.听觉的.运行的等)感官输入感知的结果,这可以从技术

《Unity虚拟现实开发实战》——第1章,第3.2节创建MeMyselfEye预制件

3.2创建MeMyselfEye预制件开始之前,我们先创建一个对象作为虚拟环境中用户的代理,对后面会有所帮助.而且它可以简化本书中的讨论,因为不同的虚拟现实设备可能会使用不同的摄像机资源文件,就像是你的VR灵魂--我们按照下面的步骤来创建这个对象: 打开Unity并打开上一章中的项目,然后用File | Open Scene打开Diorama场景(或在Project面板中的Assets目录下双击此场景). 在主菜单栏中,点击GameObject | Create Empty. 把此对象重命名为M