首页 > 其他分享 >9.模型优化

9.模型优化

时间:2023-07-01 13:36:27浏览次数:36  
标签:中心点 模型 坍缩 细分 顶点 三角形 优化

模型三角形数量增加

  • 增加模型三角形数量目的是使模型表面更加光滑
  • 调整三角形的位置

路普细分Loop Subdivis

  • 一个三角形拆成4个
  • loop不是循环细分

如何调整细分后的三角形的位置?(为了让细分后的平面变平滑)

新的细分点

  • 在路普细分中,假定两个相邻三角形中下图白色点为相邻边某一个细分点
  • A和B为相邻边的两个顶点,C和D表示为不相邻的两个顶点
  • 该细分点的坐标为:3/8(A+B)+1/8(C+D)
原来的点

  • 白色圆点表示旧的细分点,n表示与白色圆点相关的旧的细分线数量(在这里=6)。
  • u表示自身权重

Catmull-Clark细分

  • 适用于不规则的网格(有三角形,有四边形)
  • Non-quad face (非四边形的网格)
  • Extraordinary vertex 奇异点 (与该点相连的边数不为4的点为奇异点)

细分操作流程如下

  1. 取Non-quad face 网格的每条边的中心点
  2. 取Non-quad face 网格平面的中心点,并连接 该点与每条边中心点
  3. 新添加的两个平面中心也是奇异点
  4. 三角形面变成了3个四边形面

如何更新老的平面中心点和老的边中心点


模型三角形数量减少

减少模型顶点数的效果展示

  • 相关知识:mipmap
  • 30000个三角形和3000个三角形模型效果其实差不多,而在距离摄像机较远时,300个三角形的模型也能跟前两个有相同展示效果
  • 不同距离选择不同的模型有效提升性能

边坍缩(Collapsing An Edge)

  • 曲面简化所利用的一个方法叫做边坍缩,如上图所示就是将一条边的两个顶点合成为一个顶点。但随之而来的问题就是,曲面简化需要尽量保持原本模型的shape,如何坍缩一条边,或者说坍缩哪一条边能够使得原模型样貌被改变的程度最小,这就是曲面简化的关键所在。
  • 为此引入一个度量,即二次误差度量(Quadric Error Metrics)

二次误差度量

  • 即坍缩之后蓝色新顶点所在的位置与原来各个平面的垂直距离之和。如果能够使得这个误差最小那么对整个模型样貌修改一定程度上也会较小。
  • 二次误差:新顶点应最小化其与先前相关三角形平面的平方距离(L2距离)之和

那么其实到这整个曲面简化的算法流程已经比较清晰了

  1. 为模型每条边赋值,其值为坍缩这条边之后,代替两个老顶点的新顶点所能得到的最小二次误差度量
  2. 选取权值最小的边做坍缩,新顶点位置为原来计算得出使得二次误差最小的位置
  3. 坍缩完之后,与之相连其他的边的位置会改动,更新这些边的权值
  4. 重复上述步骤,直到到达终止条件 这其实是一个标准的贪心算法,可能到不了全局最优解,但事实证明最终的结果依然相当不错

标签:中心点,模型,坍缩,细分,顶点,三角形,优化
From: https://www.cnblogs.com/oOLzYOo/p/17519162.html

相关文章

  • 98位企业技术高管入学百度AICA 大模型带来AI人才三大能力要求
    2023年6月30日,由深度学习技术及应用国家工程研究中心与百度联合创办的AICA首席AI架构师培养计划,迎来第7期开学典礼。98位企业CTO、科学家以及技术高管学员从500多位报名者中脱颖而出,将开展为期半年的人工智能前沿技术与应用的学习实践,成为各行业领域大模型产业落地的领军人才。A......
  • LLaMA模型微调版本 Vicuna 和 Stable Vicuna 解读
    Vicuna和StableVicuna都是LLaMA的微调版本,均遵循CCBY-NC-SA-4.0协议,性能方面Stable版本更好些。CCBY-NC-SA-4.0是一种知识共享许可协议,其全称为"署名-非商业性使用-相同方式共享4.0国际"。即用的时候要署名原作者,不能商用,下游使用也必须是相同的共享原则。VicunaVicuna(小羊驼......
  • Vue项目卡顿慢加载?这些优化技巧告诉你!
    前端开发是一个快速发展的领域,每天都会涌现出新的技术和工具。在实现功能的同时,开发人员面临着许多挑战如代码可维护性,加载时间,访问速度,构建速度等问题。这些挑战可能直接影响网站的性能和用户体验,需要采取一些优化措施来改善问题。在本文中,我们将探讨一些前端项目优化的具体措施......
  • 为什么面试官这么爱问性能优化?
     笔者是一个六年前端,没有大厂经历,也没有什么出彩的项目,所以今年以来,前端现在这种行情下并没有收到多少面试,但是为数不多的面试中,百分之九十都问到了性能优化的问题,而且问题都出奇的一致:平时的工作中你有做过什么性能优化?对于这个问题其实我的内心os是(各位轻喷~):你们怎么都这么爱问......
  • R语言中的LDA模型:对文本数据进行主题模型topic modeling分析|附代码数据
    原文链接:http://tecdat.cn/?p=4333 最近我们被客户要求撰写关于LDA模型的研究报告,包括一些图形和统计输出。主题建模在文本挖掘中,我们经常收集一些文档集合,例如博客文章或新闻文章,我们希望将其分成组,以便我们可以分别理解它们。主题建模是对这些文档进行无监督分类的一种方法......
  • 一篇带你了解JVM内存模型和垃圾回收机制
    JVM内存模型根据Java虚拟机规范,Java数据区域分为五大数据区域。 JVM的结构其中方法区和堆是所有线程共享的,虚拟机栈、本地方法栈和程序计数器则为线程私有的。有的博客称方法区是永久代,那是因为前者是JVM的规范,而后者则是JVM规范的一种实现,并且只有HotSpot才有永久代,JDK8......
  • SAP HANA性能优化与分析(持续更新中)
    本文描述了可以用来识别和解决特定性能问题的措施,并向您展示了如何在以下方面提高SAPHANA数据库的性能:•主机资源(CPU、内存、磁盘)•数据结构的大小和增长•事务性问题•SQL语句性能•安全性、授权和许可•配置......
  • 光脚丫学LINQ(019):使用对象关系设计器创建对象模型
    视频演示:http://u.115.com/file/f2b38fc3b2      基本学习了如何手动创建LINQtoSQL的对象模型,不过,千万不要因此就认为,已经真正的掌握了如何手动创建此对象模型。关于这点还是很多内容值得去深入学习的。不过,这是稍后的课题了,目前,咱们就得让它先停在这个位置了。     ......
  • 使用numpy实现bert模型,使用hugging face 或pytorch训练模型,保存参数为numpy格式,然后使
     之前分别用numpy实现了mlp,cnn,lstm,这次搞一个大一点的模型bert,纯numpy实现,最重要的是可在树莓派上或其他不能安装pytorch的板子上运行,推理数据本次模型是随便在huggingface上找的一个新闻评论的模型,7分类看这些模型参数,这并不重要,模型占硬盘空间都要400+Mbert.embeddings.w......
  • 高手都是如何做 Mysql 慢 SQL 优化
    tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。......