《Unity虚拟现实开发实战》——第2章,第2.3节测量工具

2.3测量工具
我们已经创建了一个Unity场景,添加了一些基础3D物体,并且创建了一些基本的纹理,其中包括一张照片。然后,我们学习在Unity的3D世界空间中移动和变换对象。问题是场景中物体的实际大小并不是一直都那么明显,应该放大它们,或者用Perspective和Orthographic视图来对比,或用其他功能来影响其外观尺寸。我们来看看处理其比例的几种方式。

2.3.1随手保留一个单位立方体
我建议随手保留一个单位立方体在Hierarchy面板中,在不需要的时候禁用它(反选Inspector面板左上边的复选框)就行。它可以当成一个测量尺或者测量仪用。我用它来预估对象的实际尺寸、对象间的距离、高度和海拔等。
创建一个单位立方体,命名为Unit Cube,随便放在一个不碍事的位置,比如Position (-2, 0.5, -2)。
还可以添加一个刻度尺来测量,让纹理精确到其边缘。
暂时把它设置为可用状态。

2.3.2使用网格投影器
我想向你们介绍一下网格投影器(Grid Projector),它是一个很方便的工具,用于在任何Unity场景中可视化缩放。它是Effects包中Standard Assets的其中之一,所以需要把它导入项目中,步骤如下:

1.在主菜单栏中选择Assets,再选择Import Package | Effects。

  1. Import对话框会显示出来,包括所有可导入的列表,只要你愿意,可以点击All选择Import导入所有资源,但是我们只需要Projector文件夹,所以把它导入即可。
    现在添加一个Projector到场景中,步骤如下:

1.在Project面板中找到Grid Projector预制件,定位到Assets/Standard Assets/Effects/Projectors/Prefabs 文件夹。
2.拖动一份Grid Projector的复本到场景中,把Position的Y值设置成5,让它在地平面之上。
默认的Grid Projector面朝下(Rotation的X=90),这也通常是我们所期待的。在Scene视图中,可以看到正交投影射线。有一篇Unity文档(http://docs.unity3d.com/Manual/class-Projector.html)是这样解释的:
投影器可以把材质投影到所有与其视锥体相交的物体上。
意思是说,与投影射线相交的物体都会得到投影后的材质。
在这个例子中,如你所愿,投影器的材质(名字也叫GridProjector)有一个“Grid”纹理,它看起来简直像一个十字准星(Assets/.../Projectors/Textures/Grid,你自己看)。
默认情况下,投影器像一束光一样照耀在网格图案表面。在我们的场景中,GroundPlane平面是明亮的,所以网格不会显示出来。现在我们按如下步骤操作:
在Hierarchy面板中选中网格投影器,把GridProjector材质组件放进Inspector面板,再把它的Shader从Hidden/Projector Light 改成Hidden/Projector Multiply。
它现在会在一片黑色上绘制白色网格线,要想得到更好的效果,把场景视图改成Top的视图朝向,可按如下操作:
1.点击View面板中场景视图小部件中右上方的绿色的Y锥形。
2.点击小部件中的小立方体,把Perspective变成Orthographic(无变形)视图。
现在你可以从上向下看到地平面上,选中网格投影器(确认左上方工具栏的第二个图标平移工具是激活状态),慢慢用小部件的平移工具移动投影器,网格线也随之移动,你可以把它放在Position(-2.5,5,-0.5) 的位置上以避免投影器挡着光线。
现在这个内置的参考网格可能会让人感到混乱,所以把它关了吧:
1.在Scene视图面板中,点击Gizmos(找这个名字的菜单,有控制你的所有小部件的选项),反选Show Grid。
好了,看到了吧?默认的网格尺寸是单位立方体的边长的一半。在Inspector中,投影器组件的Orthographic的尺寸值是0.25。
2.将投影器中Orthographic的尺寸值从0.25改成0.5。
3.保存场景和项目。
现在我们就可以随时把一个单位的网格用于场景中了。
让我们保留这个状态一会儿,因为它看起来挺酷的,如下图所示:

2.3.3测量Ethan角色
一个虚拟角色有多大?Unity中有一个叫作Ethan的第三人称角色,我们把他添加到场景中,他是Characters包的Standard Assets之一,所以我们需要将其导入项目。
按如下步骤操作:

1.在主菜单栏中选择Assets,然后选择Package | Characters。
2.在弹出的Import对话框中,有一个可导入列表。点击All再点击Import。ThirdPerson-Controller是Project面板中的一个预制件(预置资源),可以在Assets/Standard Assets/Characters/ThirdPersonCharacter/Prefabs 文件夹中找到。
3.拖一个ThirdPersonController的复本到场景中,X和Z的位置值无所谓,但是要把Y值设置成0,这样名字叫作Ethan的角色就站在地面上了,我设置的坐标值为(2.2, 0, 0.75)。
我们试试效果:
1.点击在Unity窗口顶部中间的Play图标运行游戏。使用W、A、S、D键来移动。跑,Ethan!跑!
2.再次点击Play图标来停止游戏,进入编辑模式。
所以,Ethan有多高?根据Google搜索的结果,人类中男性的平均身高是1.68m(在美国成年男性平均身高是1.77m),我们来看看Ethan有多高:
使用平移工具小部件滑动单位立方体到接近Ethan处。看出来了,他大概身高是单位立方体高度的1.6倍。
调整立方体的高度值(Y)到1.6,再把位置值Y调整到0.8。
我们再来看看,如下图所示,他身高数值不到1.6,所以Ethan比平均身高要矮一点(除非你算上他的发尖)。滑动视图,我看到的是Ethan的右脸,然后再调整立方体的视平线大约是1.4m。记录一下:
1.把单位立方体恢复到Scale(1, 1, 1)和 Position(-2, 0.5, -2)。
2.保存场景和项目。
下图是1.6个单位高度的立方体与Ethan的比较:

时间: 2024-09-21 00:39:11

《Unity虚拟现实开发实战》——第2章,第2.3节测量工具的相关文章

《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

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

2.6节小结本章中,我们构建了一个简单的透视图,也熟悉了Unity的编辑器,还学习了在设计场景时世界比例尺的重要性,我们还设置了一些游戏中的工具来帮助我们在后续章节中处理比例和定位.最后,我们进入了Blender,用UV纹理构建了一个模型,并且了解了一些把模型导入到Unity时可能遇到的问题.下一章中,我们将用虚拟现实摄像机设置一个项目,然后构建并在你的VR头盔中运行.