一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法技术

技术编号:37355967 阅读:24 留言:0更新日期:2023-04-27 07:06
本发明专利技术公开了一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其包括步骤为:步骤1:OpenMesh模型读入处理;步骤2:利用OpenGL渲染载入模型;步骤3:CPU利用CUDA、Opt C++API和GPU求解器的数据通信;步骤4:Opt非线性最小二乘求解ARAP。本发明专利技术主要包括模型读取,相关数据获取、预处理以及传输,能量函数编写(GPU侧问题定义),CPU和GPU以及Terra求解器的通信,问题求解,变量内存释放;其可以实现高精度高鲁棒性的三维ARAP网格变形,与此同时有较优的时间复杂度,能够满足实时CG要求。能够满足实时CG要求。能够满足实时CG要求。

【技术实现步骤摘要】
一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法


[0001]本专利技术涉及一种利用最小二乘DSLOpt优化的实时尽可能刚性ARAP(ARAP:as

rigid

as possible)网格变形方法,属于计算机图形学研究领域。

技术介绍

[0002]元宇宙是目前数字技术的发展热点。元宇宙是利用数字科技手段创造与现实世界映射与交互的虚拟世界空间。物体运动和变化在现实世界无处不在,相应地元宇宙中需要物体的运动与变形。
[0003]网格变形是计算机图形学领域的研究热点,主要有经典的拉普拉斯网格变形,基于保体积的网格变形,尽可能刚性ARAP(As

Rigid

As

Possible)网格变形等,这些方法的共同目标是求解给定物体网格以在固定锚点条件下的变形结果,拉普拉斯和ARAP网格变形均为基于线性/非线性最小二乘的网格变形方法。为了便于后面的介绍,首先对拉普拉斯变形进行叙述,拉普拉斯网格变形所基于的能量函数如下:
[0004][0005]其中L为拉普拉斯算子,式中p
i
和分别是原网格和变形后网格顶点。求解变形后的目标网格即求解P
/

[0006][0007]从而可以构建一个线性最小二乘模型:
[0008]A
T
Ax=A
T
y
[0009]其中A,x,y有如下形式:
[0010][0011]求解此线性方程组即可得到目标网格的每一个顶点的坐标,但是由于拉普拉斯形变仅考虑了拉普拉斯算子的计算结果,即只考虑了局部作用域(只和顶点坐标相关),所以通常在变形过程不具有旋转不变性,即如果形变过程中出现了旋转操作,则会出现变形后的目标网格存在局部放大或缩小的问题。
[0012]ARAP网格变形则是对拉普拉斯网格变形的改进,ARAP将关注点放在三维网格顶点之间的邻边上,在网格变形的过程中尽可能地去保证边长一定,这样便可以在尽可能符合
约束的条件下尽可能去满足局部不变性,有如下的能量函数。
[0013][0014]其中W权值可选为定值1(Laplacian)或cotangent Laplacian,p
/
为所求目标网格上的点,p为参考网格上的点(恒定不变),R为放射变换矩阵。整个能量函数约束限定生成网格上的每一条边和参考网格上的相应边旋转之后的长度尽可能相等。
[0015]对于上式的求解方法可以使用局部式、全局式方法,即交替求解R和p
/
,有如下过程:
[0016]1)局部式求解(构造法):已知p
/
,求解最优的R,对于第i个顶点,有
[0017][0018]所以
[0019][0020][0021][0022]令所以对于第i个顶点,只需要构造R使得RS的迹最大即可,即对S进行QR分解得
[0023]S
i
=U
i

i
V
iT
[0024]并令R
i
=V
i
U
iT

[0025]2)全局式求解(线性最小二乘),已知R,求解p
/
:
[0026][0027]上式为方程组中,从上向下第i个方程,对于锚点约束,只需要在最后添加即可,最终仍是求解线性系统
[0028]A
T
A
(n+c)
×
n
x
n
×3=A
T
y
(n+c)
×3[0029]使用ARAP算法所得到的网格变形通常能较好地保留原始网格的局部形状信息,并且最重要的一点是ARAP网格变形具有旋转不变性。
[0030]但是不论是拉普拉斯网格变形还是ARAP变形都要求一次变形的位置变化不能过
大,通俗来讲就是锚点的位置变化不能太大,只能一小步一小步进行交互式变形,当位置变化过大则会出现严重的失真问题。
[0031]对于ARAP存在的以上问题即使用手工求解线性系统(CPU端或GPU端)的方式会存在鲁棒性问题(对于不同的参数设置对于不同的情况会有不同的变形效果),并不能始终保持鲁棒性。

技术实现思路

[0032]本专利技术的目的是基于DSL实现高性能GPU非线性最小二乘求解器并应用于高精度高鲁棒性的实时尽可能刚性ARAP三维网格变形方法。
[0033]为实现上述目的,本专利技术采取的技术方案是:一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其包括如下步骤:
[0034]步骤1:OpenMesh模型读入处理;
[0035]步骤2:利用OpenGL渲染载入模型;
[0036]步骤3:CPU利用CUDA、Opt C++API和GPU求解器的数据通信;
[0037]步骤4:Opt非线性最小二乘求解ARAP。
[0038]进一步的,所述步骤1的具体步骤如下:
[0039]步骤1.1:利用OpenMesh以连通图的方式读入模型;
[0040]步骤1.2:利用形心计算公式对Mesh进行Geometry to Origin处理,公式如下:
[0041]For v in Mesh:
[0042][0043]步骤1.3:计算Mesh的顶点法线。
[0044]进一步的,所述步骤2的具体步骤如下:
[0045]步骤2.1:基于OpenGL4.5编写渲染所需GLSL shader,包括网格shader,线框模型shader以及锚点shader;
[0046]步骤2.2:准备材质贴图(用以以较低的成本获得较好的视觉效果);
[0047]步骤2.3:初始化MVP矩阵,编译shader,读取贴图以及利用OpenGL进行显存分配,将绘制调用单独封装,用于实时更新。
[0048]进一步的,所述步骤3的具体步骤如下:
[0049]步骤3.1:在GPU端创建求解ARAP所需量如下:
[0050]fit
cpu
:=1(float)
[0051]reg
cpu
:=1(float)
[0052]result
gpu
:=nv
×
3(float)
[0053]angle
gpu
:=nv
×
3(float)
[0054]ref
gpu
:=nv
×
3(float)
[0055]constrains
gpu
:=nv
×
3(float)
[0056]from
gpu
:=ne(int)
[0057]to
gpu
:=ne(int),...

【技术保护点】

【技术特征摘要】
1.一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其特征在于包括如下步骤:步骤1:OpenMesh模型读入处理;步骤2:利用OpenGL渲染载入模型;步骤3:CPU利用CUDA、Opt C++API和GPU求解器的数据通信;步骤4:Opt非线性最小二乘求解ARAP。2.根据权利要求1所述的一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其特征在于,所述步骤1的具体步骤如下:步骤1.1:利用OpenMesh以连通图的方式读入模型;步骤1.2:利用形心计算公式对Mesh进行Geometry to Origin处理,公式如下:For υ in Mesh步骤1.3:计算Mesh的顶点法线。3.根据权利要求1所述的一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其特征在于,所述步骤2的具体步骤如下:步骤2.1:基于OpenGL4.5编写渲染所需GLSL shader,包括网格shader,线框模型shader以及锚点shader;步骤2.2:准备材质贴图;步骤2.3:初始化MVP矩阵,编译shader,读取贴图以及利用OpenGL进行显存分配,将绘制调用单独封装,用于实时更新。4.根据权利要求1所述的一种利用最小二乘DSLOpt优化的实时ARAP网格变形方法,其特征在于,所述步骤3的具体步骤如下:步骤3.1:在GPU端创建求解ARAP所需量如下:fit
cpu
:=1(float)reg
cpu
:=1(float)result

【专利技术属性】
技术研发人员:杜振龙余彦松李晓丽陈东
申请(专利权)人:南京工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1