随笔 - 942,  文章 - 0,  评论 - 37,  阅读 - 54万

简介

本文提出了一种六面体体细分的方案,可以将六面体分成比较光顺的六面体。同时增加六面体的数量且不改变六面体的拓扑。
本文作者 Bajaj =.=

论文方案

主要由两个步骤组成 split & average
将CC四边形细分变为简单的方案可以通过 bi-linear subdivision followed by a simple averaging operation.
一个双线性细分然后跟着一个均值的操作。

split

就是插入中心边点
插入cell的(中心)点

average

作者提出了一种mask的思想。
找到一篇文章讲mask的思想。就是新产生的点的权重的确定的矩阵
More precisely:
• What are good averaging masks?
• The averaging mask determines the weights by which the new point positions are computed

对于一个面来说,mask矩阵就是中心点和它四个角的加权平均
不知道能否这么解释。

上面的图可以更好的解释。mask 其实就是关于某个点生成对应点的权重矩阵。
核心语句 reposition a vertex at the centroid of the centroids of the eight hexahedra that contain the vertex.
对于在中心点来说,一个点连接着8个cell(六面体),如何移动这个顶点的坐标呢?首先求这8个cell的重心(每个cell8个顶点的均值),
求出8个cell均值,然后8个cell均值的均值,也就是这个点应在存在的位置了。 下图的公式就是对于这个思想的简单解释了

但是核心的是如何确定边缘的点,边缘的点只连接了4个cell,如果采用上述方法,那么将导致急剧的收缩。
所以作者在2.3节提出了复合细分规则。
ring[v1,v2..] 表示一些列顶点的多面体
val[v1,v2..] 表示这一系列点含有的多面体的个数。
dim[v1,v2..] 表示最小的维度 0 表示他们重合在了一起,1表示他们在边上,2表示他们在公共面上。
对于一个旧顶点,他的新坐标表示在周围一圈旧多面体的加权求和上。
作者提出了这个公式

14dval[v]3ddim[u,v]val[u,v]


这个图就是对于公式的应用。
n表示中心黑点的度,也就是中心黑点和几个四边形相互连接。
如果只有一个四边形的话,那么 n = 1, val[v] = 1
116=14213221 因为共面所以dim=2, val[u,v] = 1 是因为包含u,v的顶点的面只有一个面。

文章公式思考

  1. Pi=Si1Pi1
    Pi 细分之后的举证
    Si1 细分矩阵(简单来说,可以使用细分方案)
    Pi1 细分之前的矩阵。

对于数学没有太敏感的我,没什么软用。

  1. Ti 表示连接关系的拓扑矩阵。

文章图片思考


演示了对于面进行split & average 之后的结果。然后作者依据这种现象构建了新的六面体细分方案。


可以通过上面的图看出来有两个操作,一个是简单的差值,另一个是average。中间的图是差值的操作。


上面一行是差值,下面一行是average的效果图。

TIPS

Unfortunately, these rules only apply to quadrilateral meshes with tensor product topology (i.e. each
interior vertex is shared by four quadrilaterals). 作者说,简单的四边形细分规则,只能应用于张量积形式的拓扑(作者举了一个例子,就是内部点,周围有四个顶点。)

文章优点

可以应用于非流形拓扑,证明了这种方案生成的六面体网络的连续性。

猜想

文章的难点 均分可以解决内部点的问题如何将表面的点进行均分???

Question

  1. 嵌入折痕表示为CC曲面和样条曲线。嵌入折痕(embedded creases)就很由灵性了。真不懂,如果谁知道可以写一篇博客然后留一个评论。
  2. 张量积 是什么鬼?

参考链接 https://www.cnblogs.com/sybil-hxl/p/12804765.html
https://img2020.cnblogs.com/blog/968024/202005/968024-20200515231824101-870579029.png

  1. 双线性细分?

猜测 应该是沿着两个维度进行细分
类比3线性细分 应该是沿着三个维度进行细分

result



做是做出来了,但是我无法解释MLCA对于边缘的处理。参考的是师兄的代码,我也不方便将代码放上来。只能说,对于中心点的处理确实是使用 Pnew[v]+=centval[v]
对于边缘点的处理,该怎么整呢?
边缘点使用复合细分规则感觉也不太对。至少和师兄的代码不对应。

对于边缘点处理的想法(合理但感觉少了点什么)

由谢大佬提供
边缘的点的细分可以直接用面的细分,因为,样子是一样的。

友情赠送

http://resources.mpi-inf.mpg.de/departments/d4/teaching/ss2012/geomod/slides_public/14_Subdivision_Surfaces.pdf
这是某个大学关于细分很好的材料,对于mask的理解很大一部分参照了上面说的内容。

posted on   HDU李少帅  阅读(199)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示