支持三维体数据内部视点漫游的球面体绘制方法

文档序号:6514734阅读:400来源:国知局
支持三维体数据内部视点漫游的球面体绘制方法
【专利摘要】本发明公开一种支持三维体数据内部视点漫游的球面体绘制方法。该方法包括:采用球面坐标表达构造三维体数据的球形代理几何并以之作为载体,构造三维体纹理;在光线投射过程中,判断当前视点和球形代理几何的相对位置,若当前视点已经进入球形代理几何,则以当前视点作为光线积分起始点,再用直线与球的求交算法计算,获取光线与球形代理几何的一个有效交点并以该有效交点作为光线积分的终止点;若当前视点没有进入球形代理几何,则直接使用直线与球的求交算法计算光线与球形代理几何的两个有效交点,以获得的两个有效交点作为光线积分的起始点和终止点。之后,计算光线积分,获得最终图像,达到体数据内部视点漫游的效果。
【专利说明】支持三维体数据内部视点漫游的球面体绘制方法
【技术领域】
[0001]本发明涉及一种支持三维体数据内部视点漫游的球面体绘制方法,属于图形绘制领域。
【背景技术】
[0002]光线投射法是一种主要应用于三维空间数据场的体绘制技术。无需构造中间图元,通过对体数据进行分类,赋予不同分类以不同的颜色和不透明度值,再沿每一条光线进行光线积分,由光线所在位置的体数据值通过传输函数查找获取对应的颜色和不透明度等光学属性进行混合累加,直接由三维数据场在屏幕上产生二维图像。其主要优点在于可显示体数据的表面信息以及内部结构信息,有利于领域专家和用户理解与分析数据,捕获重要特征,发掘未知知识和现象。因此体绘制在航空航天、医学影像、计算流体力学、气象学等众多领域得到了广泛应用。其它常用的体绘制算法还有足迹表法,错切变形法,三维纹理贴图法等。
[0003]随着体绘制技术应用的日益成熟和广泛,诸多领域的用户开始对其提出了新的要求。传统的体绘制方法,往往以立方体、长方体或者圆柱构造三维体数据的代理几何并以所述代理几何为载体构造三维体纹理,且局限于在代理几何外围对其进行观察和旋转等操作。对于特定的应用领域,用户希望看到更具真实感的情景下的体绘制效果。例如,以全球气象变化为背景的应用,如果以传统的方式进行体绘制和结果展示,领域专家只能在包围盒外观察和操作一个立方体的或者长方体的数据场体绘制结果,而这个数据场可能是全球某一时刻的气温场或者风速场等。这种体绘制结果展示和交互方式与“地球是近似圆形的,相应的数据场也应该是围绕地球分布”的传统感知和认识不匹配。气象专家在认知和感知上都更倾向于球形的、和真实情境相一致的数据场绘制结果。又如,以空军的飞机在真实的云层里穿行这样一个模拟驾驶场景为例,当飞机穿越云层的时候,处于云层的内部,传统的体数据观察和操作方式无法适用。亟需一种能在体数据内部进行自由漫游的体绘制方法。

【发明内容】

[0004]本发明的目的在于提供一种支持三维体数据内部视点漫游的球面体绘制方法。
[0005]为实现上述目的,本发明对传统的光线投射体绘制算法进行了改进。本发明方法的主要思路是采用球面坐标表达构造一个球形代理几何,并以球面坐标系下的三个空间维度坐标作为纹理坐标、以归一化后的三维体数据作为纹理数据、以所述球形代理几何作为载体构造三维体数据的三维体纹理,而在绘制过程前又将球面坐标转换回直角坐标表达,然后在光线投射过程中,通过当前视点与球形代理几何的相对位置判断当前视点是否进入球形代理几何,再结合直线与球的求交算法计算光线与球形代理几何的有效交点,由此获得不同的光线积分的初始点和光线积分的终止点,再从光线积分的起始点开始沿光线迭代地、递进地计算当前光线位置并将之转化为球面坐标表达以便将转化后的以球面坐标表达的当前光线位置作为纹理坐标进行三维体纹理查询,获得对应的三维体数据值,然后进行传输函数纹理查询,混合每个迭代步的颜色和不透明度直至光线积分的终止点,获得最终的体绘制图像,达到体数据内部视点漫游的效果。
[0006]为实现本发明的目的,本发明所采取的技术方案是:本发明支持三维体数据内部视点漫游的球面体绘制方法包括如下步骤:
[0007](I)加载三维体数据,将三维体数据的数据值做归一化处理;然后采用球面坐标表达构造归一化后的三维体数据的球形代理几何,并以球面坐标系下的三个空间维度坐标作为纹理坐标、以归一化后的三维体数据作为纹理数据、以所述球形代理几何作为载体构造三维体纹理,然后确定归一化后的三维体数据的数据值分别与颜色、不透明度之间的映射关系,以归一化后的三维体数据的数据值作为纹理坐标、以映射所得的颜色和不透明度作为纹理数据生成传输函数纹理;
[0008](2)对所述球形代理几何开启正面剔除功能,然后将所述球形代理几何按经纬度分块,再使用球面坐标和直角坐标转换将球形代理几何逐块地转化为直角坐标表达;逐块地将转化后的以直角坐标表达的球形代理几何的顶点信息、所述传输函数纹理、三维体纹理、直角坐标系下的当前视点位置以及球形代理几何的半径一并从CPU传入GPU,并作为可编程图形流水线的输入进行绘制,再通过硬件光栅化获得光线在球形代理几何上的出点信息;
[0009](3)由直角坐标系下的当前视点位置向屏幕所有像素发出光线,一个像素对应一条光线;以当前视点位置和所述出点信息计算光线的方向,通过比较当前视点到球形代理几何的球心位置的距离与球形代理几何的半径的大小,判断当前视点是否进入球形代理几何:若当前视点到球形代理几何的球心位置的距离小于等于球形代理几何的半径,表明当前视点进入球形代理几何,则以当前视点位置作为光线发射位置和光线积分的起始点,然后使用直线和球的求交算法计算得到光线与球形代理几何的一个有效交点,并以该有效交点作为光线积分的终止点;若当前视点到球形代理几何的球心位置的距离大于球形代理几何的半径,表明当前视点没有进入球形代理几何,则直接使用直线和球的求交算法计算得到光线与球形代理几何的两个有效交点,并以这两个有效交点中计算值较小的有效交点作为光线积分的起始点,而以计算值较大的有效交点作为光线积分的终止点;
[0010]对每一个像素所对应的光线计算光线积分以获得当前光线所对应的像素点的颜色和不透明度值;所述计算光线积分是指在光线积分的起始点和终止点之间,从光线积分的起始点开始,按以下方法沿着光线方向以固定步长逐步递进地进行光线采样,获取采样点的颜色和不透明度并与之前累积的颜色和不透明度进行混合,直至光线积分的终止点:
[0011]将当前迭代步计算得到的采样点作为当前光线位置,将该当前光线位置从直角坐标表达转化回球面坐标表达并归一化,接着以归一化后的当前光线位置作为纹理坐标进行纹理查询,从所述三维体纹理中获取当前光线位置的三维体数据的数据值,然后以当前光线位置的三维体数据的数据值作为纹理坐标进行纹理查询,从传输函数纹理中获取当前光线位置的三维体数据的数据值所对应的颜色和不透明度;再将获取到的颜色和不透明度与之前累积的颜色和不透明度作为输入参数,利用图像合成公式(I)和(II)对颜色和不透明度进行混合:
_ 2] Cout a out = Cin a in+Cnow a now(l-a J ( I )
[0013]aout = a in+anow(l-a J (II)[0014]式(I )和式(II)中,Cnmt表示当前迭代步所获取的颜色值,anOT表示当前迭代步所获取的不透明度值,Cin表示之前累积的颜色值,a ^表示之前累积的不透明度值,Cout表示经过当前迭代步的混合后的颜色值,a out表示经过当前迭代步的混合后的不透明度值,Cn0w> a now> Cm、Q in、Cout、O -的取值范围均为[O, I]。
[0015]与传统的体绘制技术相比,本发明的有益效果在于:结合光线投射体绘制算法的优点,同时针对特定应用领域需要更符合领域专家、用户认知和感知的三维体数据可视化和交互方式的实际问题,提供一种支持三维体数据内部视点漫游的球面体绘制方法;与现有的方法相比,本发明以球面坐标表达的球形代理几何作为三维体纹理的载体,贴近气象、海洋等应用领域的需求和认知,实现和应用简单直观,同时实现以任意位置为光线积分起始点的光线投射体绘制效果,达到视点在体数据内部的漫游功能,使得用户可移动视点进入体数据内部任意位置,自由漫游观察整个数据和场景,从任意角度和位置观察体绘制结果,直接观察体数据的细节和结构,可增强用户对于三维数据场的感知,提高心理认同度,给用户更真实直观的感受和体验,营造情景沉浸感,更有利于帮助用户从数据中发现未知的特征和知识,同时为未来的大屏高清可视化应用打下基础。此外,本发明充分地利用了图形硬件的优势,可满足实时渲染的性能要求。 【专利附图】

【附图说明】
[0016]图1是本发明中使用直线和球的求交算法计算光线与球形代理几何的有效交点的示意图。
【具体实施方式】
[0017]下面对本发明的支持三维体数据内部视点漫游的球面体绘制方法作进一步说明,具体步骤如下:
[0018]步骤I):加载三维体数据,并对三维体数据的数据值进行归一化,将三维体数据的数据值的范围变换到[0,I]之间。采用球面坐标表达构造三维体数据的球形代理几何;并以球面坐标系下的三个空间维度坐标作为纹理坐标,以归一化后的三维体数据作为纹理数据,以所述球形代理几何作为载体构造三维体纹理。同时,使用一维数组构建传输函数查找表,定义三维体数据的数据值与颜色的映射关系,以及三维体数据的数据值与不透明度的映射关系;以归一化的三维体数据的数据值作为纹理坐标,以映射所得的颜色和不透明度作为纹理数据生成传输函数纹理。
[0019]步骤2)在CPU端的初始化代码中,调用图形函数接口,启用可编程管线,创建并编译顶点着色器和片元着色器,设置渲染状态,开启正面剔除功能;将球形代理几何的三维数学表达按经纬度分解为N*M块矩形表达,建议经度方向取值N=200,纬度方向取值M=100,分解为200*100,亦可依据实际情况减小或者增大N和M的取值;再使用球面坐标和直角坐标转换将球形代理几何逐块地转化为直角坐标表达。至此,若无特别说明,接下来的绘制和计算流程都以直角坐标系表达。调用可编程着色语言函数接口将上述转换后的球形代理几何的顶点信息、传输函数纹理与三维体纹理、当前视点位置以及球形代理几何的半径R等一并从CPU传入GPU,作为可编程图形流水线的输入。
[0020]绘制球形代理几何,通过正面剔除,可在顶点着色器中获得球形代理几何的背面顶点信息;可编程图形流水线中,前述球形代理几何的背面顶点信息从顶点处理阶段进入片元处理阶段之前被硬件光栅化,由此获得光线在球形代理几何上的片元级别的出点信息,定义为ray_exit_point ;进入光线投射阶段,由当前视点位置向屏幕所有像素发出光线,一个像素对应一条光线。由于每条光线计算和处理互相独立、过程相同以及GPU的并行特性,所有光线的处理和计算在片元着色器上同时地、并发地进行。
[0021]步骤3)对于每一条光线,在获取上述信息后,在片元着色器中定义视点,即当前视点位置eye,如式(I)所示:
[0022]eye (x0, y0, z0) (I)
[0023]式⑴中,Χ(Ι、^、Ζ(Ι为当前视点位置的直角坐标表达,再以当前视点位置和出点信息构建光线方向向量rayDir并归一化,如式(2)所示,
[0024]rayDir (xd, yd, zd) = normalize (ray_exit_point-eye) (2)
[0025]式⑵中,xd、yd、zd分别为光线方向向量在直角坐标系下沿x、y、z三个坐标轴的分量,normalize代表归一化函数。定义光线Ray,如式(3)所示,
[0026]Ray = eye+t*rayDir (3)
[0027]式(3)中,t表示光线长度参数,即光线从当前视点位置eye出发沿光线方向rayDir前进的距离的度量,t的初始值为0,当t的取值为负数时代表无效的光线位置。将式(3)参数化得到如式(4)所示的光线的参数化方程:
[0028]X = x0+xd*t
[0029]y = y0+yd*t (4)
[0030]z = z0+zd*t
[0031]式(4)中,Xd, yd、Zd分别为光线方向向量在直角坐标系下沿x、y、z三个坐标轴的分量,Xryc^ztl为当前视点位置的直角坐标表达。由于球形代理几何球心在(0,0,0),可设球形代理几何的方程如(5)式所示,
[0032]X2s+y;+Z2s =R2(5)
[0033]式(5)中,R表示球形代理几何的半径,xs、ys、zs为球形代理几何上任意一点在直角坐标系下的位置。将光线参数化方程(4)代入球形代理几何的方程(5),得到光线与球形代理几何相交的一元二次形式方程,如式(6)所示,
[0034]A*t2+B*t+C = O (6)
[0035]其中,
[0036]Α = χ2?+y]+ζ] = 1
[0037]B = 2*(x0xd+y0yd+z0zd)
[0038]0 = 2*+ -l.Zq') — R
[0039]设式(6)的解的判别式为式(7):
[0040]discriminator = B2-4*A*C, A = I (7)
[0041]首先,通过比较当前视点到球形代理几何的球心位置的距离(即distEye = 4xl + v02+z0 )与球形代理几何的半径R,判断当前视点是否在球形代理几何内部。若distEye <= R,说明当前视点进入球形代理几何(如图1的光线2所示),则以当前视点的位置作为光线发射位置和光线积分的起始点,然后使用直线和球的求交算法计算光线与球形代理几何的有效交点,以便获得光线积分终止点,具体过程如下:
[0042]设光线与球形代理几何两交点的t值,即式(6)中的t,分别为e_point_0,e_point_l,由于当前视点在球形代理几何内部,所以判别式(7)大于O成立,式(6)有解。通过一元二次方程求根公式计算交点t值,如以下式(8)所示,
【权利要求】
1.一种支持三维体数据内部视点漫游的球面体绘制方法,其特征是,包括如下步骤: (1)加载三维体数据,将三维体数据的数据值做归一化处理;然后采用球面坐标表达构造归一化后的三维体数据的球形代理几何,并以球面坐标系下的三个空间维度坐标作为纹理坐标、以归一化后的三维体数据作为纹理数据、以所述球形代理几何作为载体构造三维体纹理,然后确定归一化后的三维体数据的数据值分别与颜色、不透明度之间的映射关系,以归一化后的三维体数据的数据值作为纹理坐标、以映射所得的颜色和不透明度作为纹理数据生成传输函数纹理; (2)对所述球形代理几何开启正面剔除功能,然后将所述球形代理几何按经纬度分块,再使用球面坐标和直角坐标转换将球形代理几何逐块地转化为直角坐标表达;逐块地将转化后的以直角坐标表达的球形代理几何的顶点信息、所述传输函数纹理、三维体纹理、直角坐标系下的当前视点位置以及球形代理几何的半径一并从CPU传入GPU,并作为可编程图形流水线的输入进行绘制,再通过硬件光栅化获得光线在球形代理几何上的出点信息; (3)由直角坐标系下的当前视点位置向屏幕所有像素发出光线,一个像素对应一条光线;以当前视点位置和所述出点信息计算光线的方向,通过比较当前视点到球形代理几何的球心位置的距离与球形代理几何的半径的大小,判断当前视点是否进入球形代理几何:若当前视点到球形代理几何的球心位置的距离小于等于球形代理几何的半径,表明当前视点进入球形代理几何,则以当前视点位置作为光线发射位置和光线积分的起始点,然后使用直线和球的求交算法计算得到光线与球形代理几何的一个有效交点,并以该有效交点作为光线积分的终止点;若当前视点到球形代理几何的球心位置的距离大于球形代理几何的半径,表明当前视点没有进入球形代理几何,则直接使用直线和球的求交算法计算得到光线与球形代理几何的两个有效交点,并以这两个有效交点中计算值较小的有效交点作为光线积分的起始点,而以计算值较大的有效交点作为光线积分的终止点; 对每一个像素所对应的光线计算光线积分以获得当前光线所对应的像素点的颜色和不透明度值;所述计算光线积分是指在光线积分的起始点和终止点之间,从光线积分的起始点开始,按以下方法沿着光线方向以固定步长逐步递进地进行光线采样,获取采样点的颜色和不透明度并与之前累积的颜色和不透明度进行混合,直至光线积分的终止点:` 将当前迭代步计算得到的采样点作为当前光线位置,将该当前光线位置从直角坐标表达转化回球面坐标表达并归一化,接着以归一化后的当前光线位置作为纹理坐标进行纹理查询,从所述三维体纹理中获取当前光线位置的三维体数据的数据值,然后以当前光线位置的三维体数据的数据值作为纹理坐标进行纹理查询,从传输函数纹理中获取当前光线位置的三维体数据的数据值所对应的颜色和不透明度;再将获取到的颜色和不透明度与之前累积的颜色和不透明度作为输入参数,利用图像合成公式(I )和(II)对颜色和不透明度进行混合:
C0Ut α out = Cin a in+Cnow anow(l-a J ( I )
α out = α in+α now (1-α in)(Π) 式(I )和式(II)中,CnOT表示当前迭代步所获取的颜色值,αηΜ表示当前迭代步所获取的不透明度值,Cin表示之前累积的颜色值,α ^表示之前累积的不透明度值,Cout表示经过当前迭代步的混合后的颜色值,a _表示经过当前迭代步的混合后的不透明度值,Cnow,a now> Cm、a in、Cout> O -的取值范围均为[O, I]。
【文档编号】G06T17/00GK103559733SQ201310466860
【公开日】2014年2月5日 申请日期:2013年10月9日 优先权日:2013年10月9日
【发明者】陈为, 丁治宇, 陈海东 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1