LoopyCuts-Computer Cutting Loops

1.基本概念

  feature line分为flat、concave、convex三种,由integrated curvature的 θ \theta θ根据阈值 θ ˉ \bar \theta θˉ判定:
{ f l a t ,             ∣ θ ∣ < θ ˉ c o n c a v e ,      θ < − θ ˉ c o n v e x ,        θ > θ ˉ \left\{ \begin{aligned} &\mathrm{flat},\ \ \ \ \ \ \ \ \ \ \ |\theta|<\bar\theta \\ &\mathrm{concave},\ \ \ \ \theta<-\bar\theta\\ &\mathrm{convex},\ \ \ \ \ \ \theta>\bar\theta\\ \end{aligned} \right. flat,           θ<θˉconcave,    θ<θˉconvex,      θ>θˉ
这里 θ ˉ = 1 0 ∘ \bar \theta=10^{\circ} θˉ=10,例子如下图

  标架场采用《Mixed-integer quadrangulation》中的方法建立

在这里插入图片描述

2.Field-Coherent Loops

  由标架场引导出field-coherent geodesic path: ℓ \ell 切线与p点标架夹角小于 π 4 \frac{\pi}{4} 4π。为了描述其偏离程度使用以下公式
∥ w ∥ X = ∣ w ∣ ( 1 + α ∠ ( p θ , w ) π / 4 ) \|w\|_{\mathrm{X}}=|w|\left(1+\alpha \frac{\angle\left(p_{\theta}, w\right)}{\pi / 4}\right) wX=w(1+απ/4(pθ,w))
其中 w w w为切向量, p θ p_{\theta} pθ为标架之一, α \alpha α为惩罚系数。我们的目标是由点沿着field-coherent geodesic path返回点,即得到闭合曲线。而上述公式是为了避免造成过度偏离现象,如下图

在这里插入图片描述

  定义曲线之间的距离如下:
d ( ℓ i , ℓ j ) = 1 ∣ ℓ j ∣ ∫ ℓ j dist ⁡ ( ℓ i , p θ ) d p θ d\left(\ell_{i}, \ell_{j}\right)=\frac{1}{\left|\ell_{j}\right|} \int_{\ell_{j}} \operatorname{dist}\left(\ell_{i}, p_{\theta}\right) d p_{\theta} d(i,j)=j1jdist(i,pθ)dpθ
其中 dist ⁡ ( ℓ i , p θ ) \operatorname{dist}\left(\ell_{i}, p_{\theta}\right) dist(i,pθ) p θ p_{\theta} pθ ℓ \ell 之间的最短field-coherent geodesic path长度。

  设loop集合 L = { ℓ 1 … ℓ k } \mathcal{L}=\{\ell_1 \dots \ell_k \} L={1k} ,而 ℓ ∉ L \ell \notin \mathcal{L} /L
d ( L , ℓ ) = 1 ∣ ℓ ∣ ∫ ℓ min ⁡ ℓ i ∈ L dist ⁡ ( ℓ i , p θ ) d p θ d(\mathcal{L}, \ell)=\frac{1}{|\ell|} \int_{\ell} \min _{\ell_{i} \in \mathcal{L}} \operatorname{dist}\left(\ell_{i}, p_{\theta}\right) d p_{\theta} d(L,)=1iLmindist(i,pθ)dpθ
则离 L \mathcal{L} L最远的 ℓ ˉ \bar \ell ˉ
ℓ ˉ = argmax ⁡ ℓ ∈ L d ( L , ℓ ) \bar{\ell}=\operatorname{argmax}_{\ell \in \mathrm{L}} d(\mathcal{L}, \ell) ˉ=argmaxLd(L,)
在这里插入图片描述

3.特征loop

  维护一个初始队列 Q Q Q用来装loop,feature line ℓ \ell 分为两类处理,如下:

  1. 闭合:如果为flat特征则加入 Q Q Q队列;如果为concave,拷贝正反方向两份入队
  2. 非闭合:如果为flat拓展成一个loop入队,如果为concave,沿两端点分别生成两个loop入队

4.采样最远loop

  每次采样最远的loop加入 Q Q Q中,其终止条件需满足以下两个:

  1. Topological integrity :Q中每个loop至少与其他loop相交三次。
  2. Geometric fit :path的面积与polyon的面积相差不超过阈值

5. 维护采样池

  定义 Q ˉ = Q ∪ C F \bar Q=Q \cup C\mathcal{F} Qˉ=QCF,其中 C F C\mathcal{F} CF为convex feature,通过以下两种方式创建采样池 P \mathcal{P} P:

  1. 以固定间隔采样 Q ˉ \bar Q Qˉ中loop,对其中每个loop,跟踪一个垂直它自己新loop加入采样池 P \mathcal{P} P,新loop需满足与 Q ˉ \bar Q Qˉ中loop不正切相交
  2. 在表面进行泊松分布采样(Poisson-Disk Sampling)获得点集 P \mathrm{P} P,对于每个 p ∈ P p\in \mathrm{P} pP跟踪两条新的loop,同样的他们需要满足与 Q ˉ \bar Q Qˉ中的不正切相交,加入采样池 P \mathcal{P} P

每当从 P \mathcal{P} P中选择一条最远loop加入 Q Q Q中后,需要对采样池 P \mathcal{P} P用方法1重新装填新的loop进去。

  为提高Topological integrity,从采样池中选取loop不再是简单的选择与 Q ˉ \bar Q Qˉ中最远的loop,而使用新的规则:设 Q ^ \hat Q Q^ Q Q Q的子集且不满足Topological integrity条件,我们使采样池 P \mathcal{P} P中与 Q ^ \hat Q Q^中相交的loop具有更大的优先度被选择,即除了距离因素外加入相交次数作为优先度来快速提高拓扑完整性。根据以上规则在采样池中选择与 Q ˉ \bar Q Qˉ最远的loop ℓ \ell 加入 Q Q Q,然后在采样池 P \mathcal{P} P中移除所有与 ℓ \ell 正切相交的loop,并重新跟踪它们的源点 p ∈ P p \in \mathrm{P} pP的两条正交loop(满足与新更新的 Q ˉ \bar Q Qˉ中的loop不正切相交)

在这里插入图片描述

6. 输出

  输出由两部分组成:队列 Q Q Q与凸特征 C F C\mathcal{F} CF。其中每个loop都以 ( ( p 1 , n 1 ) … ( p h , n h ) ) ((p_1,n_1)\dots(p_h,n_h)) ((p1,n1)(ph,nh))形式给出, p p p为点, n n n为法向量。

  需要注意不是每个非闭合的feature都可以拓展成闭合loop,在拓展feature loop时也可能产生自相交的loop(这种类型舍弃),而那些无法闭合的feature我们把它们称为incomplete loop并加入 Q Q Q,在下一个阶段进行处理。

附1.Tracing loops

  trace loop使用《Tracing Field-Coherent Quad Layouts 》的方法在一个拓展出来的图 G \mathcal{G} G上进行Dijkstra 算法,其中图 G \mathcal{G} G由曲面M上的边和顶点,还有边上的采样得到斯坦纳点(Steiner point)和连接斯坦纳点和顶点的边组成。不同的是,这里的

  距离测量:对于集合 L \mathcal{L} L中的每条loop,在每条loop上的每个点作为源点跑Dijkstra,从而找到最远的 ℓ ∉ L \ell \notin \mathcal{L} /L(这里很耗时)

  传播限制:在做Dijkstra时,搜索路径不能与 Q ˉ \bar Q Qˉ正切相交

附2.相交说明

  1. 正切相交判断:曲线相交,标架平行
  2. 垂直相交判断:曲线相交,标架相交

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值