论文阅读笔记:Hyper-reduced projective dynamics (手推公式)

本论文提出了一种适用于 Projective Dynamics 的模型降阶方法,主要包含了三部分内容:(1)坐标系的降阶;(2)约束的降阶;(3)Projective Dynamics 的求解过程,包括 globle/local 求解过程;

1 - 总体概述

模型降阶(model order reduction),即在模型计算/求解的过程中,将其映射到低维空间中,以减少计算量。

在形变仿真中,模型网格越精细,能够更好的展现仿真对象的细节特征,往往具备更好的(视觉)效果。但精细的网格意味着,模型的节点数巨大(10K~100K),使得模型的求解计算量庞大,严重制约了仿真的实时性。

在模型降阶的方法中,通过将高阶模型(精细网格,节点数多)映射到低阶模型(较粗糙网格,节点数少)中,采用较粗糙的网格对模型进行近似,从而减小仿真求解过程中的计算量。在求解得到结果后,再将低阶模型反向映射到高阶模型,进行视觉上的渲染,达到展现模型精确细节的目的。

Projective Dynamics 公式:
模型降阶公式:

\[\boldsymbol{q} \approx \mathbf{U}\tilde{\boldsymbol{q}} \]

其中,\(\boldsymbol{q} \in \mathbb{R}^{n \times 3}\) 为高阶模型的节点坐标,\(\tilde{\boldsymbol{q}} \in \mathbb{R}^{4k \times 3}\) 为低阶模型的节点(其实,这里不是物理意义上的顶点)坐标,\(\mathbf{U}\) 为从低维空间到高维空间的映射。

2 - 低维空间的构建

借鉴了蒙皮算法来构建子空间(creating a subspace from skining weights.),具体方法如下:

1 - 在模型网格中均匀选取 \(k\) 个节点,即 \(\boldsymbol{s}_j\) (相当于蒙皮算法中的 handle ),并计算节点 \(i\) 相对于各个 handle 的权重,为 \(\tilde{\boldsymbol{w}}_i = (B_{\boldsymbol{s}_1, r(\boldsymbol{q}_i)}), \cdots, B_{\boldsymbol{s}_k, r(\boldsymbol{q}_i)})\) ,其中,\(r\) 是作用域半径,\(B_{\boldsymbol{y}, r(\boldsymbol{x})}) = b_r(d(\boldsymbol{x}, \boldsymbol{y}))\) 为插值函数,在这里选择为 unique cubic polynomial 函数(也可选择其他)。最后,对权重进行归一化(normalized)处理,即 \(\boldsymbol{w}_i = \tilde{\boldsymbol{w}}_i \cdot (1./\sum_j \tilde{w}_i^j)\)

2 - 构建子空间的基(construct the subspace basis matrix \(\mathbf{U}\) such that it contains the degrees of freedom from the skinning transformations according to these weights.),具体过程如下:

核心思想的解释:在蒙皮算法中,是通过 handle 的变换 affine transformations ,将网格节点从初始位置映射到了形变后的位置(表述可能不规范),也就是说,在这里面存在一个低维空间到高维空间的映射。其中,高维空间很好理解,就是网格模型本身,\(n\) 个网格节点,3维空间,是由 \(3n\) 个基向量张成的空间;而低维空间呢,可以从这个角度看,计算过程是 handle 仿射变换矩阵作为变量,乘以权重与初始位置的某种组合(定值),那么,就可以将权重与初始位置的某种组合张成的空间作为低维空间,将 handle 的放射变换矩阵作为其在低维空间中的坐标。由此,就实现了高维空间中的任一点 \(\boldsymbol{q}\) 在低维空间中的表示,即模型从高维到低维的降阶:\(\boldsymbol{q} \approx \mathbf{U}\tilde{\boldsymbol{q}}\)

2.1 - 空间、变量的维度及表示。在形变模型中,有 \(n\) 个节点,表示为 \(\boldsymbol{q} \in \mathbb{R}^{n \times 3}\),那么,拆开来写,应该就是:

\[\boldsymbol{q} = \begin{pmatrix} q_0^x & q_0^y & q_0^z \\ q_1^x & q_1^y & q_1^z \\ \cdots \\ q_{n-1}^x & q_{n-1}^y & q_{n-1}^z \end{pmatrix} \in \mathbb{R}^{n \times 3}\]

2.2 - 蒙皮算法。根据蒙皮算法,在模型网格中选取均匀分布的 \(k\) 个 handle,各个节点与 handle 相对应的权重为 \(w_i^j\)。在形变过程中,从网格初始位置 \(\boldsymbol{q}_0\) 到形变后位置 \(\hat{\boldsymbol{q}}\) 的 skinning transformation 过程可计算为:
对于其中的任一节点 \(i\),其变换过程为:(对应于 \(\boldsymbol{q}\) 中的任一行)

\[\begin{aligned}(\hat{q}_i^x, \hat{q}_i^y, \hat{q}_i^z) &= \sum_j (1, q_i^x, q_i^y, q_i^z) \cdot w_i^j \mathbf{A}_j^T \\ &= (1, q_i^x, q_i^y, q_i^z) \cdot w_i^0 \mathbf{A}_0^T + (1, q_i^x, q_i^y, q_i^z) \cdot w_i^1 \mathbf{A}_1^T + \cdots + (1, q_i^x, q_i^y, q_i^z) \cdot w_i^{k-1} \mathbf{A}_{k-1}^T \\ &= (w_i^0, q_i^x \cdot w_i^0, q_i^y \cdot w_i^0, q_i^z \cdot w_i^0) \mathbf{A}_0^T + (w_i^1, q_i^x \cdot w_i^1, q_i^y \cdot w_i^1, q_i^z \cdot w_i^1) \mathbf{A}_1^T + \cdots + (w_i^{k-1}, q_i^x \cdot w_i^{k-1}, q_i^y \cdot w_i^{k-1}, q_i^z \cdot w_i^{k-1}) \mathbf{A}_{k-1}^T \\ &= (w_i^0, q_i^x \cdot w_i^0, q_i^y \cdot w_i^0, q_i^z \cdot w_i^0 \quad | \quad w_i^1, q_i^x \cdot w_i^1, q_i^y \cdot w_i^1, q_i^z \cdot w_i^1 \quad | \quad \cdots \quad | \quad w_i^{k-1}, q_i^x \cdot w_i^{k-1}, q_i^y \cdot w_i^{k-1}, q_i^z \cdot w_i^{k-1}) \cdot \begin{pmatrix}\mathbf{A}_0^T \\ \mathbf{A}_1^T \\ \cdots \\ \mathbf{A}_{k-1}^T \end{pmatrix} \end{aligned}\]

那么,对于模型中的所有节点 \(\boldsymbol{q}\),蒙皮算法的变化过程为:

\[\begin{aligned}\begin{pmatrix}\hat{q}_0^x &\hat{q}_0^y &\hat{q}_0^z \\ \hat{q}_1^x &\hat{q}_1^y &\hat{q}_1^z \\ \cdots \\ \hat{q}_{n-1}^x &\hat{q}_{n-1}^y &\hat{q}_{n-1}^z \end{pmatrix} &= \begin{pmatrix}w_0^0 &q_0^x \cdot w_0^0 &q_0^y \cdot w_0^0 &q_0^z \cdot w_0^0 &| &w_0^1 &q_0^x \cdot w_0^1 &q_0^y \cdot w_0^1 &q_0^z \cdot w_0^1 &| &\cdots &| &w_0^{k-1} &q_0^x \cdot w_0^{k-1} &q_0^y \cdot w_0^{k-1} &q_0^z \cdot w_0^{k-1} \\ w_1^0 &q_1^x \cdot w_1^0 &q_1^y \cdot w_1^0 &q_1^z \cdot w_1^0 &| &w_1^1 &q_1^x \cdot w_1^1 &q_1^y \cdot w_1^1 &q_1^z \cdot w_1^1 &| &\cdots &| &w_1^{k-1} &q_1^x \cdot w_1^{k-1} &q_1^y \cdot w_1^{k-1} &q_1^z \cdot w_1^{k-1} \\ \cdots \\ w_{n-1}^0 &q_{n-1}^x \cdot w_{n-1}^0 &q_{n-1}^y \cdot w_{n-1}^0 &q_{n-1}^z \cdot w_{n-1}^0 &| &w_{n-1}^1 &q_{n-1}^x \cdot w_{n-1}^1 &q_{n-1}^y \cdot w_{n-1}^1 &q_{n-1}^z \cdot w_{n-1}^1 &| &\cdots &| &w_{n-1}^{k-1} &q_{n-1}^x \cdot w_{n-1}^{k-1} &q_{n-1}^y \cdot w_{n-1}^{k-1} &q_{n-1}^z \cdot w_{n-1}^{k-1} \end{pmatrix}\cdot\begin{pmatrix}\mathbf{A}_0^T \\ \mathbf{A}_1^T \\ \cdots \\ \mathbf{A}_{k-1}^T \end{pmatrix}\\ &= (\mathbf{U}_0 \quad | \quad \mathbf{U}_1 \quad | \quad \cdots \quad | \quad \mathbf{U}_{k-1}) \cdot\begin{pmatrix}\mathbf{A}_0^T \\ \mathbf{A}_1^T \\ \cdots \\ \mathbf{A}_{k-1}^T \end{pmatrix}\end{aligned}\]

\[\hat{\boldsymbol{q}} = \mathbf{U}\tilde{\boldsymbol{q}} \]

3 - 约束的降阶

posted @ 2020-11-16 15:30  wghou09  阅读(825)  评论(0编辑  收藏  举报