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

时间:2024-05-18 15:29:59

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

本系列博客链接:传送门

 

注意:

  • Amplify Impostors不支持:SkinnedMesh
  • 建议在Unity2018.4进行。

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

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

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

 

 

一、LOD介绍

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

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

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

 

 

二、AmplifyImpostors介绍

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

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

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

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

 

 

三、AmplifyImpostors 属性讲解

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

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

Billboard Mesh: 

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

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

Bake Preset

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

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

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

全局设置:

Edit--Preference--Impostors:

Amplify Impostors丨 从零学习 Amplify 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创建

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

 

3、 选择对应渲染模式

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

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

1)Spherical

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

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

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

b、BakeImpostor,生成。

图片不清晰解决办法:

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

 

2)Octahedron

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

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

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

 

3) HemiOctahedron

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

 

Enjoy!