[发明专利]一种由光滑表面折射产生的3D虚拟场景面焦散效果的绘制方法无效
申请号: | 201010608616.9 | 申请日: | 2010-12-28 |
公开(公告)号: | CN102074038A | 公开(公告)日: | 2011-05-25 |
发明(设计)人: | 陈纯毅;杨华民;蒋振刚;范静涛;丁莹;冯欣;底晓强;韩成;陈占芳;李奇 | 申请(专利权)人: | 长春理工大学 |
主分类号: | G06T15/50 | 分类号: | G06T15/50 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 130022 *** | 国省代码: | 吉林;22 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 光滑 表面 折射 产生 虚拟 场景 面焦散 效果 绘制 方法 | ||
1.一种由光滑表面折射产生的3D虚拟场景面焦散效果的绘制方法,其特征在于,所需的数据结构及实现步骤如下:
所需的数据结构:本发明提供一种存储由光滑表面折射产生的3D虚拟场景中的焦散照明体的数据结构(100),其包括光滑透明三角形面片的顶点位置P1、顶点位置P2、顶点位置P3、顶点法向量N1、顶点法向量N2、顶点法向量N3、折射标识F1、折射标识F2、折射标识F3、折射光线方向向量R1、折射光线方向向量R2、折射光线方向向量R3、相交标识T1、相交标识T2、相交标识T3、交点S1、交点S2、交点S3、二次折射标识G1、二次折射标识G2、二次折射标识G3、二次折射光线方向向量RS1、二次折射光线方向向量RS2、二次折射光线方向向量RS3等18个成员变量;
实现步骤:
本发明的方法(010)部分创建由光滑表面折射产生的3D虚拟场景(A001)中的所有焦散照明体,具体步骤如下:
步骤(S011):将3D虚拟场景(A001)中所有面向光源的光滑透明三角形面片存入三角形面片列表1(A002)中;将3D虚拟场景(A002)中所有背向光源的光滑透明三角形面片存入三角形面片列表2(A003)中;对三角形面片列表1(A002)中的每个三角形面片(A004),创建一个数据结构(100)类型的变量(A005),并将变量(A005)与三角形面片(A004)相关联;
步骤(S012):将三角形面片列表1(A002)中所有三角形面片的顶点存入顶点列表1(A006)中,并且删除重复的顶点;对顶点列表1(A006)中的每个顶点(A007),创建一个从顶点(A007)指向光源位置的向量(A008),如果顶点(A007)的法向量与向量(A008)的夹角大于90度,则将顶点(A007)从顶点列表1(A006)中删除;
步骤(S013):对顶点列表1(A006)中的每个顶点(A009),做如下计算:
(S013-1):根据顶点(A009)的位置及法向量、光源位置、顶点(A009)对应的光滑透明三角形面片的折射率,判断从光源入射的光线在顶点(A009)位置处是否能发生折射,如果能发生折射,则计算顶点(A009)位置处的折射光线方向向量(A010)并置Flag0=1,否则置Flag0=0并转步骤(S014);
(S013-2):根据顶点(A009)的位置及折射光线方向向量(A010)创建折射光线射线(A011),判断三角形面片列表1(A002)和三角形面片列表2(A003)中是否有三角形面片(A012)与折射光线射线(A011)相交,如果没有,则置Flag1=0并转步骤(S014),否则置Flag1=1,并计算出离顶点(A009)最近的交点(A013),将交点(A013)位置处的三角形面片(A014)与顶点(A009)相关联,再根据折射定律判断在交点(A013)位置处能否发生折射,如果发生折射则置Flag2=1并计算折射光线方向向量(A015),否则置Flag2=0并转步骤(S014);
(S013-3):在三角形面片列表1(A002)中,找出包含顶点(A009)的所有三角形面片(A016),计算顶点(A009)在各三角形面片(A016)的顶点序列中的编号i(i=1,2,3);将顶点(A009)的位置及法向量分别赋值给与各三角形面片(A016)相关联的变量(A005)的顶点位置Pi及顶点法向量Ni成员变量;将Flag0赋值给与各三角形面片(A016)相关联的变量(A005)的折射标识Fi成员变量;将折射光线方向向量(A010)赋值给与各三角形面片(A016)相关联的变量(A005)的折射光线方向向量Ri成员变量;将Flag1赋值给与各三角形面片(A016)相关联的变量(A005)的相交标识Ti成员变量;将交点(A013)赋值给与各三角形面片(A016)相关联的变量(A005)的交点Si成员变量;将Flag2赋值给与各三角形面片(A016)相关联的变量(A005)的二次折射标识Gi成员变量;将折射光线方向向量(A015)赋值给与各三角形面片(A016)相关联的变量(A005)的二次折射光线方向向量RSi成员变量;
步骤(S014):对于三角形面片列表1(A002)中的每个三角形面片(A017),做如下计算:
(S014-1):如果与三角形面片(A017)相关联的变量(A005)的第i个折射标识Fi成员变量的值为0(i=1,2,3),则将三角形面片(A017)从三角形面片列表1(A002)中删除,否则转步骤(S015);
(S014-2):如果与三角形面片(A017)相关联的变量(A005)的第i个二次折射标识Gi成员变量的值为0(i=1,2,3),则将三角形面片(A017)从三角形面片列表1(A002)中删除,否则转步骤(S015);
步骤(S015):将三角形面片列表1(A002)中的各个三角形面片(A018)所关联的变量(A005)存入一个列表(A019)中,列表(A019)定义了由光滑表面折射产生的3D虚拟场景中的所有焦散照明体;
本发明的方法(020)部分实现待绘制场景点(B001)的焦散光照值的计算,具体步骤如下:
步骤(S021):创建一个包含待绘制场景点(B001)的平面(B002),且平面(B002)的法向量平行于待绘制场景点(B001)的法向量;
步骤(S022):对于列表(A019)中的每个元素(B003),做如下计算:
(S022-1):如果元素(B003)的相交标识T1、相交标识T2、相交标识T3等三个成员变量都为1,则转(S022-5),否则,创建一条起始于元素(B003)的顶点位置P1成员变量表示的顶点,方向平行于元素(B003)的折射光线方向向量R1成员变量表示的方向的射线(B004),创建一条起始于元素(B003)的顶点位置P2成员变量表示的顶点,方向平行于元素(B003)的折射光线方向向量R2成员变量表示的方向的射线(B005),创建一条起始于元素(B003)的顶点位置P3成员变量表示的顶点,方向平行于元素(B003)的折射光线方向向量R3成员变量表示的方向的射线(B006);
(S022-2):计算射线(B004)与平面(B002)的交点(B007);计算射线(B005)与平面(B002)的交点(B008);计算射线(B006)与平面(B002)的交点(B009);如果待绘制场景点(B001)处于由交点(B007)、交点(B008)和交点(B009)确定的三角形之外或者待绘制场景点(B001)不在由交点(B007)、交点(B008)和交点(B009)确定的直线段之上,则结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算,否则根据待绘制场景点(B001)到交点(B007)、交点(B008)和交点(B009)的距离以及元素(B003)的折射光线方向向量R1、折射光线方向向量R2、折射光线方向向量R3等三个成员变量,通过插值计算出待绘制场景点(B001)处的折射光线方向向量(B010);
(S022-3):创建一条起始于待绘制场景点(B001),方向平行于折射光线方向向量(B010)的反向向量的射线(B011);计算射线(B011)与由元素(B003)的顶点位置P1、顶点位置P2、顶点位置P3等三个成员变量表示的顶点构成的三角形面片(B012)的交点(B013);创建一条起始于交点(B013),终止于光源位置的线段(B014);测试3D虚拟场景(A001)中是否有不透明的三角形面片(B015)与线段(B014)相交,如果无交则转(S022-4),否则三角形面片(B012)相对于光源被部分遮挡,其产生的焦散照明体对待绘制场景点(B001)的光照贡献为0,结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算;
(S022-4):如果交点(B007)、交点(B008)和交点(B009)构成一个三角形(B016),则计算三角形(B016)在三角形面片(B012)所在平面上的投影面积(B017),再计算投影面积(B017)与三角形面片(B012)的面积之比(B018),将面积之比(B018)赋值给变量α;如果交点(B007)、交点(B008)和交点(B009)构成一条直线段,则将变量α设置为一个固定值;创建从交点(B013)指向光源位置的向量(B019),对向量(B019)进行归一化计算;根据三角形面片(B012)的三个顶点位置,计算三角形面片(B012)的表面法向量(B020);根据光源到交点(B013)的距离、向量(B019)与表面法向量(B020)的夹角以及光源的辐射亮度,计算三角形面片(B012)的照明度(B021),将照明度(B021)乘以变量α并赋值给变量I(B022);根据变量I(B022)的值、待绘制场景点(B001)的材质属性以及待绘制场景点(B001)的法向量与折射光线方向向量(B010)的反向向量的夹角,按照光照反射模型计算元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献值,并将其加到待绘制场景点(B001)的总光照值之中,结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算;
(S022-5):创建一条起始于元素(B003)的交点S1成员变量表示的交点位置,方向平行于元素(B003)的二次折射光线方向向量RS1成员变量表示的方向的射线(B023);创建一条起始于元素(B003)的交点S2成员变量表示的交点位置,方向平行于元素(B003)的二次折射光线方向向量RS2成员变量表示的方向的射线(B024);创建一条起始于元素(B003)的交点S3成员变量表示的交点位置,方向平行于元素(B003)的二次折射光线方向向量RS3成员变量表示的方向的射线(B025);计算射线(B023)与平面(B002)的交点(B026);计算射线(B024)与平面(B002)的交点(B027);计算射线(B025)与平面(B002)的交点(B028);如果待绘制场景点(B001)处于由交点(B026)、交点(B027)和交点(B028)确定的三角形之外或者待绘制场景点(B001)不在由交点(B026)、交点(B027)和交点(B028)确定的直线段之上,则结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算,否则根据待绘制场景点(B001)到交点(B026)、交点(B027)和交点(B028)的距离以及元素(B003)的二次折射光线方向向量RS1、二次折射光线方向向量RS2、二次折射光线方向向量RS3等三个成员变量,通过插值计算出待绘制场景点(B001)处的二次折射光线方向向量(B029);
(S022-6):创建一条起始于待绘制场景点(B001),方向平行于二次折射光线方向向量(B029)的反向向量的射线(B030);计算射线(B030)与由元素(B003)的交点S1、交点S2、交点S3等三个成员变量表示的交点构成的三角形的交点(B031);根据交点(B031)与元素(B003)的交点S1、交点S2、交点S3等三个成员变量表示的交点的距离以及元素(B003)的折射光线方向向量R1、折射光线方向向量R2、折射光线方向向量R3等三个成员变量,通过插值计算出交点(B031)处的折射光线方向向量(B032);
(S022-7):创建一条起始于交点(B031),方向平行于折射光线方向向量(B032)的反向向量的射线(B033);计算射线(B033)与由元素(B003)的顶点位置P1、顶点位置P2、顶点位置P3等三个成员变量表示的顶点构成的三角形面片(B012)的交点(B034);创建一条起始于交点(B034),终止于光源位置的线段(B035);测试3D虚拟场景(A001)中是否有不透明的三角形面片(B015)与线段(B035)相交,如果无交则转(S022-8),否则三角形面片(B012)相对于光源被部分遮挡,其产生的焦散照明体对待绘制场景点(B001)的光照贡献为0,结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算;
(S022-8):如果交点(B026)、交点(B027)和交点(B028)构成一个三角形(B036),则计算三角形(B036)在由元素(B003)的交点S1、交点S2、交点S3等三个成员变量表示的交点所确定的平面上的投影面积(B037),再计算投影面积(B037)在三角形面片(B012)所在平面上的投影面积(B038),最后计算投影面积(B038)与三角形面片(B012)的面积之比(B039),将面积之比(B039)赋值给变量β;如果交点(B026)、交点(B027)和交点(B028)构成一条直线段,则将变量β设置为一个固定值;创建从交点(B034)指向光源位置的向量(B040),对向量(B040)进行归一化计算;根据三角形面片(B012)的三个顶点位置,计算三角形面片(B012)的表面法向量(B020);根据光源到交点(B034)的距离、向量(B040)与表面法向量(B020)的夹角以及光源的辐射亮度,计算三角形面片(B012)的照明度(B041),将照明度(B041)乘以变量β并赋值给变量J(B042);根据变量J(B042)的值、待绘制场景点(B001)的材质属性以及待绘制场景点(B001)的法向量与二次折射光线方向向量(B029)的反向向量的夹角,按照光照反射模型计算元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献值,并将其加到待绘制场景点(B001)的总光照值之中,结束元素(B003)表示的焦散照明体对待绘制场景点(B001)的光照贡献计算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于长春理工大学,未经长春理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010608616.9/1.html,转载请声明来源钻瓜专利网。