发明名称 基于GPU的大规模落叶实时渲染方法
摘要 本发明公开了一种基于GPU的大规模落叶实时渲染方法,该方法首先建立落叶运动的基础运动轨迹库;通过马尔科夫链模型,得到落叶轨迹的低维特征表示;在渲染的初始化阶段,向GPU输入存储在内存中的叶片粒子的运动特征参数与形状特征参数;在实时渲染阶段,逐帧向GPU输入当前系统时间与风场信息,在GPU中进行落叶运动位置的计算;在GPU中进行叶片多边形重建;最后进行渲染。本发明充分利用了GPU的并行计算优势,在GPU中使用独立线程完成对每一片叶片的运动轨迹计算,该方法在保证了渲染真实性的基础上,大大提高了落叶渲染的效率,满足了大场景植被落叶运动的实时渲染需求。
申请公布号 CN104778737A 申请公布日期 2015.07.15
申请号 CN201510128634.X 申请日期 2015.03.23
申请人 浙江大学 发明人 童若锋;钱景晔
分类号 G06T13/60(2011.01)I 主分类号 G06T13/60(2011.01)I
代理机构 杭州求是专利事务所有限公司 33200 代理人 邱启旺
主权项 一种基于GPU的大规模落叶实时渲染方法,其特征在于,包括以下步骤:(1)建立落叶基础运动轨迹库,具体为:将落叶的轨迹分为六种基础运动模板:稳速下降(SD),周期翻转(PT),混沌变动(TC),周期振动(PF),变速螺旋(TH)以及周期螺旋(PS),通过L<sub>i</sub>(1≤i≤6,i为自然数)表示,其中L<sub>1</sub>~L<sub>6</sub>分别表示SD,PT,TC,PF,TH,PS;其中,SD使用加上轻微扰动的匀速直线运动模型;PT、TC、PF三种运动使用规律性的轨迹片段进行组合,所述轨迹片段表示如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>x</mi><mi>t</mi></msub><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub><mo>-</mo><mfrac><mi>A</mi><mi>&Omega;</mi></mfrac><mi>sin</mi><mrow><mo>(</mo><mi>&Omega;t</mi><mo>)</mo></mrow></mtd></mtr><mtr><mtd><msub><mi>y</mi><mi>t</mi></msub><mo>=</mo><msub><mi>y</mi><mn>0</mn></msub><mo>-</mo><mi>Ut</mi><mo>-</mo><mfrac><mi>A</mi><mi>&Omega;</mi></mfrac><mi>sin</mi><mrow><mo>(</mo><mi>&Omega;t</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686522420000011.GIF" wi="1499" he="322" /></maths>其中,t表示当前时间,x<sub>t</sub>与y<sub>t</sub>表示t时刻下的轨迹片段空间坐标,x<sub>0</sub>与y<sub>0</sub>表示初始时刻下的轨迹片段空间坐标,U表示匀速下降速度,A表示震荡幅度,Ω表示简谐运动频率;提取<img file="FDA0000686522420000012.GIF" wi="206" he="129" />时间内的x、y坐标作为轨迹片段;通过调整A、Ω、U的大小得到不同形态的轨迹片段,从而组合得到具有随机性的PT、TC、PF基础运动模板;TH、PS两种运动通过公式(2)表示:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mfenced open='{' close=''><mtable><mtr><mtd><msub><mi>x</mi><mi>t</mi></msub><mo>=</mo><msub><mi>A</mi><mi>e</mi></msub><mi>cos</mi><mrow><mo>(</mo><msup><mi>&Omega;</mi><mo>&prime;</mo></msup><mi>t</mi><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>E</mi><mi>e</mi></msub><mi>sin</mi><mrow><mo>(</mo><msup><mi>k&Omega;</mi><mo>&prime;</mo></msup><mi>t</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>y</mi><mi>t</mi></msub><mo>=</mo><mi>h</mi><mo>-</mo><msup><mi>U</mi><mo>&prime;</mo></msup><mi>t</mi></mtd></mtr><mtr><mtd><msub><mi>z</mi><mi>t</mi></msub><mo>=</mo><msub><mi>A</mi><mi>e</mi></msub><mi>sin</mi><mrow><mo>(</mo><msup><mi>&Omega;</mi><mo>&prime;</mo></msup><mi>t</mi><mo>)</mo></mrow><mrow><mo>(</mo><mn>1</mn><mo>+</mo><msub><mi>E</mi><mi>e</mi></msub><mi>sin</mi><mrow><mo>(</mo><msup><mi>k&Omega;</mi><mo>&prime;</mo></msup><mi>t</mi><mo>)</mo></mrow><mo>)</mo></mrow><mo>,</mo></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000686522420000013.GIF" wi="1092" he="274" /></maths>其中A<sub>e</sub>是XOZ平面的椭圆振幅,E<sub>e</sub>是椭圆长短轴的比值,k是椭圆震荡周期与物体旋转周期的比值,h是初始高度,Ω′是下降时的角速度,U′是下降时y方向的平均速度;(2)通过马尔科夫链模型,得到落叶轨迹的低维特征表示:对L<sub>i</sub>(1≤i≤6)而言,运动轨迹的无序性保持递增;设定一段自由坠落轨迹M{M=m<sub>1</sub>||m<sub>2</sub>||···||m<sub>i</sub>},所述M由数段m<sub>i</sub>拼接而成,每一段m<sub>i</sub>对应某一种基础运动模板L<sub>i</sub>,M的切换概率由马尔科夫链模型计算;设定特征D={S<sub>1</sub>,S<sub>2</sub>,S<sub>3</sub>,S<sub>4</sub>,S<sub>5</sub>},其中S<sub>i</sub>={L<sub>i</sub>,T<sub>i</sub>,P<sub>i</sub>},L<sub>i</sub>表示当前其所属的基础运动模板,T<sub>i</sub>表示这段轨迹在总体运动时间中所占的比例,P<sub>i</sub>表示从该运动轨迹的哪一段开始运动;以此得到落叶轨迹的低维特征表示D;(3)在渲染的初始化阶段,向GPU输入存储在内存中的叶片粒子的运动特征参数与形状特征参数;其中叶片粒子的运动特征参数为步骤2得到的特征D,形状特征参数包括叶片的长宽与初始法向、切向;(4)在实时渲染阶段,逐帧向GPU输入当前系统时间与风场信息,在GPU中进行落叶运动位置的计算,具体包括以下步骤:(4.1)通过逐帧传入的当前系统时间与步骤3中传入GPU的运动特征参数,得到当前粒子所属的基础运动模板L<sub>i</sub>与其在基础运动模板中的位置;(4.2)从基础轨迹模板中,获取粒子对应的轨迹运动速度V<sub>T</sub>与角速度Ω<sub>T</sub>(4.3)由当前系统时间与叶片所处位置,从风场中得到对应的风场响应运动速度V<sub>w</sub>;(4.4)粒子的最终速度V=V<sub>w</sub>+V<sub>T</sub>,最终角速度Ω=Ω<sub>T</sub>;结合当前帧与上一帧间隔时间Δt,更新叶片的空间位置和法向信息;(5)利用叶片粒子形状特征参数和步骤4.4计算得到的叶片粒子空间位置、法向,在GPU中进行叶片多边形重建,得到叶片多边形顶点与拓扑信息;具体为:通过求解叶片平面上垂直于法向Nor和切向Tan的向量Lup,得到多边形四个顶点的空间坐标,各顶点的纹理坐标由顶点顺序自动生成,各顶点的法向与质心法向一致。(6)通过步骤5得到的叶片多边形顶点与拓扑信息,对生成的叶片多边形进行实时渲染。
地址 310058 浙江省杭州市西湖区余杭塘路866号
您可能感兴趣的专利