CN101162526A - 二次曲面非线性折射和反射场景的实时光线跟踪方法 - Google Patents

二次曲面非线性折射和反射场景的实时光线跟踪方法 Download PDF

Info

Publication number
CN101162526A
CN101162526A CNA2004100090589A CN200410009058A CN101162526A CN 101162526 A CN101162526 A CN 101162526A CN A2004100090589 A CNA2004100090589 A CN A2004100090589A CN 200410009058 A CN200410009058 A CN 200410009058A CN 101162526 A CN101162526 A CN 101162526A
Authority
CN
China
Prior art keywords
refraction
reflection
point
cos
cylinder
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.)
Pending
Application number
CNA2004100090589A
Other languages
English (en)
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.)
Tsinghua University
Original Assignee
Tsinghua 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 Tsinghua University filed Critical Tsinghua University
Priority to CNA2004100090589A priority Critical patent/CN101162526A/zh
Publication of CN101162526A publication Critical patent/CN101162526A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

二次曲面非线性折射和反射场景的实时光线跟踪方法,属于计算机图形学与计算机应用技术领域。本发明采用计算圆柱反射和圆锥反射的虚顶点的计算方法,给出了圆柱反射和圆锥反射虚顶点的4次近似计算公式;提出了圆柱和圆锥折射虚顶点的近似计算方法,并给出了相应的计算公式;提出了球面反射、球折射、圆柱面反射、圆柱体折射、圆锥面反射、椭球面反射、抛物面反射和圆环面反射的虚顶点的鲁棒的快速迭代计算方法。有了这些虚顶点之后,在绘制时就可以快速生成相应的非线性反射和折射虚物体,然后利用OpenGL的累积模板和alpha blending技术便能够以接近实时的速率绘制和显示具有非线性反射和折射效果的高真实感图形。

Description

二次曲面非线性折射和反射场景的实时光线跟踪方法
技术领域
二次曲面非线性折射和反射场景的实时光线跟踪方法,属于计算机图形学与计算机应用技术领域。
背景技术
光线跟踪算法是生成三维真实感图形的最常用的算法之一,它是Turner Whitted于1980年在国际杂志Communications of the ACM,Vol.23,No.6,pp.343-349上发表的论文“An improvedIllumination Model for Shaded Display”中提出来的一种真实感图形生成方法。它能够生成高质量的真实感图形,但是其计算速度比较慢,不能应用于实时交互的应用系统。为了提高光线跟踪的速度,多种改进方法应运而生。1984年P.S.Heckbert和P.Hanrahan等人在《ComputerGraphics》上发表论文,首次提出了光束跟踪的方法。光束跟踪作为传统光线跟踪的一种改进,被用来提高渲染速度,处理走样问题,改善渲染质量及效率等等。但光束跟踪只能处理平面反射体的镜面反射,对于象厚玻璃一类的非线性折射问题以及曲面反射问题等等则不能处理,只能作线性近似。
1996年,M.Levoy和P.Hanrahan.等人在SIGGRAPH上发表论文,提出了用4维光场来实现图形、图像的绘制的方法。在预处理中用多维光场计算图像的映像,然后在实时显示时,每一帧中重新使用映像结果。但光场方法中仍有图像信息存储、走样和快速查找等问题有待进一步解决。
视点无关的环境映射的方法是W.Heidrich等人在1998年提出来的。利用环境映射,通过硬件的支持来实现真实感图像的显示,能达到交互的速率,但是却不能达到实时。它一般多用于处理反射现象,并且常常存在明显的误差。
1998年Ofek和Rappoport提出了利用反射虚物体和扩张映射(explosion map)来实现曲面反射的光线跟踪效果,它针对反射体将所有可能处在反射区域内的顶点进行变换,生成虚物体,然后同真实物体一样进行统一处理;但是他们不能处理折射问题,且扩张映射的误差较大,在递归过程中误差的累积和传播十分严重,生成的结果图像质量不高。虽然他们采用插值方法加以改进,但效果有限,却增加了不少计算量。
目前有许多交互式图形系统利用硬件,每秒钟能处理大量的三维面片,但基本上都只能提供深度缓存(Z-Buffer)算法的绘制效果,不能处理反射和折射场景的真实感图形问题。
发明内容:
本发明的目的在于提供一种能处理反射和折射场景的真实感图形问题的二次曲面非线性折射和反射实时光线跟踪方法。
主要包括以下内容:
二次曲面非线性折射和反射的实时光线跟踪技术;
对于二次曲面反射和折射体,我们提出了直接计算虚顶点及虚物体的方法,利用虚物体,并利用OpenGL-Compatible的图形硬件加速,实时生成真实感图形。
附图说明
图1利用光线跟踪计算虚顶点。
图2圆柱反射示意图。
图3圆柱折射示意图。
图4圆锥折射示意图。
图5球面反射示意图。
图6球面折射示意图。
图7圆柱反射示意图。
图8圆锥、抛物面、椭球面、圆环反射示意图,其中(a)圆锥反射;(b)抛物面反射;(c)椭球面反射;(d)圆环反射。
具体实施方式
下面结合附图对本发明做进一步说明:
1、基本思想
如图1所示,光线L从视点A出发,经过折射和反射后到达V点,这是光线跟踪的基本思路。然而给定任意一点V,要准确地得到从视点A出发经过折射到达V点的光线L’,在理论上却是很难计算的,因为折射问题一般是非线性的。
根据光学映射虚对象的概念,当L经过若干次反射或折射,与某一物体的平面M相交于V点时,与传统光线跟踪算法不同,我们不是利用光照模型计算对应象素点的颜色值,而是计算点V的光学映射虚顶点V′。假设光线L经过若干次反射或折射到达V时,经过的路径的长度总和为:
d=d1+d2+…+d5
则虚顶点V′的计算公式为: V = A + d B - A | B - A | 其中A是视点,B是投影平面上一个采样点。
2、圆柱面反射和折射场景的实时光线跟踪
(1)圆柱面反射
如图2,视点V发出的光线经圆柱表面上I点反射后到达物体顶点P,欲求顶点P对应的虚顶点,可首先求出I点坐标,根据上面的虚物体定义可解出虚顶点坐标。不失一般性,假设圆柱的对称轴与坐标系的Z轴重合。已知条件为物体顶点P(Px,Py,Pz)和视点V(Vx,Vy,Vz),设入射点I(rcosθ,rsinθ,z),则法向N为(rcosθ,rsinθ,0)。其中θ是入射点I处的法线与X轴的夹角。
根据反射定律有∠PIN=∠NIV,所以:
IP → | IP | + IV → | IV | = KN → - - - ( 2 )
另:cos2θ+sin2θ=r2
由公式(2)得到
( P x - r cos ( θ ) , P y - r sin ( θ ) , P z - z ) ( P x - r cos ( θ ) ) 2 + ( P y - r sin ( θ ) ) 2 + ( P z - z ) 2 + ( V x - r cos ( θ ) , V y - r sin ( θ ) , V z - z ) ( V x - r cos ( θ ) ) 2 + ( V y - r sin ( θ ) ) 2 + ( V z - z ) 2
= K ( cos ( θ ) , sin ( θ ) , 0 )
这是一个未知数为z、cosθ和K的三元高次方程组,经消元后得到一个关于cosθ的一元六次方程。由于这种方程没有解析表达式可以求解,考虑到|cosθ|≤1,我们可以取方程的低四次项,利用四次方程求解公式求得cosθ。条件是当|cosθ|的值越接近于零时,四次方程的解越接近于六次方程的解,为此,在求解前,我们首先对点P和V的坐标进行预处理。如图2所示,P在XY平面的投影P1,V在XY平面投影V1,OQ为∠P1OV1的角平分线,将点P、V绕Z进行旋转,旋转的角度为OV1与Y轴的夹角,这使得cosθ更接近0,从而提高了方程近似解的精度。
根据cosθ,可计算得到I点坐标。最后由虚顶点计算方法可得到P对应的虚顶点P′
P ′ = V + ( | I - P | + | I - V | ) I - V | I - V |
我们用光线跟踪的方法产生了两组点,然后用上面的公式,反算I。具体的结果如下表所示。
Figure A20041000905800101
(2)圆柱面折射
已知:视点V坐标(x1,y1,z1),场景中的点P坐标(x2,y2,z2).O为圆柱底面中心,设为坐标原点,z轴沿圆柱轴线向上.圆柱半径r,折射率为η.未知:设入射点Q1坐标(rcos,rsin,q1),出射点Q2坐标(rcosρ,rsinρ,q2).记u=|VQ1|,v=|Q1Q2|,w=|Q2P|.沿光线方向,在Q1点入射角和出射角分别为α1和β1,在Q2点入射角和出射角分别为β2和α2,如图所示.V,P,Q1和Q2在圆柱底面上的投影分别为V′,P′,Q′1和Q′2,Q′1V′和Q′2P′与底面圆周在Q′1和Q′2点的外法向分别夹角α′1和α′2,β′1=∠OQ′1Q′2,β′2=∠OQ′2Q′1.根据圆柱的折射关系,我们得到:
sin α 1 sin β 1 = sin α 2 sin β 2 = η , q 1 - z 1 q 2 - q 1 z 2 - q 2 = z 2 - z 1 ηu + v + ηw ηu v ηw , - - - ( 1 )
并进而得到
sin α 1 ′ sin β 1 ′ = sin α 2 ′ sin β 2 ′ = η 1 - k 2 1 - η 2 k 2 = Δ η ′ ,
其中
k = | z 2 - z 1 | ηu + v + ηw .
注意到,光线路径在底面上的投影V′Q′1Q′2P′正好是一个球体折射的光线路径,该球面中心为O,半径为r,折射率η′.由于圆柱的折射关系非常复杂,直接求解就显得过于繁琐而不实用,这时,借助已有的球体折射算法来近似求解圆柱折射问题无疑是一个最佳选择.实验表明,η′表达式中的未知部分ηu+v+ηw非常接近η|VP|,而η′的公式显示,它只是随ηu+v+ηw的值的变化而缓慢地变化,所以,我们可以把ηu+v+ηw近似成η|VP|,这种近似对η′的值的影响非常小,可以忽略.于是,在近似地令 k = | z 2 - z 1 | η | VP | 后,我们得到了η′,于是我们用球体的折射算法计算出Q′1和Q′2,也即得到了Q1和Q2两点的x和y坐标.令u′=|V′Q′1|,v′=|Q′1Q′2|和w′=|Q′2P′|,则 u ′ = u ′ / 1 - k 2 η 2 , v = v ′ / 1 - η 2 , w = w ′ / 1 - k 2 η 2 , 从而根据公式(1)得到Q1和Q2的z坐标.
我们用光线跟踪的方法产生了两组点,然后用上面的公式,反算I和Q。具体的结果如下表所示。
Figure A20041000905800115
3、圆锥折射
已知:视点V坐标(x1,y1,z1),场景中的点P坐标(x2,y2,z2).O为圆锥顶点,设为坐标原点,z轴沿圆锥轴线向上,O′为圆锥底面中心,圆锥顶角为2θ,高度h,折射率为η.
未知:设入射点Q1坐标(-xtgθcos,-xtgθsin,x),出射点Q2坐标(-ytgθcosρ,-ytgθsinρ,y),其中x,y,和ρ为未知变量.
沿光线方向,在Q1点入射角和出射角分别为α1和β1,在Q2点入射角和出射角分别为β2和α2,如图4所示.V,P,Q1和Q2在圆锥底面上的投影分别为V′,P′,Q′1和Q′2.由圆锥折射关系得到方程:
Figure A20041000905800116
此方程只包含两个未知数x和,但其中有一些复杂的项:
t1=(cosα1/η-cosβ1)cosθcos-(x1+xtgθcos)/(ηu),
t2=(cosα1/η-cosβ1)cosθsin-(y1+xtgθsin)/(ηu),
t3=(cosα1/η-cosβ1)sinθ-(z1-x)/(ηu),
Figure A20041000905800121
Figure A20041000905800122
这些符号又引入了几个未知元素,分别为:
Figure A20041000905800123
cosα1=[(x1+xtgθcos)cosθcos+(y1+xtgθsin)cosθsin+(z1-x)sinθ]/u,
cos β 1 = ( 1 / η ) η 2 - 1 + cos 2 α 1
尽管复杂,我们已经得到了关于x和的方程组(2).解之,我们就可以得到光线和圆锥表面的交点:
Q1=(-xtgθcos,-xtgθsin,x)
Q2=(vt1-xtgθcos,vt2-xtgθsin,vt3+x)
根据虚顶点定义,就能计算出P点对应的虚顶点P′的坐标。
4、迭代法求解
根据公式求解方程计算反射折射虚顶点在圆锥、椭球、抛物面和圆环上非常复杂的。因此,在这些情况下,迭代法求解成为一种非常有效的手段。
(1)球面反射
如图5所示,视点V发出的视线被以O为球心,|OI|为半径的球面反射后到达场景中的P点,需要求解P点对应的反射虚顶点P′。如果能够计算到I点位置,则可以计算到|IV|和|IP|的数值,根据虚顶点计算公式可得到P′的位置。可知O、V、I、P、P′处于同一平面,延长OI与PV相交于M。如果能够直接计算到|VM|,那么M、I的位置很容易就可以得到。为计算|MV|,我们在此使用二分迭代法。假设a=0,b=|VP|,并且f(x)=∠MIP-∠VIM。首先另|MV|=(a+b)/2,可以计算出在该情况下∠MIP和∠VIM的数值,比较大小。如果前者比较大,根据二分法另|MV|为b和(a+b)/2的中间值,否则另|MV|为a和(a+b)/2的中间值。经过多次计算,当两个角的差距越来越接近时,就可以得到比较精确的|MV|值,并且最后得到P′的坐标。
(2)球面折射
图6(a)和(b)分别表示被观察的折射点处于球体内部和外部两种情况,V为视点,O半径为r球的球心,P为场景被折射点,从视点到达被折射点的光线与球分别相交于I、I1和I2,x为光线与球面相交第一个交点与视点直接的距离。从图中可以看出(|OV|-r)≤x≤√(|OV|2-r2)。给x赋一初识值,I、I1和I2的位置就可以得到。当I、I1和I2的位置计算出来之后,可以计算出图中α和β值。比较sin(α)/sin(β)和球体折射率η,根据比较结果调整x的数值,直到两者非常接近为止,这样就能够计算出P对应的折射虚顶点P′。
(3)圆柱面反射
如图7所示,视点V发出的实现经过圆柱面上点I的反射后到达场景顶点P。总可以找到圆柱中轴线上的一点O,使得V和P处在O所在底面的一侧,那么V1,P1为V,P在该底面上投影。如图,如果能够计算出|M1V1|的数值,那么也就计算出了M、I,P对应的虚顶点P′也可计算出来。根据球面反射迭代法过程,首先假设|M1V1|已知,那么有
cos(∠OV1P1)=(|OV1|2+|V1P1|2-|OP1|2)/(2|OV1||V1P1|);
|OM1|2=|OV1|2+|M1V1|2-2|OV1||M1V1|cos(∠OV1P1);
cos(∠V1M1O)=(|OM1|2+|M1V1|2-|OV1|2)/(2|OM1||M1V1|);
|I1M1|=|OM1|-|OI1|;
|I1V1|2=|I1M1|2+|M1V1|2-2|I1M1||M1V1|cos(∠V1M1O);
|M1V1|/(|MM1-VV1|)=|V1P1|/(|PP1|-VV1),可求得|MM1|;
|II1|=|MM1|,|IV|2=|I1V1|2+|II1-VV1|2,可求得|IV|;|MV|/|M1V1|=|VP|/|V1P1|,可计算出|MV|;
|IM|=|I1M1|;
这样|IV|、|IM|和|MV|都已经得到,利用余弦定理可计算∠VIM。同理也可计算出∠PIM。比较两者大小,然后根据二分法求得下一个|M1V1|,直到两个角度数值相差到可以接受。这样就能计算出虚顶点P′。
(4)圆柱体折射
因为圆柱折射是通过球体折射方法得到的,而球体折射能够通过迭代法计算,所以根据球体折射方法,也能用迭代过程得到圆柱折射的虚顶点计算方法。
(5)圆锥、椭球、抛物面和圆环反射
这四种反射情况与圆柱反射非常类似,都是通过定义|M1V1|计算∠VIM和∠PIM,通过比较这两个数值,根据结果调整|M1V1|的数值,直到两个数值的差距可接受为止。
从图中可以看出,这四种情况与圆柱反射的不同在于计算|OI1|和|II1|,其他计算过程完全一样。根据图8(a,b,c,d),有
(r-|OI1|)/|II1|=tan(θ)
(|MM1|-|II1|)/(|OM1|-|OI1|)=tan(θ)。
对于图8(a),有θ=atan(r/h);对(b),有θ=atan(|OI1|h/r2);对图(c),有θ=atan((h/r)2|OI1|/|II1|);对图(d),则有θ=atan(|II1|/(|OI1|-R))。根据这些关系,能够计算出|OI1|和|II1|的数值。
最后与圆柱反射一样通过迭代法可计算出P点对应的虚顶点P′。
(6)分析
使用迭代法计算虚顶点,在理论上只要迭代足够的次数,可以得到完全精确的虚顶点数值。在实际编程中,只要给定一个很小的数值,当作为迭代依据的数据小于该数值时候即退出。可以根据具体情况和最后结果的要求设定该数值。

Claims (4)

1.二次曲面非线性折射和反射场景的实时光线跟踪方法,其特征在于:所述方法对于二次曲面反射和折射体,直接计算虚顶点及虚物体,利用虚物体,并利用OpenGL-Compatible的图形硬件加速,实时生成真实感图形;当光线L经过若干次反射或折射,与某一物体的平面M相交于V点时,计算点V的光学映射虚顶点V’;假设光线L经过若干次反射或折射到达V时,经过的路径的长度总和为:
d=d1+d2+…+d5
则虚顶点V′的计算公式为: V = A + d B - A | B - A | 其中A是视点,B是投影平面上一个采样点。
2.二次曲面非线性折射和反射场景的实时光线跟踪方法,其特征在于:对于圆柱面反射和折射场景的实时光线跟踪,所述方法为:
(1)圆柱面反射
视点V发出的光线经圆柱表面上I点反射后到达物体顶点P,欲求顶点P对应的虚顶点,可首先求出I点坐标,根据上面的虚物体定义可解出虚顶点坐标;不失一般性,假设圆柱的对称轴与坐标系的Z轴重合;已知条件为物体顶点P(Px,Py,Pz)和视点V(Vx,Vy,Vz),设入射点I(rcosθ,rsinθ,z),则法向N为(rcosθ,rsinθ,0);其中θ是入射点I处的法线与X轴的夹角;
根据反射定律有∠PIN=∠NIV,所以:
IP → | IP | + IV → | IV | = KN →
另:cos2θ+sin2θ=r2
由公式(2)得到
( P x - r cos ( θ ) , P y - r sin ( θ ) , P z - z ) ( P x - r cos ( θ ) ) 2 + ( P y - r sin ( θ ) ) 2 + ( P z - z ) 2 + ( V x - r cos ( θ ) , V y - r sin ( θ ) , V z - z ) ( V x - r cos ( θ ) ) 2 + ( V y - r sin ( θ ) ) 2 + ( V z - z ) 2
= K ( cos ( θ ) , sin ( θ ) , 0 )
这是一个未知数为z、cosθ和K的三元高次方程组,经消元后得到一个关于cosθ的一元六次方程;由于这种方程没有解析表达式可以求解,考虑到|cosθ|≤1,取方程的低四次项,利用四次方程求解公式求得cosθ;条件是当|cosθ|的值越接近于零时,四次方程的解越接近于六次方程的解,为此,在求解前,首先对点P和V的坐标进行预处理;P在XY平面的投影P1,V在XY平面投影V1,OQ为∠P1OV1的角平分线,将点P、V绕Z进行旋转,旋转的角度为OV1与Y轴的夹角,这使得cosθ更接近0,方程近似解的精度得到提高;
根据cosθ,可计算得到I点坐标;最后由虚顶点计算方法可得到P对应的虚顶点P′
P ′ = V + ( | I - P | + | I - V | ) I - V | I - V |
(2)圆柱面折射
已知:视点V坐标(x1,y1,z1),场景中的点P坐标(x2,y2,z2).O为圆柱底面中心,设为坐标原点,z轴沿圆柱轴线向上.圆柱半径r,折射率为η.未知:设入射点Q1坐标(rcos,rsin,q1),出射点Q2坐标(rcosρ,rsinρ,q2).记u=|VQ1|,v=|Q1Q2|,w=|Q2P|.沿光线方向,在Q1点入射角和出射角分别为α1和β1,在Q2点入射角和出射角分别为β2和α2,V,P,Q1和Q2在圆柱底面上的投影分别为V′,P′,Q′1和Q′2,Q′1V′和Q′2P′与底面圆周在Q′1和Q′2点的外法向分别夹角α1′和α2′,β1′=∠OQ1′Q2′,β2′=∠OQ2′Q1′.根据圆柱的折射关系,得到:
sin α 1 sin β 1 = sin α 2 sin β 2 = η , q 1 - z 1 q 2 - q 1 z 2 - q 2 = z 2 - z 1 ηu + v + ηw ηu v ηw ,
并进而得到
sin α 1 ′ sin β 1 ′ = sin α 2 ′ sin β 2 ′ = η 1 - k 2 1 - η 2 k 2 = Δ η ′ ,
其中
k = | z 2 - z 1 | ηu + v + ηw ,
注意到,光线路径在底面上的投影V′Q′1Q′2P′正好是一个球体折射的光线路径,该球面中心为O,半径为r,折射率η′;由于圆柱的折射关系非常复杂,直接求解就显得过于繁琐而不实用,这时,借助已有的球体折射算法来近似求解圆柱折射问题无疑是一个最佳选择;实验表明,η′表达式中的未知部分ηu+v+ηw非常接近η|VP|,而η′的公式显示,它只是随ηu+v+ηw的值的变化而缓慢地变化,所以,把ηu+v+ηw近似成η|VP|,这种近似对η′的值的影响非常小,可以忽略;于是,在近似地令 k = | z 2 - z 1 | η | VP | 后,得到了η′,于是用球体的折射算法计算出Q′1和Q′2,也即得到了Q1和Q2两点的x和y坐标;令u′=|V′Q1′|,v′=|Q1′Q2′|和w′=|Q2′P′|,则 u = u ′ / 1 - k 2 η 2 , v = v ′ / 1 - η 2 , w = w ′ / 1 - k 2 η 2 , 从而根据公式(1)得到Q1和Q2的z坐标。
3.二次曲面非线性折射和反射场景的实时光线跟踪方法,其特征在于:对于圆锥折射,
所述方法为:
已知:视点V坐标(x1,y1,z1),场景中的点P坐标(x2,y2,z2).O为圆锥顶点,设为坐标原点,z轴沿圆锥轴线向上,O′为圆锥底面中心,圆锥顶角为2θ,高度h,折射率为η:
未知:设入射点Q1坐标(-xtgθcos,-xtgθsin,x),出射点Q2坐标(-ytgθcosρ,-ytgθsinρ,y),其中x,y,和ρ为未知变量.
沿光线方向,在Q1点入射角和出射角分别为α1和β1,在Q2点入射角和出射角分别为β2和α2,如图4所示.V,P,Q1和Q2在圆锥底面上的投影分别为V′,P′,Q′1和Q′2.由圆锥折射关系得到方程:
Figure A2004100090580004C4
此方程只包含两个未知数x和,但其中有一些复杂的项:
t1=(cosα1/η-cosβ1)cosθcos-(x1+xtgθcos)/(ηu),
t2=(cosα1/η-cosβ1)cosθsin-(y1+xtgθsin)/(ηu),
t3=(cosα1/η-cosβ1)sinθ-(z1-x)/(ηu),
Figure A2004100090580004C5
Figure A2004100090580004C6
这些符号又引入了几个未知元素,分别为:
Figure A2004100090580004C7
cosα1=[(x1+xtgθcos)cosθcos+(y1+xtgθsin)cosθsin+(z1-x)sinθ]/u,
cos β 1 = ( 1 / η ) η 2 - 1 + cos 2 α 1
得到了关于x和的方程组(2),解之,就可以得到光线和圆锥表面的交点:
Q1=(-xtgθcos,-xtgθsin,x)
Q2=(vt1-xtgθcos,vt2-xtgθsin,vx3+x)
根据虚顶点定义,就能计算出P点对应的虚顶点P′的坐标。
4.二次曲面非线性折射和反射场景的实时光线跟踪方法,其特征在于:所述方法利用迭代法求解,其步骤为:
(1)球面反射
视点V发出的视线被以O为球心,|OI|为半径的球面反射后到达场景中的P点,需要求解P点对应的反射虚顶点P′;如果能够计算到I点位置,则可以计算到|IV|和|IP|的数值,根据虚顶点计算公式可得到P′的位置;可知O、V、I、P、P′处于同一平面,延长OI与PV相交于M;如果能够直接计算到|VM|,那么M、I的位置很容易就可以得到;为计算|MV|,在此使用二分迭代法;假设a=0,b=|VP|,并且f(x)=∠MIP-∠VIM;首先另|MV|=(a+b)/2,可以计算出在该情况下∠MIP和∠VIM的数值,比较大小;如果前者比较大,根据二分法另|MV|为b和(a+b)/2的中间值,否则另|MV|为a和(a+b)/2的中间值;经过多次计算,当两个角的差距越来越接近时,就可以得到比较精确的|MV|值,并且最后得到P′的坐标;
(2)球面折射
V为视点,O半径为r球的球心,P为场景被折射点,从视点到达被折射点的光线与球分别相交于I、I1和I2,x为光线与球面相交第一个交点与视点直接的距离;(|OV|-r)≤x≤√(|OV|2-r2);给x赋一初识值,I、I1和I2的位置就可以得到;当I、I1和I2的位置计算出来之后,可以计算出图中α和β值;比较sin(α)/sin(β)和球体折射率η,根据比较结果调整x的数值,直到两者非常接近为止,这样就能够计算出P对应的折射虚顶点P′;
(3)圆柱面反射
视点V发出的实现经过圆柱面上点I的反射后到达场景顶点P;总可以找到圆柱中轴线上的一点O,使得V和P处在O所在底面的一侧,那么V1,P1为V,P在该底面上投影;如果能够计算出|M1V1|的数值,那么也就计算出了M、I,P对应的虚顶点P′也可计算出来;根据球面反射迭代法过程,首先假设|M1V1|已知,那么有
cos(∠OV1P1)=(|OV1|2+|V1P1|2-|OP1|2)/(2|OV1||V1P1|);
|OM1|2=|OV1|2+|M1V1|2-2|OV1||M1V1|cos(∠OV1P1);
cos(∠V1M1O)=(|OM1|2+|M1V1|2-|OV1|2)/(2|OM1||M1V1|);
|I1M1|=|OM1|-|OI1|;
|I1V1|2=|I1M1|2+|M1V1|2-2|I1M1||M1V1|cos(∠V1M1O);
|M1V1|/(|MM1-VV1|)=|V1P1|/(|PP1|-VV1),可求得|MM1|;
|II1|=|MM1|,|IV|2=|I1V1|2+|II1-VV1|2,可求得|IV|;|MV|/|M1V1|=|VP|/|V1P1|,可计算出|MV|;
|IM|=|I1M1|;
这样|IV|、|IM|和|MV|都已经得到,利用余弦定理可计算∠VIM;同理也可计算出∠PIM;比较两者大小,然后根据二分法求得下一个|M1V1|,直到两个角度数值相差到可以接受;这样就能计算出虚顶点P′;
(4)圆柱体折射
因为圆柱折射是通过球体折射方法得到的,而球体折射能够通过迭代法计算,所以根据球体折射方法,也能用迭代过程得到圆柱折射的虚顶点计算方法;
(5)圆锥、椭球、抛物面和圆环反射
所述四种反射情况与圆柱反射非常类似,都是通过定义|M1V1|计算∠VIM和∠PIM,通过比较这两个数值,根据结果调整|M1V1|的数值,直到两个数值的差距可接受为止;
所述四种情况与圆柱反射的不同在于计算|OI1|和|II1|,其他计算过程完全一样;
最后与圆柱反射一样通过迭代法可计算出P点对应的虚顶点P′;
(6)使用迭代法计算虚顶点,在理论上只要迭代足够的次数,可以得到完全精确的虚顶点数值,实际中,只要给定一个很小的数值,当作为迭代依据的数据小于该数值时候即退出;可以根据具体情况和最后结果的要求设定该数值。
CNA2004100090589A 2004-04-29 2004-04-29 二次曲面非线性折射和反射场景的实时光线跟踪方法 Pending CN101162526A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2004100090589A CN101162526A (zh) 2004-04-29 2004-04-29 二次曲面非线性折射和反射场景的实时光线跟踪方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2004100090589A CN101162526A (zh) 2004-04-29 2004-04-29 二次曲面非线性折射和反射场景的实时光线跟踪方法

Publications (1)

Publication Number Publication Date
CN101162526A true CN101162526A (zh) 2008-04-16

Family

ID=39297446

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2004100090589A Pending CN101162526A (zh) 2004-04-29 2004-04-29 二次曲面非线性折射和反射场景的实时光线跟踪方法

Country Status (1)

Country Link
CN (1) CN101162526A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102592312A (zh) * 2011-12-28 2012-07-18 中国人民解放军理工大学 基于平行空间的光线投射高度场可视化方法
CN104463926A (zh) * 2014-12-08 2015-03-25 天津大学 一种火焰通过环形石英玻璃在二维投影图像中的成像方法
CN116778068A (zh) * 2023-08-22 2023-09-19 中国电子科技集团公司第十五研究所 基于视点椭球相似特征数的光线采样精确优化方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102592312A (zh) * 2011-12-28 2012-07-18 中国人民解放军理工大学 基于平行空间的光线投射高度场可视化方法
CN102592312B (zh) * 2011-12-28 2014-04-02 中国人民解放军理工大学 基于平行空间的光线投射高度场可视化方法
CN104463926A (zh) * 2014-12-08 2015-03-25 天津大学 一种火焰通过环形石英玻璃在二维投影图像中的成像方法
CN104463926B (zh) * 2014-12-08 2017-09-19 天津大学 一种火焰通过环形石英玻璃在二维投影图像中的成像方法
CN116778068A (zh) * 2023-08-22 2023-09-19 中国电子科技集团公司第十五研究所 基于视点椭球相似特征数的光线采样精确优化方法
CN116778068B (zh) * 2023-08-22 2023-11-10 中国电子科技集团公司第十五研究所 基于视点椭球相似特征数的光线采样精确优化方法

Similar Documents

Publication Publication Date Title
US11704863B2 (en) Watertight ray triangle intersection
CN102402792B (zh) 一种实时浅水模拟方法
Zhang et al. Conservative voxelization
CN101763649B (zh) 一种增强模型轮廓的表面点绘制方法
JPH06223198A (ja) 光線追跡による画像生成装置及び方法
CN1317666C (zh) 适于创建透明对象的实时阴影的系统和方法
CN102915559A (zh) 一种基于三维点云的实时透明物体gpu并行生成方法
CN101441774B (zh) 基于图像映射空间的动态场景实时双面折射绘制方法
Yang et al. Nonlinear perspective projections and magic lenses: 3D view deformation
CN109255832A (zh) 一种基于OpenGL的目标光场创建方法
Fussell et al. Fast ray tracing using kd trees
Davis et al. Interactive refractions with total internal reflection
CN103679780B (zh) 一种空间目标实时模拟方法
CN110133625A (zh) 一种快速球坐标激光雷达仿真方法
CN101162526A (zh) 二次曲面非线性折射和反射场景的实时光线跟踪方法
CN103617650A (zh) 一种复杂三维地形显示方法
CN106780708A (zh) 一种基于模拟折射和全局光照的3d模型渲染方法及系统
JP4096710B2 (ja) 画像生成装置
Chen et al. The merging of water droplets base-on metaball
Max et al. Cell projection of meshes with non-planar faces
Yu Ray Tracing in Computer Graphics
Koblik Simulation of rain on a windshield: Creating a real-time effect using GPGPU computing
Cai et al. Hardware-accelerated collision detection for 3D virtual reality gaming
Mukai et al. Analytical method for generating images reflected on a cubed glass
Gunjee et al. Point splatting based on translucent shadow mapping and hierarchical bucket sorting

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication