发明名称 支持三维体数据内部视点漫游的球面体绘制方法
摘要 本发明公开一种支持三维体数据内部视点漫游的球面体绘制方法。该方法包括:采用球面坐标表达构造三维体数据的球形代理几何并以之作为载体,构造三维体纹理;在光线投射过程中,判断当前视点和球形代理几何的相对位置,若当前视点已经进入球形代理几何,则以当前视点作为光线积分起始点,再用直线与球的求交算法计算,获取光线与球形代理几何的一个有效交点并以该有效交点作为光线积分的终止点;若当前视点没有进入球形代理几何,则直接使用直线与球的求交算法计算光线与球形代理几何的两个有效交点,以获得的两个有效交点作为光线积分的起始点和终止点。之后,计算光线积分,获得最终图像,达到体数据内部视点漫游的效果。
申请公布号 CN103559733B 申请公布日期 2017.02.08
申请号 CN201310466860.X 申请日期 2013.10.09
申请人 浙江大学 发明人 陈为;丁治宇;陈海东
分类号 G06T17/00(2006.01)I 主分类号 G06T17/00(2006.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 陈昱彤
主权项 一种支持三维体数据内部视点漫游的球面体绘制方法,其特征是,包括如下步骤:(1)加载三维体数据,将三维体数据的数据值做归一化处理;然后采用球面坐标表达构造归一化后的三维体数据的球形代理几何,并以球面坐标系下的三个空间维度坐标作为纹理坐标、以归一化后的三维体数据作为纹理数据、以所述球形代理几何作为载体构造三维体纹理,然后确定归一化后的三维体数据的数据值分别与颜色、不透明度之间的映射关系,以归一化后的三维体数据的数据值作为纹理坐标、以映射所得的颜色和不透明度作为纹理数据生成传输函数纹理;(2)对所述球形代理几何进行正面剔除,然后将所述球形代理几何按经纬度分块,再使用球面坐标和直角坐标转换将球形代理几何逐块地转化为直角坐标表达;逐块地将转化后的以直角坐标表达的球形代理几何的顶点信息、所述传输函数纹理、三维体纹理、直角坐标系下的当前视点位置以及球形代理几何的半径一并从CPU传入GPU,并作为可编程图形流水线的输入进行绘制,再通过硬件光栅化获得光线在球形代理几何上的出点信息;(3)由直角坐标系下的当前视点位置向屏幕所有像素发出光线,一个像素对应一条光线;以当前视点位置和所述出点信息计算光线的方向,通过比较当前视点到球形代理几何的球心位置的距离与球形代理几何的半径的大小,判断当前视点是否进入球形代理几何:若当前视点到球形代理几何的球心位置的距离小于等于球形代理几何的半径,表明当前视点进入球形代理几何,则以当前视点位置作为光线发射位置和光线积分的起始点,然后使用直线和球的求交算法计算得到光线与球形代理几何的一个有效交点,并以该有效交点作为光线积分的终止点;若当前视点到球形代理几何的球心位置的距离大于球形代理几何的半径,表明当前视点没有进入球形代理几何,则直接使用直线和球的求交算法计算得到光线与球形代理几何的两个有效交点,并以这两个有效交点中计算值较小的有效交点作为光线积分的起始点,而以计算值较大的有效交点作为光线积分的终止点;对每一个像素所对应的光线计算光线积分以获得当前光线所对应的像素点的颜色和不透明度值;所述计算光线积分是指在光线积分的起始点和终止点之间,从光线积分的起始点开始,按以下方法沿着光线方向以固定步长逐步递进地进行光线采样,获取采样点的颜色和不透明度并与之前累积的颜色和不透明度进行混合,直至光线积分的终止点:将当前迭代步计算得到的采样点作为当前光线位置,将该当前光线位置从直角坐标表达转化回球面坐标表达并归一化,接着以归一化后的当前光线位置作为纹理坐标进行纹理查询,从所述三维体纹理中获取当前光线位置的三维体数据的数据值,然后以当前光线位置的三维体数据的数据值作为纹理坐标进行纹理查询,从传输函数纹理中获取当前光线位置的三维体数据的数据值所对应的颜色和不透明度;再将获取到的颜色和不透明度与之前累积的颜色和不透明度作为输入参数,利用图像合成公式(Ⅰ)和(Ⅱ)对颜色和不透明度进行混合:C<sub>out</sub>α<sub>out</sub>=C<sub>in</sub>α<sub>in</sub>+C<sub>now</sub>α<sub>now</sub>(1‑α<sub>in</sub>)           (Ⅰ)α<sub>out</sub>=α<sub>in</sub>+α<sub>now</sub>(1‑α<sub>in</sub>)                   (Ⅱ)式(Ⅰ)和式(Ⅱ)中,C<sub>now</sub>表示当前迭代步所获取的颜色值,α<sub>now</sub>表示当前迭代步所获取的不透明度值,C<sub>in</sub>表示之前累积的颜色值,α<sub>in</sub>表示之前累积的不透明度值,C<sub>out</sub>表示经过当前迭代步的混合后的颜色值,α<sub>out</sub>表示经过当前迭代步的混合后的不透明度值,C<sub>now</sub>、α<sub>now</sub>、C<sub>in</sub>、α<sub>in</sub>、C<sub>out</sub>、α<sub>out</sub>的取值范围均为[0,1]。
地址 310058 浙江省杭州市西湖区余杭塘路866号