CN109685880B - 一种利用光线追踪计算水面反射和折射效果方法 - Google Patents

一种利用光线追踪计算水面反射和折射效果方法 Download PDF

Info

Publication number
CN109685880B
CN109685880B CN201811316254.9A CN201811316254A CN109685880B CN 109685880 B CN109685880 B CN 109685880B CN 201811316254 A CN201811316254 A CN 201811316254A CN 109685880 B CN109685880 B CN 109685880B
Authority
CN
China
Prior art keywords
point
reflection
stepping
refraction
water surface
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.)
Active
Application number
CN201811316254.9A
Other languages
English (en)
Other versions
CN109685880A (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.)
Suzhou Snail Digital Technology Co Ltd
Original Assignee
Suzhou Snail Digital Technology Co Ltd
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 Suzhou Snail Digital Technology Co Ltd filed Critical Suzhou Snail Digital Technology Co Ltd
Priority to CN201811316254.9A priority Critical patent/CN109685880B/zh
Publication of CN109685880A publication Critical patent/CN109685880A/zh
Application granted granted Critical
Publication of CN109685880B publication Critical patent/CN109685880B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

本发明提供一种利用光线追踪计算水面反射和折射效果方法,包括以下步骤:绘制水面,获取屏幕uv;计算水面法线扰动;进行反射和折射光线的追踪测试;根据光线追踪测试结果,确定水面反射和折射颜色并输出。本发明的利用光线追踪计算水面反射和折射效果方法,利用光线追踪计算水面反射和折射效果,实现了真实的水面反射和折射效果,在有波浪及扰动时仍然能够保证反射和折射的正确效果。

Description

一种利用光线追踪计算水面反射和折射效果方法
技术领域
本发明涉及游戏引擎开发技术领域,特别涉及一种计算水体渲染效果的方法。
背景技术
现有技术中,3D引擎在绘制水效果时,为了有丰富的表现,一般都会计算水面反射和折射效果。为了进一步的提高水体的表现,就需要有波浪及水面扰动等丰富的效果,而反射和折射就是这些丰富效果的主要的表现载体。
3D引擎传统的计算反射和折射效果不考虑波浪和水面扰动效果时,反射和折射的图像始终静止,属于比较落后的引擎表现。3D引擎传统的计算反射和折射考虑扰动效果时,用随机算法或随机纹理计算扰动法线(主要是水平方向上的分量扰动),利用扰动的法线来干扰采样反射图和折射图的uv,进而达到反射和折射出现扰动的效果。计算反射图和折射图采样的uv基本算法为:uv = 屏幕uv + 干扰uv * 调节系数。其中屏幕uv由屏幕坐标计算得到,干扰uv由扰动的法线计算得到,调节系数为外部参数。传统的计算水面反射和折射的流程如图1所示。该方法计算的反射图和折射图采样的uv,都是模拟计算,每个像素与实际的反射位置像素没有准确的对应关系,所以采样得到的反射图像和折射图像与实际位置不匹配,画面是错乱的或扭曲的。
基于传统方案,无论怎样复杂化扰动uv计算,改进扰动算法,都无法显著地提升水体的渲染效果。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种利用光线追踪计算水面反射和折射效果方法,利用光线追踪计算水面反射和折射效果,实现真实的水面反射和折射效果,保证在有波浪及扰动时效果仍然正确。
为实现上述目的,本发明提供的一种利用光线追踪计算水面反射和折射效果方法,其特征在于,
1)绘制水面,获取屏幕uv;
2)计算水面法线扰动;
3)进行反射和折射光线的追踪测试;
4)根据光线追踪测试结果,确定水面反射和折射颜色并输出。
进一步地,所述步骤3)进一步包括以下步骤:
21)生成追踪线段;
22)将追踪线段投影变换至屏幕空间;
23)按步长等分追踪线段,得到步进点;
24)将步进点的深度与真实深度进行比较,测试步进点;
25)根据屏幕坐标点计算采样点坐标;
26)输出uv或测试失败信息。
进一步地,步骤23)所述得到步进点,是根据每步的步长和起步的偏移计算各步进点,得到各步进点屏幕坐标点。
进一步地,所述真实深度,为步进点所在的屏幕坐标对应的场景深度。
进一步地,所述步骤24)进一步包括,
31)如果步进点的深度等于真实深度,返回步进成功,当前步进点作为屏幕坐标点;
32)如果步进点的深度小于真实深度,继续步进查找至最后一个步进点,返回步进失败;
33)如果步进点的深度大于真实深度,则停止步进查找返回步进成功,计算插值点并作为屏幕坐标点。
进一步地,所述计算插值点,其计算公式为:pa + pb * v0/(v0-v1),其中,pa表示前一个步进点;pb表示当前步进点;v1为当前步进点真实深度-步进点深度的差值;v0上一步进点真实深度-步进点深度的差值。
进一步地,所述步骤25)根据屏幕坐标点计算采样点坐标,采用如下公式:uv0 =p0.xy/p0.w;
其中,uv0为采样点坐标,p0为屏幕坐标点,x 、y为屏幕坐标点的xy分量,w为屏幕坐标点的齐次坐标分量。
进一步地,所述步骤4)进一步包括,如果光线追踪测试返回结果为成功,根据采样点坐标,采样反射图获取反射颜色,采样折射图获取折射的颜色。
更进一步地,所述步骤4)进一步包括,如果光线追踪测试返回结果为失败,则反射取天空颜色,折射取水体颜色。
本发明能够真实化水面反射和折射效果,实质性的提高3D场景水体表现。本发明完全独立于传统方案,直接使用光线追踪找到各个像素对应的反射点像素和折射点像素,原理上更加直观,计算上更加物理,效果表现更加真实。
本发明利用绘制反射场景时填写的深度图和绘制主场景时填写的深度图,在着色计算时增加少量的计算开销找到各个像素对应的反射点像素和折射点像素,还原真实的反射效果和折射效果,性价比相当高。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,并与本发明的实施例一起,用于解释本发明,并不构成对本发明的限制。在附图中:
图1为传统的计算水面反射和折射的流程图;
图2为根据本发明的计算水体渲染效果的方法流程图;
图3为根据本发明的相交测试工作流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图2为根据本发明的利用光线追踪计算水面反射和折射效果方法流程图,下面将参考图2,对本发明的利用光线追踪计算水面反射和折射效果方法进行详细描述。
首先,在步骤201,绘制水面,获取屏幕uv。
然后在步骤202,计算扰动法线。
在步骤203,进行光线追踪测试。
在步骤204,判断测试是否成功。
在该步骤中,如果测试结果为成功,则进行步骤205,得到反射或折射采样uv,进而在步骤206获取反射或折射颜色。如果测试结果不成功,则对于反射计算,取天空颜色,对于折射计算,取水体颜色。
在步骤208,输出在步骤206或步骤207获取的反射或折射颜色。
下面,分别对于水面反射和折射的实现方法进行具体说明。
对于水面反射实现:
(1)绘制反射场景,生成反射场景RT,填充可采样的深度缓存(步骤201)。
(2)绘制水面,计算水面法线扰动(步骤202)。
(3)计算水面反射颜色(步骤203-207)。
1)根据视线向量和水面法线向量计算反射向量,反射向量转换至反射场景。
2)根据转换后的反射向量在反射场景步进式相交测试(步骤203)。相交测试方法为:步进的每个点的深度值与反射场景深度(采样深度图得到)进行容差相等比较。如果相等,则认为找到反射点,相交测试成功,中止继续步进测试(步骤205)。如果不等,则步进加一,继续进行下一步测试,直到测试到规定的上限距离。当最终都没找到反射点,则认为相交测试失败。相交测试失败,则认为场景中该反射射线上雾障碍物,直接取天空的颜色信息(步骤207)。
(4)应用水面反射颜色。
对于水面折射实现:
(1)备份当前主场景的可采样的深度图(步骤201)。
(2)绘制水面,计算水面法线扰动(步骤202)。
(3)计算水面折射颜色(步骤203-207)。
1)根据视线向量和水面法线向量计算折射向量。
2)根据折射向量直接在主场景中进行步进式相交测试。步进采样方法同反射,折射向量因为都是向下,水面下面必定有地形或场景物件,进行相交测试理论上是不会失败的。但会由于精度等其它原因导致小概率失败。如果相交测试失败,则认为场景中该折射射线上无遮挡,直接取水体的颜色信息(步骤207)。
(4)应用水面折射颜色。
图3为根据本发明的相交测试(光线追踪测试)的工作流程图,下面将结合图3,对本发明中涉及到的相交测试(光线追踪测试)的具体实施步骤详述如下:
首先,在步骤301,计算射线起点、终点。
在该步骤,生成追踪射线的终点,作为追踪算法的结束端点,即得到追踪线段。
在步骤302,射线段转换至屏幕空间。
在该步骤,将追踪线段的起点和终点进行投影变换,转换至投影空间。
在步骤303,按步长等分射线段,得到步进点。
在该步骤,将按照投影空间进行等分切割。此处有些设计按照视空间或世界空间进行等分,但转换至投影空间将是分布不均匀的,最终的表现效果不如按照投影空间进行等分。
根据每步的步长和起步的偏移计算各步进点。以总长作为单位1,起点偏移0.1,步长为0.2为例,则计算的步进点为:0.1、0.3、0.5、0.7、0.9。设置追踪线段的起点为start,终点为end,射线为ray,则ray= end - start。那么各步进点屏幕坐标为:start+0.1*ray,start+0.3*ray,start+0.5*ray,start+0.7*ray,start+0.9*ray。为了简化说明,给这些步进点起名称为:p1,p2,p3,p4,p5。
在步骤304,测试步进点。
在该步骤,射线与场景相交。根据相交结果测试步进点。
采样获取步进点所在的屏幕坐标对应的场景深度,我们称该深度为真实深度。用步进点的深度(步进点的w值)与真实深度比较,根据比较结果作为相交测试后续处理。
如果步进点的深度等于真实深度,则认为该步进点所在的屏幕位置正是需要查找的反射图上的位置,停止步进,返回步进成功(步骤305)。返回当前步进点作为屏幕坐标点(步骤310)。
如果真实深度大于步进点的深度(步骤307),判断需要获取的反射点在步进点的更前面,需要继续步进查找,则需进行步骤311,即根据前步进点和当前步进点插值计算得到新的屏幕点。
在该步骤,记录该差值为v0(真实深度-步进点深度),用作后续插计算反射点位置用。依次继续测试p2,p3,p4…,如果当前执行pn步进点(最后一个步进点),则停止步进,返回步进失败。
如果真实深度小于步进点深度(步骤306),则判断需要获取的反射点存在于前一个步进点之间,停止继续步进,返回步进成功。设当前的差值为v1(v1=真实深度-步进点深度),设远离摄像机的方向为深度的正反向,则v0>0,v1<0。那么插值点计算公式为:
pa + pb * v0/(v0-v1)
其中,pa表示前一个步进点,pb表示当前步进点,v1为当前步进点真实深度-步进点深度的差值;v0上一步进点真实深度-步进点深度的差值。
步进成功得到屏幕点p0,计算采样点坐标uv0。其公式为
uv0 = p0.xy/p0.w;
pa、pb、p0均为投影矩阵计算得到的投影坐标, x、y、z为投影坐标系坐标,w为齐次坐标,降成二维坐标时需要除以w。
在步骤313,输出uv或测试失败信息。
最后根据追踪测试结果计算水面反射颜色和水面折射颜色。根据步进测试成功返回的uv坐标,采样反射图获取反射颜色,采样折射图获取折射的颜色。如果追踪测试失败,直接使用天空盒颜色作为当前像素点的反射颜色,直接使用水体的颜色作为当前折射颜色。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种利用光线追踪计算水面反射和折射效果方法,其特征在于,包括以下步骤:
1)绘制水面,获取屏幕uv;
2)计算水面法线扰动;
3)进行反射和折射光线的追踪测试;
4)根据光线追踪测试结果,确定水面反射和折射颜色并输出;
所述步骤3)进一步包括以下步骤:
21)生成追踪线段;
22)将追踪线段投影变换至屏幕空间;
23)按步长等分追踪线段,得到步进点;
24)将每个步进点的深度与真实深度进行比较,测试步进点;
25)获取反射或折射颜色, 测试成功的步进点取反射或折射图颜色, 测试失败点取缺省颜色;
26)输出反射或折射颜色。
2.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,步骤23)所述得到步进点,是根据每步的步长和起步的偏移计算各步进点,得到各步进点屏幕坐标点。
3.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述真实深度,为步进点所在的屏幕坐标对应的场景深度。
4.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述步骤24)进一步包括,
31)如果步进点的深度等于真实深度,返回步进成功,当前步进点作为屏幕坐标点;
32)如果步进点的深度小于真实深度,继续步进查找至最后一个步进点,返回步进失败;
33)如果步进点的深度大于真实深度,则停止步进查找返回步进成功,计算插值点并作为屏幕坐标点。
5.根据权利要求4所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述计算插值点,其计算公式为:pa + pb * v0/(v0-v1),其中,pa表示前一个步进点;pb表示当前步进点;v1为当前步进点真实深度-步进点深度的差值;v0上一步进点真实深度-步进点深度的差值。
6.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述步骤25)根据屏幕坐标点计算采样点坐标,采用如下公式:uv0 = p0.xy/p0.w;
其中,uv0为采样点坐标,p0为屏幕坐标点,x 、y为屏幕坐标点的xy分量,w为屏幕坐标点的齐次坐标分量。
7.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述步骤4)进一步包括,如果光线追踪测试返回结果为成功,根据采样点坐标,采样反射图获取反射颜色,采样折射图获取折射的颜色。
8.根据权利要求1所述的利用光线追踪计算水面反射和折射效果方法,其特征在于,所述步骤4)进一步包括,如果光线追踪测试返回结果为失败,则反射取天空颜色,折射取水体颜色。
CN201811316254.9A 2018-11-07 2018-11-07 一种利用光线追踪计算水面反射和折射效果方法 Active CN109685880B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811316254.9A CN109685880B (zh) 2018-11-07 2018-11-07 一种利用光线追踪计算水面反射和折射效果方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811316254.9A CN109685880B (zh) 2018-11-07 2018-11-07 一种利用光线追踪计算水面反射和折射效果方法

Publications (2)

Publication Number Publication Date
CN109685880A CN109685880A (zh) 2019-04-26
CN109685880B true CN109685880B (zh) 2022-07-15

Family

ID=66185234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811316254.9A Active CN109685880B (zh) 2018-11-07 2018-11-07 一种利用光线追踪计算水面反射和折射效果方法

Country Status (1)

Country Link
CN (1) CN109685880B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11373358B2 (en) * 2020-06-15 2022-06-28 Nvidia Corporation Ray tracing hardware acceleration for supporting motion blur and moving/deforming geometry
CN112200902B (zh) * 2020-09-30 2024-09-06 北京达佳互联信息技术有限公司 图像渲染方法、装置、电子设备及存储介质
CN112973121B (zh) * 2021-04-30 2021-07-20 成都完美时空网络技术有限公司 反射效果生成方法及装置、存储介质、计算机设备
CN118628639A (zh) * 2023-03-08 2024-09-10 深圳市腾讯网域计算机网络有限公司 阴影渲染方法、装置、计算机设备和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239647A (zh) * 2014-09-25 2014-12-24 山东大学 一种实现光线追踪的硬件设计架构

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239647A (zh) * 2014-09-25 2014-12-24 山东大学 一种实现光线追踪的硬件设计架构

Also Published As

Publication number Publication date
CN109685880A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109685880B (zh) 一种利用光线追踪计算水面反射和折射效果方法
CN108198145B (zh) 用于点云数据修复的方法和装置
US10462447B1 (en) Electronic system including image processing unit for reconstructing 3D surfaces and iterative triangulation method
US20180176574A1 (en) Method and system for video frame interpolation based on optical flow method
CN113409459A (zh) 高精地图的生产方法、装置、设备和计算机存储介质
US11570418B2 (en) Techniques for generating light field data by combining multiple synthesized viewpoints
CN104463778A (zh) 一种全景图生成方法
CN112348775B (zh) 基于车载环视的路面坑塘检测系统及方法
CN113763569B (zh) 一种在三维仿真中使用的图像标注方法及装置、电子设备
US20220020178A1 (en) Method and system for enhancing images using machine learning
CN110738731A (zh) 一种用于双目视觉的3d重建方法和系统
CN115375581A (zh) 基于事件时空同步的动态视觉事件流降噪效果评价方法
CN116189140A (zh) 一种基于双目视觉的车辆三维目标检测算法
JP6521352B2 (ja) 情報提示システム及び端末
CN117611438B (zh) 一种基于单目图像的2d车道线到3d车道线的重构方法
CN107516291B (zh) 夜景影像正射纠正处理方法
US20090324019A1 (en) Motion sensing method of sub-pixel level precision
CN116503248A (zh) 一种针对原油储罐的红外图像校正方法及校正系统
CN111023994A (zh) 一种基于多重测量的光栅三维扫描方法及系统
CN113592947B (zh) 一种半直接法的视觉里程计实现方法
US11908173B1 (en) Method and system for three-dimensional profiling of an object
US20220230412A1 (en) High-resolution image matching method and system
Zhu et al. Research on the influence of perspective angle on document image correction results
US11861783B2 (en) Methods and systems for 0-phase motion vectors in 3D graphics
US11941744B2 (en) Methods and systems for motion vectors in 3D graphics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant