一种增强纹理力方法与流程

文档序号:11433482阅读:247来源:国知局
一种增强纹理力方法与流程

本发明属于虚拟现实中纹理力渲染领域,具体涉及一种增强纹理力的方法。



背景技术:

随着虚拟现实中人机交互技术的不断发展,越来越多的人机交互设备追求能给用户沉浸式感受,虽身处虚拟环境,但感觉和现实中一样真实。人机交互中一项重要的课题就是纹理力触觉再现。将物体表面的纹理通过力反馈给用户,能达到感知物体表面的纹理的效果。目前传统纹理力触觉再现主要反馈垂直物体表面法向力和平行物体表面摩擦力的合力,并通过纹理力触觉装置将合力输出给用户,达到让用户感知物体表面纹理的目的。



技术实现要素:

本发明通过对传统纹理力触觉再现方法加以改进,达到更加真实的纹理力触觉再现效果。技术方案包括对二维纹理图像表面三维微观形状重建和纹理力触觉渲染两个部分。第一部分采用采用sfs算法中的演化方法从二维纹理图像中重建表面三维微观形状;第二部分在传统纹理力触觉再现方法的基础上增加一个梯度反馈力,达到更加真实的再现效果。

1、先导入二维纹理图像,采用sfs算法中的演化方法从二维纹理图像中重建表面三维微观形状,其中演化方法是从图像中一组已知高度的参考点出发,逐步演化整个曲面的形状信息,该算法的关键是找到图像中可唯一确定形状的某一点或某一些点,从这些点出发,通过迭代方式,竟而求得整个表面的解。

1-1)sfs算法中采用的朗伯体表面反射模型为:

其中,e(x,y)为归一化图像亮度,(x,y)表示图像像素点的位置,r(p,q)为反射函数,(p,q)为表面梯度,光源l方向矢量为(-pm,-qm,1),m为定常数;

2-1)先将图像旋转某个角度,使图像x轴与光源方向在图像平面上的投影方向一致,计算高度后,再将图像逆方向旋转至原来位置,即可得到原位置上与图像点所对应的表面点的高度,演化方法步骤如下:

设表面某点沿偏角为t方向的微小增量为(dx,dy,dz),其中dx=costds,dy=sintds,s为路径参数;若与该点对应的表面法向量n=(n1,n2,n3)满足:

n1dx+n2dy+n3dz=0

令表面斜率对每一个方向t的邻点,在由邻域点亮度决定的等亮度线上寻找最速上升斜率k;

并由(p,q)和n的关系:求得满足条件的表面梯度值,一般会求得两组相反关系的表面梯度值,选择满足条件(cost,sint,k)·l≥0的表面梯度值,即选择远离光源方向的表面梯度值;其中,(p(d),q(d))为同一等亮度线上的表面梯度,d为等亮度线;

各方向上的邻域点高度值所求得当前点的高度值z(h+1)(x,y)为:

其中,h为迭代次数,且从点(x+costds,y+sintds)到点(x,y)会产生的估计高度

2)、计算各像素点的梯度值,对梯度值的大小分情况计算最终纹理力;假设a为经过归一化之后的图像,则各像素点的水平梯度值t1为:

像素点的垂直梯度值t2为:

最终得到该像素点的梯度值

2-1)当梯度值t<|λ|,λ为常数并且根据二维纹理图像中物体材质的变化而变化,表明物体表面平缓,此时最终纹理力等于传统纹理力fc,则最终纹理力fc′为:

fc′=fc=fn+ff

fn=k×z(h+1)(x,y)

ff=μ×fn×sign(v)

其中,fn为垂直表面的法向力,ff为平行表面的摩擦力,k为物体表面刚度系数且与物体材质有关,μ为摩擦系数,sign(v)为符号函数,v为虚拟点的速度;

2-2)当梯度值t>|λ|,表明在该点物体表面出现了陡增或者陡减情况,操作者所受梯度反馈力f′比较明显,此时梯度反馈力为主要受力,传统纹理力fc为次要受力,则最终纹理力fc′为:

fc′=αfc+βf′(α<β)

f′=k×|v|×sign(v)

其中,α,β分别表示传统纹理力和梯度反馈力的权重值。

有益效果

在传统纹理力计算方面加上一个与虚拟点速度方向相反的梯度反馈力,能达到更加真实的力触觉反馈效果。

纹理力触觉渲染是建立在表面三维微观形状上,建立表面三维微观形状采用明暗恢复形状技术(sfs),利用单幅图像中物体表面的明暗变化来恢复表面各点的相对高度,为进一步物体表面三维微观形状建立奠定基础。三维微观形状比起二维图片能反映现实物体的更多特征,能达到使操作者主动感知的能力。

附图说明

图1为本技术方案流程图;

图2为梯度值t<|λ|时纹理力触觉模型图;

图3为梯度值t>|λ|时纹理力触觉模型图。

具体实施方式

以下结合附图具体说明本发明技术方案。

如图1为本技术方案流程图,一种增强纹理力的方法,

1、先导入要处理的图像,采用sfs算法中的演化方法对其进行表面三维微观形状恢复;sfs方法中采用朗伯体表面反射模型,并且光源为无限远处点光源、成像几何关系为正交投影,朗伯体反射模型中物体表面点的图像亮度仅由该点光源入射角的余弦决定;

1)sfs算法中采用的朗伯体表面反射模型为:

其中,e(x,y)为归一化图像亮度,(x,y)表示图像像素点的位置,r(p,q)为反射函数,(p,q)为表面梯度,光源l方向矢量为(-pm,-qm,1),m为定常数;

2)先将图像旋转某个角度,使图像x轴与光源方向在图像平面上的投影方向一致,计算高度后,再将图像逆方向旋转至原来位置,即可得到原位置上与图像点所对应的表面点的高度,演化方法步骤如下:

设表面某点沿偏角为t方向的微小增量为(dx,dy,dz),其中dx=costds,dy=sintds,s为路径参数;若与该点对应的表面法向量n=(n1,n2,n3)满足:

n1dx+n2dy+n3dz=0

令表面斜率对每一个方向t的邻点,在由邻域点亮度决定的等亮度线上寻找最速上升斜率k;

并由(p,q)和n的关系:求得满足条件的表面梯度值,一般会求得两组相反关系的表面梯度值,选择满足条件(cost,sint,k)·l≥0的表面梯度值,即选择远离光源方向的表面梯度值;其中,(p(d),q(d))为同一等亮度线上的表面梯度,d为等亮度线;

各方向上的邻域点高度值所求得当前点的高度值z(h+1)(x,y)为:

其中,h为迭代次数,且从点(x+costds,y+sintds)到点(x,y)会产生的估计高度

2、第二部分先计算各像素点的梯度值,对梯度值的大小分情况计算最终纹理力;假设a为经过归一化之后的图像,则各像素点水平梯度值t1为:

各像素点垂直梯度值t2为:

最终得到该像素点的梯度值

1)当梯度值t<|λ|,λ为常数并且根据二维纹理图像中物体材质的变化而变化,如图2所示,表明物体表面平缓,此时最终纹理力等于传统纹理力fc,则最终纹理力fc′为:

fc′=fc=fn+ff

fn=k×z(h+1)(x,y)

ff=μ×fn×sign(v)

其中,fn为垂直表面的法向力,ff为平行表面的摩擦力,k为物体表面刚度系数且与物体材质有关,μ为摩擦系数,sign(v)为符号函数,v为虚拟点p的速度;

2)当梯度值t>|λ|,如图3所示,表明在该点物体表面出现了陡增或者陡减的情况,此时操作者所受梯度反馈力f′比较明显,因此此时梯度反馈力为主要受力,传统纹理力fc为次要受力,则最终纹理fc′力:

fc′=αfc+βf′(α<β)

f′=k×|v|×sign(v)

其中,α,β分别表示传统纹理力和梯度反馈力的权重值。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1