咨询电话:400-810-1418服务与监督电话:400-810-1418转接2
  • 相关推荐
  • U3D实时渲染教程之角色头发各向异性表达(上)
  • 引擎里面常见的渲染方式分享
  • 如何用mapbox几分钟做一张分析图?
  • Unity制作魔法火焰特效图文教程
  • Unity Shader视差遮蔽映射与局部差异导数函数
  • 如何用Unity制作逼真的自然场景
  • 如何利用Unity3D打造虚拟现实场景?

    发布时间:2020-08-31 16:52:57

    最近对虚拟现实得议论特别多。特别是在模拟实验室,模拟商城方面已经开始尝试了。那么,关于虚拟现实具体是如何实现呢?今天就带给大家使用游戏引擎Unity来制作虚拟现实得制作流程,很感谢火星的平台和大家分享。

    下面是参考和完成后的效果。

    如何利用Unity3D打造虚拟现实场景?

    如何利用Unity3D打造虚拟现实场景?

    如何利用Unity3D打造虚拟现实场景?

    接下来我就分享一下整个场景的制作过程。


    1:参考目标分析

    看到这张图后我们先进行分析,从图中把我们需要单独制作的模型提取出来,为了节省时间,能用素材的尽量用素材,经过我们的分析我们得到以下几点:

    1.这是一个类似教室的场景;

    2.工业设备是场景中主要的特点 需要我们单独制作;

    3.房间的结构需要我们单独制作;

    4.电脑桌,电脑,椅子以及其他场景元素没有显著特点,可以用素材。


    2:流程制作

    制作过程一共分为以下几个步骤:

    1. 模型材质等资产制作;

    2. Unity场景搭建;

    3. Unity灯光布置;

    4. Unity后期处理;

    5. 视频录制。

    其中材质部分比较简单,我这里就不做的概述了,主要为大家分享别的步骤的一个思路。

    1.型制作与材质

    如何利用Unity3D打造虚拟现实场景?

    首先我们制作第一部分工业设备,也是有一个参考,如上图所示。

     看到这张图我们也是首先对他进行分析,我们应该制作哪些部分:

    1. 主体的蓝色框架;

    2. 四种大小不同的铁罐;

    3. 管道做个直的和弯的用来拼搭;

    4. 一个金属直接口和两种阀门;

    5. 一种罐子腿;

    6. 八个罐子的贴标;

    7. 一个电表箱。

    然后我们就先制作基础模型,把所有的模型先搭建出来,确定一下比例。如何利用Unity3D打造虚拟现实场景?

    如何利用Unity3D打造虚拟现实场景?

    确保比例无碍后我们,就开始制作我们分析后得来的几个部分的高模,然后进行烘焙和制作贴图,这个部分就是普通的PBR流程,加之模型比较简单,我这里就不做讲解了,不过有几个小技巧我在这里给大家分享一下:

    1. 模型很多都是焊接的效果,所以我们直接丢ZB里Dynemesh一下然后减面输出即可:

    如何利用Unity3D打造虚拟现实场景?

    2. 圆柱形物体为了防止烘焙出现波浪纹,我们可以直接给底模倒角当作高模进行烘焙:

    如何利用Unity3D打造虚拟现实场景?

    3. 一些简单的小细节我们可以用Quixel NDO进行制作:

    如何利用Unity3D打造虚拟现实场景?

    如何利用Unity3D打造虚拟现实场景?

    法线贴图制作完成后,我们把模型组合起来然后再SP里面烘焙AO、CAV等贴图然后制作材质贴图:

    如何利用Unity3D打造虚拟现实场景?

    接着我们制作第二部分房间模型。

    房间模型的制作比较简单,按照图中的样式,来确定好比例和结构。做好地板与天花板,然后挖几个窗户洞,顺便做个窗户框和玻璃,都是简单的基础模型就行。

    如何利用Unity3D打造虚拟现实场景?

    然后是对房间模型进行UV进行拆分,因为我们墙面也是有地砖,为了保证地砖的连续性 墙体的UV我们要保证是完全对齐,该打直的地方一定要打直,不能有扭曲,白墙部分的UV就无所谓了。因为我们不给墙面做贴图,我们直接用unity做个白色的材质放上去就行了。墙面我们是要做一半的墙砖材质,所以我们展开UV后,直接在正交视图下对墙面进行切割,区分两种材质出来。

    013.png

    模型准备好后我们就导入unity进行搭建。

    2.unity场景搭建

    1. 模型导入unity后我们先丢入场景中:

    如何利用Unity3D打造虚拟现实场景?

    然后我们为房间制作材质,一共两种材质,一个是瓷砖一个是白墙,我们先用我们找的瓷砖的素材贴图应用到模型上 ,因为有地面、墙面、天花板三种模型,所以我们复制出三个瓷砖材质出来分别控制不同模型的贴图效果:

    如何利用Unity3D打造虚拟现实场景?

    白墙的材质我们直接创建材质球然后给个白色然后降低下光滑度就可以:

    如何利用Unity3D打造虚拟现实场景?

    包括后面的我们门窗的材质,我们准备做个深色的,我们都可以直接创建个材质球然后控制金属度和粗糙度,颜色使用纯色就行,然后我们对整个场景进行摆放,包括利用一些我们找到的素材:

    如何利用Unity3D打造虚拟现实场景?

    3.Unity灯光布置

    太阳光并没有很好的照亮室内,室内的物体缺乏体积感。所以我在房间里摆放了了两盏聚光灯和几个点光源:

     如何利用Unity3D打造虚拟现实场景?

    然后,我们发现场景里很光滑的物体并没有很好的反射周围的环境,而是直接反射外面的天空球。这个效果看着就很假,所以我们在场景里添加个反射球[Reflection Probe]。

    反射球有三种模式:分别是自定义,烘焙,和实时。

    自定义就是使用我们自己的一个HDR;烘焙则是烘焙我们周边的场景环境 ,不过不会实时变换但是消耗低;实时反射顾名思义,反之消耗高,因为我不是做项目,所以我直接选择了实时的反射。

    如何利用Unity3D打造虚拟现实场景?

    现在这个场景的反射正确了,但是我觉得环境还是有一点偏蓝色,这是因为环境光的来源是天空盒,天空盒是偏蓝色的,这并不是我想要的,所以我决定修改一下:

    如何利用Unity3D打造虚拟现实场景?

    我们把Source改成color然后把环境颜色改成我们想要的:

    如何利用Unity3D打造虚拟现实场景?

    目前场景风格比较统一,是我们想要的,然后我们添加一个后期处理的效果,主要是添加一个环境光遮蔽。

    4.Unity后期处理

    后期处理如果是2018以上的版本可以在创建项目时导入模板中有,也可以在项目中Window/package manager 选择然后导入:

    如何利用Unity3D打造虚拟现实场景?

    2018以下的版本自行下载然后安装到项目目录。

    首先在相机里添加Post-processing Layer组件如图:

    如何利用Unity3D打造虚拟现实场景?

    Trigger触发器:默认为相机本身,如果有其他需要可以设置其他物体。例如某块区域内,进入后触发相应特效。

    Layer层级:为Volume混合考虑设计的遮罩层,它可以让您进行Volume过滤,始终将自己的Volume放置在专用的层中而不是默认设置,默认情况下层设置为Nothing,所以不要忘记改变它否则不会产生效果。这里我随便的新建了一个layer层命名为了asd,待会添加Post-processing Volume,我们把他挂载物体的层级也选为asd 这样就会有效果,这里我们是把他挂在主摄像机上面的:

    如何利用Unity3D打造虚拟现实场景?

    添加Post-processing Volume后我们可以在Add effect里面选择添加我们需要的后期效果。

    这里我们添加了AO,色彩分级,和辉光。然后我们通过调整各项参数对场景进行一个后期处理,然后打开game视口进行查看:

    如何利用Unity3D打造虚拟现实场景?

    这里简述一下自带的效果:

    Ambient Occlusion 环境光遮罩:用来使像是世界中难以照射到光线的角落,交叉点等地方变暗。

    Anti aliasing 抗锯齿:抗锯齿功能提供的算法可以使锯齿感明显的边缘更加平滑,虽然锯齿感减少,却会使物体变得模糊。

    Auto Exposure 自动曝光:模拟人眼适应各种黑暗与光亮的效果,比如从黑暗的隧道出来时,人眼会有短暂时间的炫目。

    Bloom 辉光:最常用的Post-process特效之一,效果和他的名字一样,提供图像从明亮边缘扩散的效果,Dirtiness可以模拟污渍和灰尘来衍生Bloom特效,在FPS游戏中常见这类效果。

    Chromatic Aberration 色差:在边界产生一些颜色条纹,模拟相机镜头为颜色没有汇聚的缺陷行为来增加艺术性的效果,可以用来模拟中毒特效。

    Color Grading 颜色分级:另一个经常用到的特效,用于校正镜头中的颜色与亮度,来实现电影或海报效果,可以理解为手机中的何种滤镜。需要一定的专业基础才能玩转,但是通过调整Tonemapping(色调映射)的mod可以快速实现一些效果。

    Deferred Fog 延时雾效:雾是根据与相机的距离将颜色叠加到对象上的效果。这用于模拟室外环境中的雾或雾,并且通常还用于在摄像机的远剪裁平面向前移动以提高性能时隐藏对象的剪裁。

    Depth of Field 景深:常用特效之一,模拟相机镜头的对焦效果而产生模糊感。模糊不仅给出了关于物体距离的视觉提示,而且还引入了散景,这是令人愉悦的视觉伪像。

    Grain 颗粒效果:模拟老电影屏幕上的颗粒感,用于模拟老式显像设备。

    Lens Distortion 镜头失真:此效果通过扭曲或不失真最终渲染图片来模拟镜头的形状。

    Motion Blur 运动模糊:“运动模糊”是一种常见的后处理效果,可以模拟当相机拍摄的对象移动得比相机的曝光时间快时图像的模糊。运动模糊用于在大多数类型的游戏中产生微妙的效果,但在一些类型中被夸大,例如赛车游戏。

    Screen space Reflections 屏幕空间反射:屏幕空间反射是一种重用屏幕空间数据来计算反射的技术。它通常用于产生更微妙的反射,例如在潮湿的地板表面或水坑中。

    Vignette 晕影:在摄影中,晕影是用于与中心相比朝向图像边缘变暗和/或去饱和的术语。经常用于艺术效果,例如将焦点绘制到图像的中心。

    5.视频录制

    视频录制主要使用的就是Tinmeline&Cinemachine,Cinemachine是一个插件,可以直接在商店里免费下载安装,安装后菜单栏会增加一个Cinemachine的菜单:

    如何利用Unity3D打造虚拟现实场景?

    然后我们选择我们刚才添加后期脚本的摄像机,再添加一个Cinemachine的脚本:

    如何利用Unity3D打造虚拟现实场景?

    然后我们创建一个虚拟相机,这时候虚拟相机显示的内容就是刚才我们主摄像机的内容,然后对这个相机K一个路径动画,因为我准备做三个镜头所以我创建了三个虚拟相机:

    028.png

    K动画我们准备使用时间线工具,我们先创建一个GameObject,改名成Tinmeline。然后创建一个时间线并命名保存:

    如何利用Unity3D打造虚拟现实场景?

    然后我们把这两个东西移除掉,因为我们并不是给这个对象创建动画,所以我们删除掉就可以。

     如何利用Unity3D打造虚拟现实场景?

    然后把我们的三个虚拟相机丢进来并设置为添加动画事件:

    如何利用Unity3D打造虚拟现实场景?

    然后就是简单的K一个路径动画,因为我们是三个虚拟相机所以我们K三段,然后我们把主摄像机丢进来设置为Add Cinemachine Shot。然后把三个虚拟相机拖进去按序排放好:

    如何利用Unity3D打造虚拟现实场景?

    点击运行就可以查看我们的视频效果了。

    最后就可以进行视频的输出了,应用商店搜索Recorder下载这个视频录制的软件然后打开:

    如何利用Unity3D打造虚拟现实场景?

    然后对这个视频进行一个设置,包括格式,帧率,质量,储存地址等。点击Add New Recorders添加一个Movie,然后点击开始录制这时候Game会自己运行起来然后完成视频的录制。

    如何利用Unity3D打造虚拟现实场景?