CN101635061A - 基于人眼立体视觉机制的自适应立体渲染方法 - Google Patents

基于人眼立体视觉机制的自适应立体渲染方法 Download PDF

Info

Publication number
CN101635061A
CN101635061A CN200910034805A CN200910034805A CN101635061A CN 101635061 A CN101635061 A CN 101635061A CN 200910034805 A CN200910034805 A CN 200910034805A CN 200910034805 A CN200910034805 A CN 200910034805A CN 101635061 A CN101635061 A CN 101635061A
Authority
CN
China
Prior art keywords
viewpoint
dimensional
parameter
adaptive
dimensional rendering
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200910034805A
Other languages
English (en)
Other versions
CN101635061B (zh
Inventor
闾国年
温永宁
盛业华
吴明光
周良辰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Panzhi Geographic Information Industry Research Institute Co., Ltd.
Original Assignee
Nanjing Normal University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Normal University filed Critical Nanjing Normal University
Priority to CN200910034805A priority Critical patent/CN101635061B/zh
Publication of CN101635061A publication Critical patent/CN101635061A/zh
Application granted granted Critical
Publication of CN101635061B publication Critical patent/CN101635061B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Processing Or Creating Images (AREA)

Abstract

本发明涉及一种基于人眼立体视觉机制的自适立体渲染方法,目标是针对单视点透视投影的三维可视化程序,自适应地实现立体渲染输出。该方法包括下列步骤:设定自适应立体渲染控制参数:自适应立体渲染控制参数包含控制自适应立体渲染的渲染状态控制参数、单目视点变换参数、视觉模型参数和左右视点调整参数;选择自适应立体参数生成算法:通过将单视点变换参数和视觉模型参数合成,产生立体渲染所需的左右视点变换参数对;设置自适应三维渲染流水线模型:将三维场景数据经过视点变换后分为两个子渲染流程,通过左视点变换和投影变换形成左通道图像,右视点调整变换和投影变换形成右通道图像,左右两个通道形成立体输出像对。

Description

基于人眼立体视觉机制的自适应立体渲染方法
技术领域
本发明涉及计算机图形学中的三维可视化技术,给出了一种自适应的双目立体视觉渲染方法,建立了基于该方法的自适应双目立体渲染流水线模型,支持将传统非立体显示的三维应用程序不加更改的进行立体显示,也可以简化现有的立体渲染模型,加快三维应用程序在立体渲染时的效率,降低进行开发时的难度。
背景技术
人眼具有天然的立体观察能力,借助于同一物体在人的左右两个眼睛中成像的差异,大脑可以获得物体的三维视觉。经典的计算机实时三维渲染的流水线,采用的绘制模型是基于三角面片的绘制模型,流水线的输入是由一系列三维几何顶点组成的三角面片的集合,由这个三角面片集合表示三维对象的几何形态,顶点包含三维的几何坐标,还包含颜色、纹理坐标、法线向量等参数供三维渲染之用。三维几何顶点经过一系列的坐标变换(世界变换、视点变换、投影变换、视口变换)等,由三维空间坐标,变换为二维图像上的坐标。三维流水线实现复杂,计算量巨大,工业界在降低应用复杂性,提高运算速度方面开展了两方面的工作:其一是定义标准的API(Application Programming Interface)接口,这个工作将复杂的三维渲染流水线以标准接口的方式提供,使得应用程序开发者通过标准接口编写三维渲染程序,API负责控制流水线的渲染流程;其二是开发具有三维渲染加速功能的硬件设备(显卡),通过硬件来实现渲染流水线的算法,提高实时渲染的效率。
三维应用程序通过3D API完成对三维场景的渲染,通过3D API可以将三维建模的对象在一定的参数下,通过透视投影的方式绘制到一幅图像(帧缓冲区)中,如果将相同的数据再按照人眼的立体视觉模型在两个视点下进行渲染,则可以产生两幅图像,形成立体像对,供立体输出和立体观察。但是这种方式需要三维应用程序独立的调用两次渲染过程,分别设置左视点参数、右视点参数,相同的数据要两次经过独立的渲染,才能产生立体像对。对于仅仅使用单视点绘制的程序,只能产生透视投影的效果,而不能产生真三维立体显示效果,而大部分的三维应用程序都是基于单视点透视投影技术的,所以,当需要这些三维应用程序的实现真三维立体输出时,必须更改程序的源代码,显示调用三维立体渲染过程。针对现有的立体显示技术存在的缺陷,本发明提出基于人眼立体视觉机制的自适应立体渲染方法,简化三维立体渲染的开发流程,实现任意三维应用程序自适应地实现真立体三维显示与观察。
发明内容
本发明的目的是改进现有三维可视化程序的开发模式,支持在不改变现有单视点三维渲染程序的情况下,针对单视点透视投影的三维可视化程序,自适应地实现双通道的三维立体输出。
计算机三维显示的基本原理是将三维场景经过一系列的几何变换和处理之后,生成一幅二维栅格图像在屏幕设备上输出。三维场景中包含一系列的三维对象,三维对象是由一系列三维顶点构成的几何图元组合而成。三维顶点是一个包含三维空间位置及其对应的渲染参数的结构。首先对顶点数据进行坐标变换和顶点的光照计算,在坐标变换中,描述物体几何形状的顶点被变换到视点为中心的坐标系下,而光照计算确定每个顶点应该具有的颜色和亮度,这些几何对象最终被栅格化成像素,在帧缓存中等待显示。如图1所示。
三维图形渲染的坐标变换都是将上一步变换结果作为输出的,构成一个顶点坐标变换的流水线,如附图2所示。所有三维对象的坐标均被统一到了同一个坐标系下,经过投影和裁剪形成规格化的坐标,通过栅格化变换形成图像像素。
Z缓冲区算法又称深度缓冲算法。由于二维平面坐标在透视投影下可以对应无限多个三维坐标。所以栅格化的几何对象包含了每个像素对应和视点距离相关的称为深度值的参数,如果栅格化的像素的深度值小于该位置原来像素的深度值,就用这个像素的值代替原来位置的值,这就保证了总是距离视点最近的像素被保存下来。
本发明的另一个基础是人眼的立体视觉原理。人有两只眼,两只眼有一定间隔,使得统一物体的影象在两眼中存在一些差异,大脑会根据这种差异产生立体感。三维立体显示就是基于这一原理,分别对两个视点进行渲染,生成两幅图像,分别呈现给左右眼,以获得立体感。
本发明的技术方案是:基于人眼立体视觉机制的自适应立体渲染方法,该方法包括下列步骤:
步骤1设定自适应立体渲染控制参数:自适应立体渲染控制参数包含控制自适应立体渲染的渲染状态控制参数、单目视点变换参数、视觉模型参数和左右视点调整参数;
步骤2选择自适应立体参数生成算法:通过将单视点变换参数和视觉模型参数合成,产生立体渲染所需的左右视点变换参数对;
步骤3设置自适应三维渲染流水线模型:将三维场景数据经过视点变换后分为两个子渲染流程,通过左视点变换和投影变换形成左通道图像,右视点调整变换和投影变换形成右通道图像,左右两个通道形成立体输出像对。
上述技术方案的具体说明如下:
(1)在一个双通道渲染流水线中集成两个单通道的三维渲染流水线,分别是左视点渲染流水线(Left Pipe Line)和右视点渲染流水线(Right Pipe Line)。
(2)将人眼的视觉模型参数(眼基距、视点交点)引入到双通道流水线中。
(3)用户按照单视点透视投影方式设定双通道流水线,主要通过视点参数,包括视点位置(EyePostion)、视点方向(LookAtDirection)、视点上方向(UpDirection);透视投影参数,包括近平面位置(zNear)、远平面位置(zFar)、视角(FieldOfView)、宽高比(Aspect)。如图3所示。
(4)根据视觉模型参数和单视点透视投影参数,左右两个视点是位于视点坐标系的X轴上距离原点两侧且与原点距离相等的点,设定视点距离参数(EyeDistance),构造出左右两个视点位置。按照立体渲染的基本原理,左右两个视点的视线可以平行,也可以相交,如果相交,则交点一定位于视点坐标系的y轴上。设定参数表示交点距原点的距离CrossDistance。
因为经过视点变换之后,所有数据都在视点空间形成的参数空间中,所以近平面宽度ZNearWidth为基本单位,EyeDistance和CrossDistance由该距离表示,有参数EyeDistanceFactor和CrossDistanceFactor。使得EyeDistance=ZNearWidth*EyeDistanceFactor,EyeDistance=EyeDistanceFactor*ZNearWidth。
(5)左右两个流水线共享相同的投影矩阵,而左右两个视点变换矩阵(LeftEyeTransform,RightEyeTransform)的关键参数,可以由如下算法求出:
算法分两种情况实现,考虑是否支持左右视点的视线相交(IsEyeCross):
A.当IsEyeCross为假时,算法执行如下步骤:
a1.求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor*ZNear/tan(FieldOfView/2)
a2.求视点坐标系在世界坐标系中的方向单位向量U、V、W:
U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz)。其中U是x轴方法向量,V是y轴方向向量,W是z轴方向向量。
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
a3.求左视点位置LeftEyePostion:
LeftEyePostion=EyePostion+U×eyeDistance
a4.用LeftEyePostion和LookAtDirection,UpDirection构造左视点变换矩阵LeftEyeTransform。
a5.求右视点位置RightEyePostion:
RightEyePostion=EyePosition-U·eyeDistance
a6.用RightEyePostion和LookAtDirection,UpDirection构造右视点变换矩阵RightEyeTransform。
a7.LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵。
B.当IsEyeCross为真时,算法执行如下步骤:
b1.求近平面宽度nearWidth:
nearWidth=ZNear/tan(FieldOfView/2)
b2.求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor·nearWidth
b3.求交点偏移距离eyeCrossDistance:
eyeCrossDistance=EyeCrossDistanceFactor·nearWidth
b4.求视点坐标系在世界坐标系中的方向单位向量U、V、W:
U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz)。其中U是x轴方法,V是y轴方向,W是z轴方向。
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
b5.求两视线相交位置EyeCrossPoint:
EyeCrossPoint=EyePosition+V·EyeCrossDistance
b6.求左视点位置LeftEyePostion:
LeftEyePostion=LeftEyePostion+U·eyeDistance
b7.求左视点方向向量
LeftEyeDirection=EyeCrossPoint-LeftEyePostion
b8.用LeftEyePosition,LeftEyeDirection,UpDirection构造左视点下的变换矩阵LeftEyeTransform。
b9.求右视点位置RightEyePostion:
RightEyePostion=EyePostion-U·eyeDistance
b10.求左视点方向向量
RightEyeDirection=EyeCrossPoint-RightEyePostion
b11.用RightEyePostion,RightEyeDirection,UpDirection构造右视点下的变换矩阵RightEyeTransform。
LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵。
(6)基于人眼视觉模型的集成双通道立体渲染流水线的渲染流程如下:
61.设置人眼视觉模型参数:眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
62.开始一帧场景绘制。
63.设置单目透视投影参数:视点参数,包括视点位置(EyePostion)、视点方向(LookAtDirection)、视点的正上方向(UpDirection);透视投影参数,包括近平面的位置(ZNear)、远平面的位置(ZFar)、视角(FieldOfView)、投影平面宽高比(aspect)。
64.按照上述(5)中的算法计算出左右通道的视点变换矩阵LeftEyeTransform,RightEyeTransform,透视投影变换矩阵ProjectTransform。
65.绘制一个三维对象:用LeftEyeTransform,ProjectTransform等变换,在左通道中渲染三维对象;用RightEyeTransform,ProjectTransform等变换,在由通道中渲染三维对象。左右通道中的绘制可以采用并行方式也可以采用串行方式。
66.对场景中的所有三维对象依次采用步骤65)的过程进行绘制。
67.结束一帧场景的绘制。
作为本发明的进一步改进,对基于视觉机制的集成双通道立体渲染流水线模型的用户接口如下:
(X)API模式:用以在编程层次控制视觉参数和状态控制参数:
X1.开启自适应双目立体渲染流水线的函数,调用IsStereoOpen状态为真。
X2.关闭自适应双目立体渲染流水线的函数,调用后IsStereoOpen为假。
X3.获取自适应双目流水线的状态的函数,返回当前流水线是否立体打开的状态(IsStereoOpen)
X4.设置人眼立体视觉参数的函数,可设置眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
X5.获取人眼立体视觉参数的函数,可获取眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
(Y)参数文件方式:在计算机存储设备的特定位置存储如下信息块:
Y1.否立体打开的状态(IsStereoOpen);
Y2.人眼立体视觉参数:人眼镜基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
用户程序启动流水线时,从特定位置读取上述信息,并保存到流水线中的相应变量中。
(Z)用户界面方式:用户程序启动流水线时,提供输入界面(字符界面和图形界面),输入如下信息保存在保存到流水线中的相应变量中:
Z1.否立体打开的状态(IsStereoOpen);
Z2.人眼立体视觉参数:人眼镜基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
附图说明
图1是计算机三维显示的基本原理图
图2是三维图形渲染流水线示意图
图3是单视点透视投影方式设定双通道流水线示意图
图4是本发明实施例1流程图
具体实施方式
下面结合附图和实施例做进一步说明。
实施例1
基于人眼立体视觉机制的自适应立体渲染方法,该方法包括下列步骤:
步骤1设定自适应立体渲染控制参数:自适应立体渲染控制参数包含控制自适应立体渲染的渲染状态控制参数、单目视点变换参数、视觉模型参数和左右视点调整参数;
步骤2选择自适应立体参数生成算法:通过将单视点变换参数和视觉模型参数合成,产生立体渲染所需的左右视点变换参数对;
步骤3设置自适应三维渲染流水线模型:将三维场景数据经过视点变换后分为两个子渲染流程,通过左视点变换和投影变换形成左通道图像,右视点调整变换和投影变换形成右通道图像,左右两个通道形成立体输出像对;
步骤4设置自适应立体渲染流水线控制接口。
本实施例的具体实施过程如图4所示。
基于人眼视觉模型的集成双通道立体渲染流水线的渲染流程如下:
设置人眼视觉模型参数:眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
开始一帧场景绘制。
如图3所示,设置单目透视投影参数:视点参数,包括视点位置(EyePostion)、视点方向(LookAtDirection)、视点的正上方向(UpDirection);透视投影参数,包括近平面的位置(ZNear)、远平面的位置(ZFar)、视角(FieldOfView)、投影平面宽高比(aspect)。
按照以下的算法计算出左右通道的视点变换矩阵LeftEyeTransform,RightEyeTransform,透视投影变换矩阵ProjectTransform。
绘制一个三维对象:用LeftEyeTransform,ProjectTransform等变换,在左通道中渲染三维对象;用RightEyeTransform,ProjectTransform等变换,在由通道中渲染三维对象。左右通道中的绘制可以采用并行方式也可以采用串行方式。对场景中的所有三维对象依次采用本方法进行绘制。
结束一帧场景的绘制。
透视投影变换矩阵ProjectTransform的算法如下:
算法分两种情况实现,考虑是否支持左右视点的视线相交(IsEyeCross):
A.当IsEyeCross为假时,算法执行如下步骤:
a1.求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor*ZNear/tan(FieldOfView/2)
a2.求视点坐标系在世界坐标系中的方向单位向量U、V、W:
U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz)。其中U是x轴方法向量,V是y轴方向向量,W是z轴方向向量。
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
a3.求左视点位置LeftEyePostion:
LeftEyePostion=EyePostion+U×eyeDistance
a4.用LeftEyePostion和LookAtDirection,UpDirection构造左视点变换矩阵LeftEyeTransform。
a5.求右视点位置RightEyePostion:
RightEyePostion=EyePosition-U·eyeDistance
a6.用RightEyePostion和LookAtDirection,UpDirection构造右视点变换矩阵
RightEyeTransform。
a7.LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵。
B.当IsEyeCross为真时,算法执行如下步骤:
b2.求近平面宽度nearWidth:
nearWidth=ZNear/tan(FieldOfView/2)
b2.求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor·nearWidth
b3.求交点偏移距离eyeCrossDistance:
eyeCrossDistance=EyeCrossDistanceFactor·nearWidth
b4.求视点坐标系在世界坐标系中的方向单位向量U、V、W:
U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz)。其中U是x轴方法,V是y轴方向,W是z轴方向。
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
b5.求两视线相交位置EyeCrossPoint:
EyeCrossPoint=EyePosition+V·EyeCrossDistance
b6.求左视点位置LeftEyePostion:
LeftEyePostion=LeftEyePostion+U·eyeDistance
b7.求左视点方向向量
LeftEyeDirection=EyeCrossPoint-LeftEyePostion
b8.用LeftEyePosition,LeftEyeDirection,UpDirection构造左视点下的变换矩阵LeftEyeTransform。
b9.求右视点位置RightEyePostion:
RightEyePostion=EyePostion-U·eyeDistance
b10.求左视点方向向量
RightEyeDirection=EyeCrossPoint-RightEyePostion
b11.用RightEyePostion,RightEyeDirection,UpDirection构造右视点下的变换矩阵RightEyeTransform。
LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵。
对基于视觉机制的集成双通道立体渲染流水线模型的用户控制接口可以采用下列三种模式之一:
(X)API模式:用以在编程层次控制视觉参数和状态控制参数:
X1.开启自适应双目立体渲染流水线的函数,调用IsStereoOpen状态为真。
X2.关闭自适应双目立体渲染流水线的函数,调用后IsStereoOpen为假。
X3.获取自适应双目流水线的状态的函数,返回当前流水线是否立体打开的状态(IsStereoOpen)
X4.设置人眼立体视觉参数的函数,可设置眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
X5.获取人眼立体视觉参数的函数,可获取眼基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
(Y)参数文件方式:在计算机存储设备的特定位置存储如下信息块:
Y1.否立体打开的状态(IsStereoOpen);
Y2.人眼立体视觉参数:人眼镜基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
用户程序启动流水线时,从特定位置读取上述信息,并保存到流水线中的相应变量中。
(Z)用户界面方式:用户程序启动流水线时,提供输入界面(字符界面和图形界面),输入如下信息保存在保存到流水线中的相应变量中:
Z1.否立体打开的状态(IsStereoOpen);
Z2.人眼立体视觉参数:人眼镜基距系数(EyeDistanceFactor)、视点汇聚距离系数(EyeCrossDistanceFactor)、是否启用视点汇聚(IsEyeCross)。
下面是用软件方法,在C++语言环境下,实现自适应的双通道渲染立体渲染:
(1)定义结构体类型:
struct Matrix{double mm[4][4];};
表示一个矩阵。
(2)定义一个结构体:
struct Vector3d{double x,y,z};
表示一个三维空间的点和向量。
(3)定义一个结构体
struct Camera {
              Vector3d Postion;//视点位置
              Vector3d LookAtDirection;//观察方向
              Vector3d UpDirection;//视点上方向
              };
表示单视点的位置和方向信息。
(4)定义结构体
struct StereoEyeModel{
          double EyeDistanceFactor;//表示人左右眼距离系数。
          double EyeCrossDistanceFactor;//表示人眼视线相交的距离系数
          bool IsEyeCross;//表示左右视线是否相交。
       };
(5)定义结构体
     struct PerspetiveProject{
            double ZNear;//近平面位置
            double ZNear;//远平面位置
            double FieldOfView;//视角
            double Aspect;//宽高比
     };
     表示透视投影参数
(6)定义类和实现单视点流水线类
class Pipeline{
private:
   Matrix ProjectMatrix;//表示投影矩阵
   Matrix WorldMatrix;  //表示世界变换矩阵
   Matrix ViewMatrix;   //表示视点变换矩阵
   int    Width;        //表示输出图像的宽度
   int    Height;       //表示输出图像的高度
   float DepthBuffer[len]//len=Width*height,表示深度缓冲区
   color ColorBuffer[len]//len同上,表示颜色缓冲去
   ...
public:
    void setProjectMatrix(Matrix*matrix);//设置投影矩阵。
    void setWorldMatrix(Matrix*matrix);//设置世界变换矩阵
    void setViewMatrix(Matrix*matrix);//设置视点变换矩阵
    void setDimension(int width;int height);//设置缓冲区的大小
    void clearBuffer(Color color);//将颜色缓冲区以指定的颜色清空,并情况深度缓
    冲区
    void drawGeometry(Geometry*geometry);//绘制相应的几何体,几何体经过
    WorldMatrix,VewMatrix,ProjectMatrix等变换,按照Z缓冲区算法,绘制到颜色
    缓冲区上。
    .....
};
在这个类中实现单视点的绘制流水线。
(7)定义和实现双视点立体流水线
class StereoPipeline{
private:
    Camera_Camera;//单视点信息
    StereoEyeModel EyeModel;//视觉模型信息
    PerspectiveProject Project;//透视投影信息
    Pipeline LeftPipeline;     //左流水线
    Pipeline RightPipeline;    //右流水线
public:
     viod setEyeModel(StereoEyeModel*em);//设置视觉模型
     void setWorldMatrix(Matrix*mat);//设置世界变换参数
     void setProject(PerspetiveProject*project);//投影信息
     void beginScene(Color color);//开始一帧场景绘制,用指定颜色清理
LeftPipeline、RightPipeline
     void setCamera(Camera*camera);//设置照相机参数
     void drawGeometry(Geometry*geometry);//绘制几何体
     ....
     void endScene();//结束一帧场景绘制
};
这个类实现双通道自适应立体绘制:
1)调用setEyeModel,设置视觉模型
2)调用设置投影信息,同时设置LeftPipeline和RightPipeline的ProjectMatrix
3)调用beginScene开始一帧绘制
4)调用setCamera,将根据算法设置LeftPipeline和RightPipeline的流水线中的setViewMatrix。
5)调用drawGeometry绘制一个几何体
6)调用endScene结束一帧绘制。

Claims (10)

1、基于人眼立体视觉机制的自适应立体渲染方法,其特征是,该方法包括下列步骤:
步骤1设定自适应立体渲染控制参数:自适应立体渲染控制参数包含控制自适应立体渲染的渲染状态控制参数、单目视点变换参数、视觉模型参数和左右视点调整参数;
步骤2选择自适应立体参数生成算法:通过将单视点变换参数和视觉模型参数合成,产生立体渲染所需的左右视点变换参数对;
步骤3设置自适应三维渲染流水线模型:将三维场景数据经过视点变换后分为两个子渲染流程,通过左视点变换和投影变换形成左通道图像,右视点调整变换和投影变换形成右通道图像,左右两个通道形成立体输出像对。
2、根据权利要求1所述的自适应立体渲染方法,其特征是,所述步骤3之后还包括以下步骤:步骤4设置自适应立体渲染流水线控制接口。
3、根据权利要求1所述的自适应立体渲染方法,其特征是,所述步骤1中自适应立体渲染控制参数包含如下三个部分:
A.单目透视投影参数,包括视点参数和透视投影参数,其中,
视点参数包括如下变量:a.视点位置,b.视点方向,c.视点的正上方向;
透视投影参数包括:a.近平面的位置,即一个垂直与Z轴,距离视点为ZNear的平面;b.远平面的位置,即一个垂直与Z轴,距离视点为ZFar的平面;c.视角,即一个视点左右边距形成的张角;d.投影平面宽高比;
B.立体视觉视点调整参数,该参数包含如下变量:
a.眼基距系数,b.视点汇聚距离系数,c.是否启用视点汇聚,该参数为真时,启动汇聚立体投影,为假时启动平行立体投影;
C.是否开启立体渲染支持状态参数,用以控制是否开启立体视觉支持。
4、根据权利要求1所述的自适应立体渲染方法,其特征是,所述步骤2的自适应立体渲染参数对生成算法具体为:基于步骤1所给参数,求解出针对三维几何坐标的左右两个坐标变换序列,每个序列均包含视点变换矩阵和投影变换矩阵。
5、根据权利要求1所述的自适应立体渲染方法,其特征是,所述步骤3中设置自适应三维渲染流水线模型具体为:应用步骤1的控制参数和步骤2的算法,结合单视点透视投影三维渲染模型实现左右两个单视点透视投影三维渲染通道。
6、根据权利要求2所述的自适应立体渲染方法,其特征是,所述自适应立体渲染流水线控制接口为API控制模式:用户程序通过API函数的方法开启/关闭自适应双目立体渲染流水线,设置人眼立体视觉模型参数;包含如下API函数:
a)开启自适应双目立体渲染流水线的函数,调用IsStereoOpen状态为真;
b)关闭自适应双目立体渲染流水线的函数,调用后IsStereoOpen为假;
c)获取自适应双目立体渲染流水线状态的函数,返回当前流水线是否立体打开的状态;
d)设置人眼立体视觉参数的函数,可设置眼基距系数、视点汇聚距离系数、是否启用视点汇聚;
e)获取人眼立体视觉参数的函数,可获取眼基距系数、视点汇聚距离系数、是否启用视点汇聚。
7、根据权利要求2所述的自适应立体渲染方法,其特征是,所述自适应立体渲染流水线控制接口为参数文件方法:用户程序启动立体渲染流水线,并运行流水线的初始化过程,流水线的初始化过程读取指定位置的配置文件,以确定流水线的运行状态。
8、根据权利要求2所述的自适应立体渲染方法,其特征是,所述自适应立体渲染流水线控制接口为用户界面方法:用户程序启动立体渲染流水线,并运行流水线的初始化过程,流水线的初始化过程提供一个用户交互界面,以确定流水线的运行状态。
9、根据权利要求4所述的自适应立体渲染方法,其特征是,所述参数算法是:
A.当IsEyeCross为假时,算法执行如下步骤:
A1)求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor*ZNear/tan(FieldOfView/2)
A2)求视点坐标系在世界坐标系中的方向单位向量U、V、W:U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz),其中U是x轴方法向量,V是y轴方向向量,W是z轴方向向量。
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
A3)求左视点位置LeftEyePostion:
LeftEyePostion=EyePostion+U×eyeDistance
A4)用LeftEyePostion,LookAtDirection和UpDirection构造左视点变换矩阵LeftEyeTransform;
A5)求右视点位置RightEyePostion:
RightEyePostion=EyePosition-U·eyeDistance
A6)用RightEyePostion,LookAtDirection和UpDirection构造右视点变换矩阵RightEyeTransform;
A7)LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵;
B.当IsEyeCross为真时,算法执行如下步骤:
B1)求近平面宽度nearWidth:
nearWidth=ZNear/tan(FieldOfView/2)
B2)求视点偏移距离eyeDistance:
eyeDistance=EyeDistanceFactor·nearWidth
B3)求交点偏移距离eyeCrossDistance:
eyeCrossDistance=EyeCrossDistanceFactor·nearWidth
B4)求视点坐标系在世界坐标系中的方向单位向量U、V、W:
U(ux,uy,uz),v(vx,vy,vz),w(wx,wy,wz),其中U是x轴方法,V是y轴方向,W是z轴方向,
则U=LookAtDirection
V=LookAtDirection×UpDirection
W=U×V
单位化U、V、W
U=U/|U|
V=V/|V|
W=W/|W|
B5)求两视线相交位置EyeCrossPoint:
EyeCrossPoint=EyePosition+V·EyeCrossDistance
B6)求左视点位置LeftEyePostion:
LeftEyePostion=LeftEyePostion+U·eyeDistance
B7)求左视点方向向量
LeftEyeDirection=EyeCrossPoint-LeftEyePostion
B8)用LeftEyePosition,LeftEyeDirection,UpDirection构造左视点下的变换矩阵LeftEyeTransform;
B9)求右视点位置RightEyePostion:
RightEyePostion=EyePostion-U·eyeDistance
B10)求左视点方向向量
RightEyeDirection=EyeCrossPoint-RightEyePostion
B11)用RightEyePostion,RightEyeDirection和UpDirection构造右视点下的变换矩阵RightEyeTransform;
LeftEyeTransform,RightEyeTransform即是所求矩阵,这两个矩阵均为4×4的矩阵。
10、根据权利要求5所述的自适应立体渲染方法,其特征是,一个三维对象的绘制分成左右两个分离的绘制过程:
(a)用LeftEyeTransform和ProjectTransform构成左视点的几何变换,对三维对象进行渲染,形成左视点下图像;
(b)用RightEyeTransform和ProjectTransform构成右视点的几何变换,对三维对象进行渲染,形成右视点下图像。
CN200910034805A 2009-09-08 2009-09-08 基于人眼立体视觉机制的自适应立体渲染方法 Active CN101635061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910034805A CN101635061B (zh) 2009-09-08 2009-09-08 基于人眼立体视觉机制的自适应立体渲染方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910034805A CN101635061B (zh) 2009-09-08 2009-09-08 基于人眼立体视觉机制的自适应立体渲染方法

Publications (2)

Publication Number Publication Date
CN101635061A true CN101635061A (zh) 2010-01-27
CN101635061B CN101635061B (zh) 2012-10-24

Family

ID=41594241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910034805A Active CN101635061B (zh) 2009-09-08 2009-09-08 基于人眼立体视觉机制的自适应立体渲染方法

Country Status (1)

Country Link
CN (1) CN101635061B (zh)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102157012A (zh) * 2011-03-23 2011-08-17 深圳超多维光电子有限公司 对场景进行立体渲染的方法、图形图像处理装置及设备、系统
CN102509336A (zh) * 2011-10-24 2012-06-20 克拉玛依红有软件有限责任公司 一种gpu加速的实时立体渲染方法
CN103955960A (zh) * 2014-03-21 2014-07-30 南京大学 一种基于单幅输入图像的图像视点变换方法
CN103996041A (zh) * 2014-05-15 2014-08-20 武汉睿智视讯科技有限公司 一种基于匹配的车辆颜色识别方法和系统
CN104104936A (zh) * 2013-04-05 2014-10-15 三星电子株式会社 用于形成光场图像的设备和方法
CN105679276A (zh) * 2011-12-14 2016-06-15 英特尔公司 用于多遍渲染的技术
CN105741341A (zh) * 2016-01-27 2016-07-06 桂林长海发展有限责任公司 一种三维空间环境成像系统及方法
CN105808220A (zh) * 2014-12-30 2016-07-27 深圳Tcl数字技术有限公司 应用程序显示三维立体效果的方法及装置
CN106210856A (zh) * 2016-07-26 2016-12-07 武汉斗鱼网络科技有限公司 在网络视频直播平台上观看3d全景视频的方法及系统
CN106504188A (zh) * 2016-11-23 2017-03-15 北京视觉智能科技有限公司 用于立体视觉呈现的人眼观察图像的生成方法和装置
CN107330846A (zh) * 2017-06-16 2017-11-07 浙江大学 一种基于屏幕块对的双目渲染流水线流程与方法
CN111193919A (zh) * 2018-11-15 2020-05-22 中兴通讯股份有限公司 一种3d显示方法、装置、设备及计算机可读介质
CN115457200A (zh) * 2022-08-31 2022-12-09 北京四维远见信息技术有限公司 2.5维图像自动真立体显示方法、装置、设备及存储介质
CN115471550A (zh) * 2022-08-31 2022-12-13 北京四维远见信息技术有限公司 2.5维图像空间几何方位角校正方法、装置、设备及介质
CN117689791A (zh) * 2024-02-02 2024-03-12 山东再起数据科技有限公司 三维可视化多场景渲染应用集成方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2798761B1 (fr) * 1999-09-17 2002-03-29 Thomson Multimedia Sa Procede de construction d'un modele de scene 3d par analyse de sequence d'images
CN101266546A (zh) * 2008-05-12 2008-09-17 深圳华为通信技术有限公司 一种实现操作系统三维显示的方法和一种三维操作系统
CN101477702B (zh) * 2009-02-06 2011-04-27 南京师范大学 计算机显卡的植入式真三维立体驱动方法

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102157012B (zh) * 2011-03-23 2012-11-28 深圳超多维光电子有限公司 对场景进行立体渲染的方法、图形图像处理装置及设备、系统
CN102157012A (zh) * 2011-03-23 2011-08-17 深圳超多维光电子有限公司 对场景进行立体渲染的方法、图形图像处理装置及设备、系统
CN102509336A (zh) * 2011-10-24 2012-06-20 克拉玛依红有软件有限责任公司 一种gpu加速的实时立体渲染方法
CN102509336B (zh) * 2011-10-24 2014-06-18 克拉玛依红有软件有限责任公司 一种gpu加速的实时立体渲染方法
CN105679276A (zh) * 2011-12-14 2016-06-15 英特尔公司 用于多遍渲染的技术
CN104104936A (zh) * 2013-04-05 2014-10-15 三星电子株式会社 用于形成光场图像的设备和方法
CN103955960A (zh) * 2014-03-21 2014-07-30 南京大学 一种基于单幅输入图像的图像视点变换方法
CN103955960B (zh) * 2014-03-21 2017-01-11 南京大学 一种基于单幅输入图像的图像视点变换方法
CN103996041B (zh) * 2014-05-15 2015-07-22 武汉睿智视讯科技有限公司 一种基于匹配的车辆颜色识别方法和系统
CN103996041A (zh) * 2014-05-15 2014-08-20 武汉睿智视讯科技有限公司 一种基于匹配的车辆颜色识别方法和系统
CN105808220A (zh) * 2014-12-30 2016-07-27 深圳Tcl数字技术有限公司 应用程序显示三维立体效果的方法及装置
CN105808220B (zh) * 2014-12-30 2020-03-17 深圳Tcl数字技术有限公司 应用程序显示三维立体效果的方法及装置
CN105741341A (zh) * 2016-01-27 2016-07-06 桂林长海发展有限责任公司 一种三维空间环境成像系统及方法
CN105741341B (zh) * 2016-01-27 2018-11-06 桂林长海发展有限责任公司 一种三维空间环境成像系统及方法
CN106210856A (zh) * 2016-07-26 2016-12-07 武汉斗鱼网络科技有限公司 在网络视频直播平台上观看3d全景视频的方法及系统
CN106210856B (zh) * 2016-07-26 2019-06-18 武汉斗鱼网络科技有限公司 在网络视频直播平台上观看3d全景视频的方法及系统
CN106504188A (zh) * 2016-11-23 2017-03-15 北京视觉智能科技有限公司 用于立体视觉呈现的人眼观察图像的生成方法和装置
CN106504188B (zh) * 2016-11-23 2018-10-23 北京清影机器视觉技术有限公司 用于立体视觉呈现的人眼观察图像的生成方法和装置
CN107330846A (zh) * 2017-06-16 2017-11-07 浙江大学 一种基于屏幕块对的双目渲染流水线流程与方法
CN107330846B (zh) * 2017-06-16 2019-07-30 浙江大学 一种基于屏幕块对的双目渲染流水线流程与方法
WO2018227950A1 (zh) * 2017-06-16 2018-12-20 浙江大学 一种基于屏幕块对的双目渲染流水线流程与方法
US11113878B2 (en) 2017-06-16 2021-09-07 Zhejiang University Screen tile pair-based binocular rendering pipeline process and method
CN111193919A (zh) * 2018-11-15 2020-05-22 中兴通讯股份有限公司 一种3d显示方法、装置、设备及计算机可读介质
CN111193919B (zh) * 2018-11-15 2023-01-13 中兴通讯股份有限公司 一种3d显示方法、装置、设备及计算机可读介质
CN115457200A (zh) * 2022-08-31 2022-12-09 北京四维远见信息技术有限公司 2.5维图像自动真立体显示方法、装置、设备及存储介质
CN115471550A (zh) * 2022-08-31 2022-12-13 北京四维远见信息技术有限公司 2.5维图像空间几何方位角校正方法、装置、设备及介质
CN115457200B (zh) * 2022-08-31 2023-04-14 北京四维远见信息技术有限公司 2.5维图像自动真立体显示方法、装置、设备及存储介质
CN117689791A (zh) * 2024-02-02 2024-03-12 山东再起数据科技有限公司 三维可视化多场景渲染应用集成方法
CN117689791B (zh) * 2024-02-02 2024-05-17 山东再起数据科技有限公司 三维可视化多场景渲染应用集成方法

Also Published As

Publication number Publication date
CN101635061B (zh) 2012-10-24

Similar Documents

Publication Publication Date Title
CN101635061B (zh) 基于人眼立体视觉机制的自适应立体渲染方法
CN101477700B (zh) 面向Google Earth与Sketch Up的真三维立体显示方法
CN101477701B (zh) 面向AutoCAD和3DS MAX软件的植入式真三维立体渲染方法
US6441815B1 (en) Method and system for high performance computer-generated virtual environments
JP4555722B2 (ja) 立体映像生成装置
Vallino et al. Haptics in augmented reality
US20190026935A1 (en) Method and system for providing virtual reality experience based on ultrasound data
JP4982862B2 (ja) プログラム、情報記憶媒体及び画像生成システム
CN105224288B (zh) 双目三维图形渲染方法及相关系统
CN102819855B (zh) 二维图像的生成方法及装置
CN101477702B (zh) 计算机显卡的植入式真三维立体驱动方法
CN116704106A (zh) 虚拟3d对象的立体渲染
JPH09330423A (ja) 三次元形状データ変換装置
CN101521828B (zh) 面向esri三维gis模块的植入式真三维立体渲染方法
CN101540056B (zh) 面向ERDAS Virtual GIS的植入式真三维立体渲染方法
CN101511034A (zh) 面向Skyline的真三维立体显示方法
CN101488229B (zh) 面向pci三维分析模块的植入式真三维立体渲染方法
CN101488232B (zh) 面向C Tech软件的植入式真三维立体显示方法
CN101488230B (zh) 面向VirtualEarth的真三维立体显示方法
CN101482978B (zh) 面向envi/idl的植入式真三维立体渲染方法
CN101561935B (zh) 面向GoCAD软件的植入式三维立体显示方法
KR101227183B1 (ko) 3d 그래픽 모델 입체 렌더링 장치 및 입체 렌더링 방법
CN101482977B (zh) 面向Microstation的植入式真三维立体显示方法
CN101561936B (zh) 面向GeoGlobe的真三维立体显示方法
JPH11184453A (ja) 表示装置及びその制御方法、コンピュータ可読メモリ

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190311

Address after: 210023 No. 18 Lingshan North Road, Qixia District, Nanjing City, Jiangsu Province, 4 Blocks 102

Patentee after: Nanjing Panzhi Geographic Information Industry Research Institute Co., Ltd.

Address before: 210097 No. 122, Ning Hai Road, Jiangsu, Nanjing

Patentee before: Nanjing Normal University