专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
自动减面
2019-04-13 15:07
发布
生成海报
站内文章
/
模拟电子
12519
0
1167
在做游戏时,通常会有高模转低模的需求,比如生成不同层级的lod模型。但是这种操作一般会由美术人员手工完成,比较费时,且每个层级的模型都需要打包,造成包体过大。
这里,我提供了一种运行时根据算法将高模转为指定顶点数低模的方式,不需要人工干预,且可在运行时才生成低模,打包时只要打包高模即可。
下面是我的实现,这里我假设顶点在顶点数组里是唯一的,并未考虑各种情况,所以出现了缺面的情况。
下面是论文作者的实现。
下面简单介绍一下算法
对顶点和面进行预处理,生成如下结构。
生成之后,根据这些信息计算每个顶点向他的每个邻居顶点坍缩的代价,a向b坍缩即消去a,将a的每个邻居边里的a替换为b。
下式为u向v坍缩的cost。
Tu是包含顶点u的三角形的集合,Tuv是同时包含顶点u和顶点v的三角形的集合。
两个面的法线相乘越接近1,则说明两个面是接近平行的,消去影响不大,这里用1-x/2将范围从 -1,1映射到0,1,值越小消去的影响越小。
在最里层,找到影响的最小值,对于包含顶点u和顶点v的三角形,消去意味着这些面消失了,影响值为。
在外层,找到影响的最大值,即找到包含u但不会消失的面对视觉的最大影响。
最后乘以距离,距离越大,越不易消去。
消去代价最小的节点,此时注意要即时更新第一步生成的结构
不断消去,直到顶点数小于某值。
工程源码
:https://github.com/Ymiku/Automic-LOD
现在的工程只提供了核心代码,虽然可以用,但是效果不好,因为一般模型会出现一个顶点在数组里出现多次的情况,不过也好解决,只要预处理一下,保证顶点唯一性就行了。
参考:http://dev.gameres.com/Program/Visual/3D/PolygonReduction.htm
Ta的文章
更多
>>
自动减面
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮