使用blender优化模型

介绍

自从上周分享了如何在地图上加载大量gltf模型之后,很多网友留言问是如何做模型优化的,今天就来解答一下。做这件事前我问了AI在three.js场景中加载更多GLTF模型的优化方法,它给我的回答是这样的:

  • 使用instanceMesh加载相同的网格。实例化网格允许您在场景中复制单个网格,而只需要存储一次网格的顶点数据。这可以显着提高场景中的性能。
  • 使用低分辨率的网格。如果您不关心模型的细节,您可以使用低分辨率的网格来提高性能。
  • 使用纹理压缩。纹理压缩可以减少纹理所占用的空间,从而提高性能。
  • 使用延迟加载。延迟加载允许您延迟加载模型,直到它们进入视口。这可以提高性能,因为您不必加载您看不到的模型。
  • 使用合并着色器。合并着色器允许您将多个模型的着色器合并到一个着色器中。这可以提高性能,因为您不必为每个模型渲染一个着色器。

总结一下就是减少的绘制次数,优化模型的面数和纹理,下面我们讲讲具体如何做模型优化。本文用到的建模工具是blender。为啥选blender?因为它是免费的...

优化步骤

优化模型可以从以下几方面入手:

  1. 合并模型网格
  2. 精简面数
  3. 模型展UV贴图
  4. 删除模型中看不见的点线面

1. 合并模型网格

选中所有的Mesh后做合并, 常规做法下图所示,选择相关联的Mesh后Ctrl+J直接合并。

但这里的"合并"操作相当于模型组合,事实上还是没有把几个几何体的内部网格融合,我们按Tab切换到编辑模式之后可以发现,通过手动拖拽还是直接把Mesh分开。

正确的做法是使用bool tool插件,在物体模式下选择相关联的Mesh,按Ctrl+shift+B 打开bool tool,点击Union实现合并。

2.精简面数

物体模式下,选择模型对象,点击修改器属性-添加修改器-精简,就可以在面板左下角看到当前模型的面数,比如下图的模型共1412个面,通过"塌陷、反细分、平面"三种方式可以针对不同模型进行减面,最常用的是第一个"塌陷"。

通过调节 塌陷 - 比率的数值小于1.0,可以直观地看到面数变化,如下图所示。如果你不想将整个模型减面,则可以使用已选的顶点组的方式缩小减面范围。

减面完毕记得要点击"应用"才算生效,这个是重要知识点。

3.模型展UV贴图

编辑模式下,点击顶部菜单 UV Editing 打开UV编辑器,在右侧模型页面点A键全选所有顶点,编辑器会自动生成展UV图。如下图所示完美展开。

点击UV编辑器头部的UV-导出UV布局图,就可以直接在图上加贴图了。完了导出图像,回到编辑器头部,点击打开图像,就可以看到如下效果。

UV贴图做好就可以添加材质贴图了,步骤如下所示:

1.选中模型,点击材质属性(小红地球图标) 2.点击新建 3.点击"基础"色后面的黄色点图标,打开的面板里选择"图像纹理" 4.点击下图所示的"关联图像"图标,选择刚刚做好的材质贴图,就OK了。

以上步骤做完,应该可以看到如下效果,记得修改查看方式,选编辑器右上角"视图着色方式":

3.模型展UV贴图 Extend

以上步骤适用于比较规则的模型,对于比较复杂的模型可能自动展开会有各种奇奇怪怪的UV面。

这时候可能需要人为干预展UV结果,我们可以通过"标记缝合边"的方式调整UV图最终的展开形态,如果要求某几个面在展开后是连在一起的,那么可以选中它们并集的边然后标记一下。

另外在做展开的时候可以试试 UV-智能UV投射,再选择"UV-孤岛比例平均化",再手动调节一下各种孤岛,就可以用了。譬如像下面这个模型,展UV时破破烂烂,经过缝缝补补之后变成这样。

4.删除看不见的点线面

这一步有2种做法: 手动删除或者使用插件自动删除。

手动删除大概有这些技巧:

  • 选择处于同一个平面上的面,右键"融并",就可以直接合并为1个面;
  • 选择整个模型所有面,右键"有限融并",就可以将所有在同个平面的面合并;
  • 将多条边融合,可以选择关联的连接点,右键"融并"。

如果安裝步骤1使用bool tool插件做合并的话,内部那些看不见的面会自动被剔除的。文末链接里也有其他用于做类似优化的插件。

安装插件

本文使用到的Bool Tool 是 Blender 的插件,它允许您使用布尔运算来合并两个或多个对象。可以进行以下四种运算:

  • 交集:合并两个对象的共同部分。
  • 差异:从第一个对象中减去第二个对象。
  • 并集:合并两个对象。
  • 剪切:将第二个对象应用于第一个对象。

插件安装方法如下图:打开编辑-偏好设置-插件,搜bool,打钩后重启即可。

相关链接

如何删除模型中多余的点 线 面

www.bilibili.com/video/BV1vL...

blender插件 网格清理布线优化神器

www.bilibili.com/video/BV1cN...

相关推荐
前端小端长37 分钟前
qiankun 微前端应用入门教程:从搭建到部署
前端
yinuo3 小时前
前端跨页面通讯终极指南⑥:SharedWorker 用法全解析
前端
PineappleCoder7 小时前
还在重复下载资源?HTTP 缓存让二次访问 “零请求”,用户体验翻倍
前端·性能优化
拉不动的猪7 小时前
webpack编译中为什么不建议load替换ast中节点删除consolg.log
前端·javascript·webpack
李姆斯7 小时前
Agent时代下,ToB前端的UI和交互会往哪走?
前端·agent·交互设计
源码获取_wx:Fegn08958 小时前
基于springboot + vue健身房管理系统
java·开发语言·前端·vue.js·spring boot·后端·spring
闲谈共视8 小时前
基于去中心化社交与AI智能服务的Web钱包商业开发的可行性
前端·人工智能·去中心化·区块链
CreasyChan8 小时前
C# 反射详解
开发语言·前端·windows·unity·c#·游戏开发
JIngJaneIL9 小时前
基于Java+ vue智慧医药系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
hashiqimiya10 小时前
两个步骤,打包war,tomcat使用war包
java·服务器·前端