【计算机图形学】VS2022的OpenGL安装

本文详细指导如何在Visual Studio 2022中安装和配置OpenGL,涉及表面编辑操作、Laplacian坐标及其在建模中的应用,包括坐标变换、误差最小化和敏感性问题的解决方案。通过实例演示,学习者能掌握关键技术和算法,如邻接矩阵、Laplacian算子和坐标转换。
摘要由CSDN通过智能技术生成

基于Visual Studio 2017的opengl安装
我是Visual Studio 2022同样适用。每一步弄下来都不报错,很赞,截个图,担心以后原文的图被和谐了:
按照它每一步就可以弄出来。
在这里插入图片描述
CSDN弄了个发文助手检测,所以凑一下字数吧:
已存在的问题
surface编辑操作通常需要尽可能多的保持surface的细节。拉普拉斯坐标对于线性变换十分敏感。因此,形状的细节结构可以被平移,但不能够被旋转或缩放。
基于mesh的Laplacian提供一种surface表达,通过mesh的Laplacian来增强对局部线性刚性变换和缩放。基于这些表达,可以用于一些有用的编辑操作:基于一个变换手柄在感兴趣的区域做一些任意自由度交互的变形,在两个surfaces之间迁移和混合几何细节,移植一部分surface细节至另一个surface。所有操作的解都是解一个稀疏的线性方程组,从而达到能够实时交互的目标。
在相关的算法公式中,使用pair(K,V)来表示,K描述vertices的链接关系,V={v_1,…,v_n}描述vertices的几何位置,这个位置表示时一个三维坐标。对于某个vertex i的邻居环被定义为N_i={j|(i,j)∈K},d_i表示N_i中的元素数量。
整个mesh的Laplacian坐标∆={δ_i}。使用Laplacian来表示顶点的坐标,即通过顶点与周围邻居点(拓扑领域)中心坐标之间的差距来描述该顶点的Laplacian坐标。即:
█(δ_i=L(v_i )#(1) )
L使用统一的权重进行定义:
█(L(v_i )=v_i-1/d_i ∑_(j∈N_i)▒v_j #(2) )
公式(2)中,v_i表示的就是顶点,而d_i为拓扑领域内顶点的数量,最后的求和就是对拓扑邻域内的顶点位置求和。被减项就表示周围点的中心。
同时,我们也可以从Laplacian坐标∆恢复成原始坐标V。我们设A为mesh的邻接矩阵,D=diag(d_1,…,d_n)是矩阵的度。则∆=LV,且L=I-D^(-1) A。通常,矩阵L被认为是具有连接的A的Laplacian算子,这也就是为什么我们称vertex i的Laplacian坐标为δ_i。
其中,在上一段落中讲述的式子中,I为单位矩阵,而D为一个对角矩阵,对角线上的值D_ii=d_i,而d_i是第i点邻接点的数目。A矩阵是邻接矩阵,则我们可知,当点v_i和v_j相邻时,A_ij=1,若不相邻则A_ij=0,如式(3)。
█(A_ij={█(1, (i,j)相邻@0, (i,j)不相邻)┤#(3) )
因为L=I-D^(-1) A中含有一个对矩阵求逆的操作,又因为实际上在计算机中求矩阵的逆不叫麻烦,所以在使用这个公式时,我们可以将两边同乘以D将公式变形为L_S=DL=D-A。此时有:
█((L_S )ij={█(d_i, i=j@-1, (i,j)相邻@0, otherwise)┤#(4) )
使用Laplacian坐标∆来执行建模操作的方法是固定几个顶点为绝对位置,即:
█(v_i^‘=u_i, i∈{m,…,n},m<n#(5) )
同时我们通过对给定的Laplacian坐标∆固定几何V’的Laplacian坐标,从而求解剩下的顶点{v_i’},i∈{1,…,m-1}。当固定了一组点,对V进行恢复一定是会产生一些误差的,我们希望能够最小化误差并获得一个解,这个解就是我们希望求的对网格坐标编辑后的结果。误差公式如式(6)。
█(E(V^’ )=∑
(i=1)n▒〖||δ_i-L(v_i’ )| |2+∑_(i=m)n▒〖||v_i^‘-u_i | |^2 〗〗#(6) )
但同时又有一个问题,就是Laplacian坐标对线性变换敏感,因此需要解决旋转和缩放的问题。本文的方法为每一个点计算一个基于新坐标V’的拟合变换T,以获得适配结果,T是一个针对V’的函数,由此,推出了新的最小化能量表示(如式7)。
█(E(V^’ )=∑_(i=1)^n▒〖||T_i (V^’ ) δ_i-L(v_i^’ )| |2+∑_(i=m)n▒〖||v_i^‘-u_i | |^2 〗〗#(7) )
其中V’和T都是未知的,若T的关联系数由V’进行表示,那么求V^‘自然推出T:
█(min┬(T_i )⁡( │|T_i v_i-v_i^’ | |^2+∑_(j∈N_i)▒〖||T_i v_j-v_j^’ ||^2 〗)#(8) )
这是一个二次表达式,最小化的结果是一个V^'的线性方程。这里的T需要被限制,T可以包括旋转,各向同性的缩放和平移。
T的转换部分通过homogeneous coordinates实现,线性部分需要满足以下需求:用矩阵表示各向同性缩放和旋转可以被写作T=s exp(H),其中H是一个斜对称矩阵,在3D中,写对称矩阵就是模仿了向量的叉乘,即Hx=h×x。利用3×3协矩阵的一些性质,我们可以推导出如式(9)所示的式子。
█(s expH=s(αI+βH+γh^T h)#(9) )

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值