模型轻量化攻略:简化不简单,效果更卓越

作者:命运召唤

随着数字化、信息化和智能化的不断推进,三维模型在各个领域的应用越来越广泛,数据更新频率也不断加快,海量而庞大的三维数据对模型存储、屏端展示和管理应用都带来了极大挑战。于是,模型轻量化技术开始在行业间被广泛提及,对模型数据进行"瘦身"的呼声与需求愈发强烈。

什么是模型轻量化?

三维模型轻量化是指对三维模型通过优化处理减少其存储空间和计算资源的占用,从而提高处理速度和系统性能的一种技术,其本质上是对模型进行压缩和简化。在实际应用中,由于三维模型包含大量的顶点、面片和纹理等数据,因此需要借助三维模型轻量化技术来降低数据量,以便更好地适应各种场景和需求。

不同精细度的模型图,来源:知乎文章:《网格简化 QEM 方法详解》

三维模型轻量化包括以下方面:

一、几何简化

几何简化是一种常用的轻量化处理技术,通过减少三维模型中的顶点数量和面片数来降低数据体积。几何简化方法包括以下几种:

(1)顶点减采样: 通过保留模型中的重要顶点,同时删除或合并其他冗余顶点,以降低顶点数量。常用的顶点减采样算法有基于误差度量的简化算法,例如Quadric Error Metric(QEM)和Vertex Clustering等。

(2)网格简化: 通过合并和塌陷网格中的面片,减少面片数目。网格简化方法可以基于网格的曲率、法线或其他特征进行选择性简化,以保持模型的形态特征。

网格简化图,来源:知乎文章:《一文读懂三维模型的"轻量化"》

(3)移除不必要的细节: 模型中可能存在一些细节,但这些细节对于渲染或使用模型并不重要。通过移除这些不必要的细节,可以大大减小模型的大小。比如移除模型内部结构、减少模型之间重叠的面。

二、纹理简化

纹理简化主要针对纹理映射中的纹理图像进行处理。纹理简化可以通过以下几种方法实现:

(1)纹理降采样:通过减少纹理图像的分辨率来简化纹理。这可以通过对原始纹理图像进行下采样(即缩小图像尺寸)来实现。降采样后的纹理在渲染时可能会显得较为模糊,但可以显著提高性能。

(2)纹理映射优化:优化纹理映射方式可以减少纹理的重复和浪费。例如,使用UV映射技术将纹理坐标映射到模型表面,可以减少纹理接缝和重复区域。

(3)mipmapping:mipmapping是一种多级别细节纹理的技术,它生成一系列不同分辨率的纹理图像,并根据观察距离选择适当的纹理级别进行渲染。这可以减少纹理细节在不同距离下的混叠和锯齿状边缘,同时提高渲染性能。

mipmapping纹理图 **,** 来源:Imagination 官网

(4)精简材质: 用材质合并、贴图集成和减少材质属性等技术来精简模型材质,避免使用过多的贴图和光照计算。

三、压缩处理

几何压缩: 通过使用一些高效的数据压缩算法来减少模型文件大小。这种技术可以在不影响模型质量的情况下减小文件大小,并提高模型的性能。在实践中,可以使用诸如DRACO、LZMA、LZO和Zlib等算法来进行几何压缩处理。

纹理压缩: 通过减少纹理图像的分辨率、色深和压缩算法来减小模型文件大小。这种技术可以在不影响模型质量的情况下减小纹理文件大小,从而减少模型文件大小和处理负荷。在实践中,可以使用诸如JPEG、PNG和DDS等算法来进行纹理压缩处理。

四、细节层次

细节层次技术是一种通过在模型的不同部位使用不同的细节级别来减小模型文件大小和提高性能的技术。在实践中,可以使用细节层次LOD(Level of Detail)技术来实现,这种技术通过在远处使用较低细节级别的模型来代替远处的高细节级别模型,从而减小模型文件大小和提高性能。

细节层次原理图,来源:《ContextCapture 用户指南》

五、层次渐进式传输

层次渐进式传输是一种将数据按照不同的层次逐步传输的技术。首先发送低精度或低分辨率的数据,然后逐渐增加精度或分辨率,直到达到最终的高精度或高分辨率数据。这种传输方式可以根据接收方设备能力和带宽情况进行动态调整,从而实现高效、流畅的数据传输。

六、 实例化渲染

对于场景中大量重复出现的物体,使用单个模型实例进行渲染,在一次绘制调用中渲染多个具有相同几何形状但具有不同属性(如位置、旋转、缩放等)的物体实例,而不是为每个物体都加载一个完整的模型。这可以显著减少内存消耗和渲染时间。

七、 骨骼动画

由于骨骼动画是通过控制骨骼的旋转和位移来驱动模型的,因此可以实现更流畅、更自然的动画效果。使用骨骼动画代替关键帧动画,以减少动画数据的存储量和计算量。

骨骼动画图,来源:csdn技术博客:《PyOpenGL骨骼动画(skeleton animation) 二》

总结

三维模型轻量化技术可以通过多种方式来减少模型文件大小和处理负荷,从而提高三维模型的性能和运行效率。在实践中,可以根据具体的应用场景和需求选择最适合的轻量化技术来优化三维模型。

轻量化的三维模型需要依托相应的3D渲染引擎进行可视化展示,Mapmost SDK for WebGL 作为一款功能强大的二三维地图一体化渲染引擎,在轻量化模型的加载方面具有很好的支持,目前支持细节层次模型、几何压缩和纹理压缩模型的加载与渲染,同时提供模型实例化渲染和骨骼动画能力。

参考文献:

三维模型的顶层合并构建的轻量化技术方法探讨 - 知乎

一文读懂三维模型的"轻量化" - 知乎

网格简化 QEM 方法详解 - 知乎

浅析三维模型轻量化技术方法

如何读懂三维模型轻量化

物图科技|三维模型轻量化技术要点

三维多分辨率网格交换格式 (3MX) 细节层次原理

关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost------让人与机器联合创作成为新常态

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。微信公众号:Mapmost

相关推荐
刘好念5 小时前
[OpenGL]使用 Compute Shader 实现矩阵点乘
c++·计算机图形学·opengl·glsl
charlee443 天前
深度科普文:细数倾斜摄影数据的缺点
三维可视化·计算机图形学·倾斜摄影
刘好念3 天前
[OpenGL]使用TransformFeedback实现粒子效果
c++·计算机图形学·opengl
刘好念10 天前
[OpenGL] Transform feedback 介绍以及使用示例
c++·计算机图形学·opengl
刘好念1 个月前
[OpenGL]使用OpenGL+OIT实现透明效果
计算机图形学·opengl
刘好念2 个月前
[OpenGL]使用OpenGL实现硬阴影效果
c++·计算机图形学·opengl
黑猫很白2 个月前
计算机图形学-动画Animation-仿真物理模拟Simulation
计算机图形学
字节流动2 个月前
Vulkan 开发(三):Vulkan 物理设备
计算机图形学
字节流动2 个月前
Vulkan 开发(二):Vulkan 实例
计算机图形学