您的位置:首页 > 其它

文章标题

2016-11-26 20:16 211 查看
[⎧⎩⎨x˙=vMv˙=Fext+JTλc(x)+ελ=0

Fint=Fconstraint=JTλ

c(pa,pb)=||pa−pb||

Fpenalty=−kJTc(x)=Fconstraint=JTλ

−kc(x)=λ⟹c(x)+ελ=0,ε=1k

取λ~为时间段内的平均值,即,

λ~=△t−1∫tn+△ttnc(t)dt≈△t−1cn+12Jnvn+1

并替换λ,可得,

AY=b其中,

A =

[MJn−JTn2△t−2ε]

Y=

[vn+1△t−1λ~]

b=

[Mvn+△tFn−2△t−1cn]

令,

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪g(x,λ)=M(xn+1−x~)−( ∇Cn+1)Tλn+1=0h(x,λ)=C(xn+1)+α~λn+1=0x~=2xn−xn−1=xn+△tvn(predicated position)α~=εΔt2

使用Implicit Euler,并将Fpenalty(xn+1)在predicted position x~处展开,得,

⎧⎩⎨⎪⎪⎪⎪⎪⎪Mδv=h(f(x~)+Kδxx~=xn+hv~v~=vn+hfextK=∇xf=−∂2U∂x2

舍弃K中的二阶偏导[BW98]得到

K=−kJTJ整理上式得,(M+h2kJTiJi)δvi+1=hf(xi)

上式左右两端同乘以T=1hkA−1J其中,A=JM−1JT,并做替换δv=hM−1JTλ可得,

(h2A+εI)δλ+c(x)=0

此式为soft constraint的Fast Projection[GHF07]形式。

称T是从configuration space到constraint space的转换。

迭代公式:

PBD:Δx=M−1∇Cj(xi)−kjCj(xi)∇CjM−1∇CTj

XPBD:Δx=M−1∇Cj(xi)−Cj(xi)−αj~λij∇CjM−1∇CTj+αj~

XPBD优势:

弹性系数α~与“真实的”布料参数相关。

保证了布料的拉伸量与迭代次数无关。

相比于PBD增加约2%的计算量,且需要存储一个m维的向量λ。

从constraint:c(x)=0到soft constraint:c(x)+ελ=0,从而,

将constrained dynamics(通常认为是不太精确的方法)与penalty force dynamics

(通常认为是比较精确的方法)联系起来.

证明了soft constraint的Fast Project形式与Implicit Euler等价(3.3节).

soft constrained dynamics可使用通用的弹性参数(e.g. Youg’s modulus)。

当ε→0则soft constraint退化成原始的constraint,相当于penalty force →∞.

接下来,

实现上述三种方法,并应用到bending约束,以实现布料仿真中褶皱的保持。

C1=ll0−1

C2=l2l0−l0

[AJ−JTC]

{(h2JK−1J−α)λn+1=C−JK−1M(xn−x0)Δx=−h2K−1JTλn+1−K−1M(xn−x0)

其中,

等式右边第二项为约束力对位置的偏导,可

⎧⎩⎨K=M+∂(JTλ)∂x∂(JTλ)∂x=JT∂λ∂CJ+∂JT∂xλ

∂JT∂xλ即为geometric stiffness,可用此项代替约束力对位置的导数,即,

K=M+∂JT∂xλ

而使用距离平方的距离约束,geometric stiffness具有特殊性质,即如果只考了一个距离约束力,对一个粒子的位置的偏导:

∂fi∂xi=−∂fi∂xj=λI3

使用PBD求解方法,第i个约束的K矩阵,

Ki=Mi+λi[I−I−II]

其中Mi是第i个距离约束关联的两个粒子的质量构成的6×6矩阵。

那么接下来就是速求出Ki的逆,这篇论文的方式可以使用:On the Inverse of the Sum of Matrices。基本看懂了。

{(h2JM−1J)λn+1=C(xn)Δx=−h2M−1JTλn+1

{(h2JM−1J−α)λn+1=C−J(xn−x0)Δx=−h2M−1JTλn+1−(xn−x0)

{(h2JM−1J−α)λn+1=C−Jβ(xn−x0)Δx=−h2M−1JTλn+1−β(xn−x0)

ei=θ1(1−AinterAreal)+θ2(1−AinterAcand)

⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪e=θ1ecolor+θ2ewh+θ3eedgeecolor=(1−max(blueRatio,yellowRatio))2ewh=(wh−3.14)2,ormin((wh−3.14)2,(wh−2.0)2)eedge=(1−edgeRatio)2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: