Amplify Impostors丨 从零学习 Amplify Impostors 减面教程

提示:选中右侧目录,可快速找到所需内容

本系列博客链接:传送门

注意:

  • Amplify Impostors不支持:SkinnedMesh
  • 切换平台可能导致Unity崩溃,且切换不过去。(解决方法:Unity直接打开,需要删掉插件,切换完再导入;Unity Hub打开,可关掉当前Unity,在Hub切换平台打开。)
  • 建议在Unity2018.4进行。

【笔者在2017做测试,BillboardMesh下的预览图始终是透明,渲染出的图片都是黑的和白的。换成2018后正常显示。】

     2017

     2018

  • 建议在PC平台完成优化。(WebGL平台可能无法识别模型边界,无法优化,打开BillboardMesh后会出现下面的情况)

一、LOD介绍

根据摄像机距离目标的远近不同,显示不同精度的模型。下方的两套LOD模型都存在内存里,虽然会增加内存消耗,但会减少渲染负担。

我们可以看到离模型最近时,显示左边的树,10.5k面,离远时显示右边树,7.6k面。

   

二、AmplifyImpostors介绍

将一个模型各个面的显示信息保存到一张图片里,根据摄像机距离不同显示完整的模型,还是图片

LOD显示的都是模型,AmplifyImpostors显示模型和图片。

下图左侧树是原模型,右侧是 AmplifyImpostors 给这棵树创建的图片。我们可以看到原树面数为5.9k,优化后图片为22。

三、AmplifyImpostors 属性讲解

  • ImpostorAsset:资源文件
  • LOD Group:添加上该模型的LOD组件后,可对该LOD组件信息进行调整
  • Bake Type:渲染模型(下文讲解)
  • TextureSize:生成的贴图的尺寸。值越大,生成的优化物分辨率越高。
  • Pixel Padding:增加了每个成像画面边界的像素,从而避免在mipmap过程中可能产生的干扰。值为32意味着图片每个方向上会扩大32个像素。

Billboard Mesh: 

  • Max Vertices[4,16] :用来定义左侧最大顶点的数量,最后顶点数量不会超过它。
  • Outline Tolerance[0,1]:通过提高本参数或提高顶点数量,将使得最后生成的形状会更紧密贴合物件形状。参数被设置为0将产生一个包裹整个物体的形状,其形状更松散和简单。然而设置值为1,则将生成的形状更贴合物体(需要同时设置一个合理的顶点数量)。
  • Normal Scale [0,1]:这个值根据物体画面中形状的法线来设置顶点位置,将值设为最大,将创建一个矩形。当形成矩形时,多余的顶点将被去除。

Bake Preset

预设的烘焙参数,也可自己点new,重新赋值

  • Suffix:贴图的后缀名字
  • Channels:通道。有RGBA、RGB
  • sRGB:是否包含sRGB
  • Compression:压缩模式。有None、Low、Normal、High
  • Format:格式。有PNG、TGA

全局设置:

Edit--Preference--Impostors:

New Impostor Default Path:创建Impostor时默认的保存路径。

  • RelativeToPrefab,点+时打开Asset路径。
  • Global,点+时弹出 Relative to Prefab Floder 设置的文件夹路径。

Texture Importer Settings:如果改变贴图材质大小的话,是否要询问一遍。

Create LODGroup if not present:勾选将会自动为其创建添加了LOD Group组件的父物体(只在object没有添加的LOD Group组件时才会起效)。

Suffixes:贴图的后缀名字

四、AmplifyImpostors 优化过程

1、导入模型,添加组件

给模型添加 AmplifyImpostor 组件

2、给该模型创建资源文件

a、可点+创建,创建完的资源文件自动赋值给ImpostorAsset

b、可在Assets右键Create--AmplifyImpostorAsset创建

3、 选择对应渲染模式

AmplifyImpostors 有3中渲染模式,根据需要选择相应的模式

1)Spherical

效果:转动摄像头观察目标时,目标会弹动(因为该目标共生成了AxisFrames【16】个面。要根据摄像头看它的位置不同,切换成相应朝向的图片)

a、BakeType:Spherical,TextureSize:4096(笔者用8192测试,发现该插件会卡住,期待后续解决)

b、BakeImpostor,生成。

图片不清晰解决办法:

  • 可发现上面我的图不清晰,可通过调高 TextureSize 生成贴图的尺寸,增加分辨率
  • 可通过减少生成的贴图面数 AxisFrames ,达到在固定贴图大小下,减少贴图内的面数,来提高每个面的分辨率的目的。

2)Octahedron

效果:相对第一种,提高了对摄像机旋转的支持。在远处观察时,生成的模型没有明显的抖动效果。

缺点是不能放近了看,放近了看会有明显的重叠效果。(但我们LOD都是远处显示这个模型,近处都用真是模型。刚好解决了这个问题。)

3) HemiOctahedron

效果:该模式只渲染模型正面(不渲染反面),渲染完从正面看非常好(因为只渲染一半,精度提高了),但从反面看这个模型,就穿帮了。

4、调整LOD

a、LOD重新计算

选择父物体的 LODGroup 组件,点击 Recalculate Bounds 重新计算边界。

重新结算边界:解决摄像头拖很远,目标物才切换LOD。即使LOD1(优化物)的比例占99%(LOD0真实物、LOD1优化物),摄像头仍需拖很远才能切换到LOD1(下图所示)。

b、调整LOD比例

可拖动这个边界,根据需要,调整优化物在LOD中占的比例。这是小物体,我当前调的是25%。大物体可能调到40%或更高。

c、建议将此制作好的LOD优化物制成预制体

当单纯觉得LOD不合适时,或者因为调整AmplifyImpostors属性,使当前LOD不合适时,

你只需调整预制体的LOD值,便可更改整个场景中的所有该模型LOD值。

避免了一个个调的烦恼~

到此为止完成这个物体的优化!

喜欢请点个赞~

Enjoy!

发布了329 篇原创文章 · 获赞 85 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/weixin_38239050/article/details/104891781