一种用于河流模拟的方法和系统的制作方法

文档序号:6608773阅读:208来源:国知局
专利名称:一种用于河流模拟的方法和系统的制作方法
技术领域
本发明涉及3D图形绘制技术领域,特别是涉及一种用于河流模拟的方法和系统。
背景技术
随着电脑绘图技术的不断演进,3D绘图硬件效能的增强以及宽带网络的普及,3D技术的应用也有了新的风貌。目前3D技术的使用非常广泛,它已经成为各界研究、应用的主题,3D应用发展纵然也就成为了时势所趋最热门的研究话题,也是各行业努力的方向,它的发展主题跨及了制造设计、电子商务、动画制作、多媒体教学、虚拟现实以及游戏行业等。
但是应用3D技术对场景中的物体进行真实度很高的模拟是一件工作量很大的事情,例如,现有技术中对河流的模拟就需要以下步骤先由美术在3D Max或者Maya等建模工具制作好河流的模型,然后通过导出工具将这些模型导出成渲染引擎特定格式的数据文件,最后在场景编辑器中将这个数据文件导入将放在场景中相应的位置。而在场景制作的过程中,如果河流相关的场景进行了调整而导致河流的模型需要调整时,那么上述的过程就需要重新执行一次,浪费系统计算资源。上述方法复杂而繁锁,不能进行所见即所得的进行河流的编辑。
因此,迫切需要本领域技术人员发明出一种简单易行的河流模拟方法。

发明内容
本发明所要解决的技术问题是提供一种河流模拟方法和系统,能够方便和简化河流的模拟过程。
为了解决上述问题,本发明的实施例公开了一种河流模拟方法,包括以下步骤绘制与所模拟的河流相应的曲线链,并针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;连接顶点坐标,得到由多个三角形组成的条带网络;采用预置规则,针对各顶点设置对应的纹理坐标;依据顶点坐标和纹理坐标进行渲染,得到河流。
优选的,所述方法还可以包括在所述纹理坐标中增加一随时间变化的变量,以实现动态纹理。
进一步,所述曲线链中的第一个曲线段的参数还包括起始宽度和起始旋转角度。
优选的,当所述曲线链为矢量链时,通过以下步骤针对一矢量确定相应的顶点坐标将该矢量划分为预定段数;由该矢量的长度和方向,得到各个段的长度和方向;由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度;由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度;按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布。
优选的,当所述曲线链为贝塞尔曲线链时,通过以下步骤针对一贝塞尔曲线段确定相应的顶点坐标将该曲线段划分为预定段数;由该曲线段的参数方程,得到各个小段的位置点U,以及法平面;由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度;根据各小段的旋转角度和法平面确定各小段位置点U的法线;由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度;根据各小段位置点U的宽度和法线,确定顶点分布。
优选的,所述曲线链的绘制步骤在场景编辑器中完成。
根据本发明的实施例,还公开了一种河流模拟系统,包括曲线链绘制单元,用于绘制与所模拟的河流相应的曲线链,以及针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;顶点确定单元,用于根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;条带网络生成单元,用于连接各顶点坐标,得到由多个三角形组成的条带网络;
纹理坐标确定单元,用于采用预置规则,针对各顶点设置对应的纹理坐标;渲染单元,用于依据顶点坐标和纹理坐标进行渲染,得到河流。
优选的,所述纹理坐标中还包括一随时间变化的变量,以实现动态纹理。
优选的,所述曲线链中的第一个曲线段的参数还包括起始宽度和起始旋转角度。
优选的,当所述曲线链为矢量链时,所述顶点确定单元进一步包括用于将该矢量划分为预定段数的子单元;用于由该矢量的长度和方向,得到各个段的长度和方向的子单元;用于由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度的子单元;用于由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度的子单元;用于按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布的子单元。
优选的,当所述曲线链为贝塞尔曲线链时,所述顶点确定单元进一步包括用于将该曲线段划分为预定段数的子单元;用于由该曲线段的参数方程,得到各个小段的位置点U,以及法平面的子单元;用于由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度的子单元;用于根据各小段的旋转角度和法平面确定各小段位置点U的法线的子单元;用于由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度的子单元;用于根据各小段位置点U的宽度和法线,确定顶点分布的子单元。
与现有技术相比,本发明具有以下优点本发明通过对河流采用特殊的数据结构,由程序自动生成河流的模型,以及纹理坐标,在场景编辑器中可以所见即所得的进行河流编辑,极大的方便和简化了对河流的模拟。


图1是本发明一种河流模拟方法实施例的步骤流程图;图2是本发明另一河流模拟方法(以矢量链实现)实施例的步骤流程图;图3是矢量链的示意图;图4是由矢量链生成的条带网络的示意图;图5是所生成的纹理坐标示意图;图6是一种确定顶点坐标(以矢量链实现)的方法实施例的步骤流程图;
图7是另一种条带网络中某矢量的示意图;图8是另一确定顶点坐标(以凡塞尔曲线实现)的方法实施例的步骤流程图;图9是绘制凡塞尔曲线段的示意图;图10是连接两个凡塞尔曲线段的示意图;图11是以凡塞尔曲线实现时确定顶点坐标的示意图;图12是法平面、法线以及旋转角度之间的关系示意图;图13是法平面、法线、旋转角度、宽度以及顶点坐标之间的关系示意图;图14是一种河流模拟的系统实施例的结构框图;图15是另一河流模拟的系统实施例的结构框图。
具体实施例方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本发明作进一步详细的说明。
本发明的核心思想在于本发明将多个带有方向的条带相连起来进行河流的模拟。每个条带由一个曲线段、曲线段末尾的宽度和曲线段末尾沿矢量中心的旋转来进行描述,这样一个一个条带首尾相连形成一个带宽度和旋转数据的曲线链,然后根据每个曲线段的位置方向、长度、末尾的宽度和旋转自动生成一个三角形带来组成河流顶点数据,在这些顶点数据中赋予一个沿曲线链方向连续的纹理坐标,最后应用河流的纹理。运行时,将顶点的纹理坐标沿曲线链进行平滑移动,模拟河流的流动效果。
参照图1,示出了一种河流模拟的方法,主要用于在3D场景中对河流进行模拟和渲染,具体可以包括步骤101、绘制与所模拟的河流相应的曲线链,并针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;步骤102、根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;步骤103、连接顶点坐标,得到由多个三角形组成的条带网络;
步骤104、采用预置规则,针对各顶点设置对应的纹理坐标;步骤105、依据顶点坐标和纹理坐标进行渲染,得到河流。
步骤101中所述的曲线链可以为矢量链、贝塞尔曲线或者B样条曲线等等,本发明在此并不需要对曲线的样式加以限定,只要在曲线两侧能够均匀确定相应的顶点坐标即可。
步骤101中所述曲线段的控制信息主要用于确定该曲线段,例如,对于矢量链,则控制信息包括该矢量的位置和方向信息;对于贝塞尔曲线,则控制信息包括该曲线段的起点、终点以及控制点的信息。
步骤101中所述绘制可以由美工人员直接绘制的方式(类似画图),也可以采用设定参数然后生成绘制结果的方式。
参照图2,示出了一种河流模拟的方法实施例,该实施例采用了矢量链的方式来实现,具体可以包括以下步骤步骤201、绘制矢量链,并针对该矢量链中各个矢量设置相应的末尾宽度和末尾旋转角度。
矢量链,顾名思义就是由多个矢量首尾相连形成链条状。矢量链由技术人员(例如,美术)在场景中通过点击,确定点的位置来指定每一条矢量的方向和长度,就如同在Word中绘制多边形一样,点击某个位置后,就会有一条线始终连接鼠标和刚才所确定的位置,然后点击另一个位置来确定第一条矢量,矢量的方向就是从第一个点到第二个点的方向,长度就是二点之间的距离。如此,第三个点用来确定第二条矢量。
确定好矢量链的位置后,还可以对每一个矢量的起点和终点进行调整,并且设置好每一个矢量末尾的宽度和旋转角度,对于第一个矢量,还需要对其起点的宽度和旋转角度进行设置。
参照图3,其中,方箭头301为起点,带线的箭头302、303各为一条矢量,箭头302、303的宽度即为末尾的宽度,箭头302、303的旋转即为末尾的旋转。调整矢量链的时候美术人员可以看到由多个箭头链接而成的矢量链,直观的看到每一个矢量的起止点,末点的宽度、旋转,以及矢量链起始时的宽度和旋转。
所述矢量链的绘制步骤201在场景编辑器中完成即可,即技术人员绘制完成矢量链之后,由程序自动完成后续步骤的数据处理过程,从而可以实现在场景编辑器中的所见即所得的编辑方式,极大的方便和简化了对河流的模拟过程。当场景发生调整或者所模拟的河流不合适时,技术人员只需要在场景编辑器中调整该矢量链的相关参数即可。
步骤202、根据该矢量链的参数,确定所模拟河流的各顶点坐标,所述矢量链参数包括矢量长度、矢量方向、矢量末尾宽度和旋转角度。
步骤203、连接顶点坐标,得到由多个三角形组成的条带网络。
参见图4,是由矢量链生成的由多个三角形组成的条带网络的示意图。其中,每一条矢量生成的三角形数目可以由美术指定段数来调整,三角形的数目即为段数的两倍,因为一个段由两个三角形拼合而成。图4中一段对应四个顶点,因此,可以按照段数均匀的将顶点分布在矢量的两侧即可,其中,前一段的后两个顶点和后一段的前两个顶点场合。
步骤204、采用预置规则,针对各顶点设置对应的纹理坐标。
纹理一般是指3D图形中的2D贴图(位图),能应用到三角形(或一定数目的三角形)上,用来增加真实感。纹理坐标的作用是在纹理上指定一个点,因为纹理是2D的,所以我们仅需要两个值U和V。U是横轴的值,而V是纵轴的值,U和V的取值应该在0和1之间(取其它值用于生成特效),左上角是(0,0)右下角是(1,1)。其中,对于纹理上的某个位置(X1,Y1),(U1,V1)=(X1/纹理宽度,Y1/纹理高度),因此U=1,即X=纹理宽度,V=1,即Y=纹理高度。当UV小于0时,或大于1时纹理会按照所指定的地址模式映射到XY,如采用Wrap地址模式,则进行循环映射(如同平铺,本发明中采用此地址模式);而采用Mirror地址模式,则进行镜象映射。
对于本发明,可以采用各种方式确定纹理坐标,例如,参照图5,按照矢量的方向,依次给每一小段的每一个顶点指定纹理坐标就可以了。比如,第一、二小段顶点的纹理坐标为(0,0)、(0,1)、(1,0)、(1,1)、(2,0)、(2,1)。即只需要为第n小段的U坐标设置为n就可以了,V坐标即分别为0和1。当然,也可以给纹理坐标在U、V两个坐标进行一些缩放来达到缩放整个河流纹理映射的效果。例如,设置第一、二小段顶点的纹理坐标为(0,0)、(0,1)、(0.5,0)、(0.5,1)、(1,0)、(1,1);或者,(0,0)、(0,1)、(2,0)、(2,1)、(4,0)、(4,1)等等。
其他本领域技术人员熟知的确定纹理坐标的方式也都是可行的,例如,根据顶点坐标按照一定的规则计算得出相应的纹理坐标等等。
进一步,一个纹理坐标是可以对应多个纹理的,如果给某个物体应用了多个纹理,则同时也需要指定这些纹理中如何进行混合,实现起来虽然麻烦,但是在某些场景下可以获得更真实的视觉感受。由于该部分技术属于本领域技术人员所熟知的,因此,不再赘述。
步骤205、依据顶点坐标和纹理坐标进行渲染,得到河流。
渲染技术是游戏编程世界中的热点技术,同时它在其他领域中也有着非常重要的作用。如GIS系统,飞行模拟系统,VR系统以及数字地球技术等都离不开室外场景的实时渲染技术。一个优秀的室外场景实时渲染技术在保证实时性以外还能创造出非常逼真的、有说服力的虚拟自然环境。3D场景的渲染离不开3D API。目前流行的3D API有两种,SGI公司的OpenGL和微软公司的Direct3D。
由于通过前述步骤,已经获得了顶点坐标和相应的纹理坐标,再应用一张河流的纹理,就可以渲染出河流来;例如,只需要将上述数据通过调用D3D的API传入到显卡就可以实现渲染了。但这时的河流是不会动的,因为纹理的坐标没有运行。河流的模拟中需要按照时间作为参数来更改顶点的纹理坐标,以产生流动的视觉效果。比如顶点1在T1时刻的纹理坐标为(1,0),在T2时刻的纹理坐标为(2,0),在Tn时刻的纹理坐标为(n,0),这时就可以看出纹理在顶点上流动的效果。即只要在所有顶点纹理的U坐标上都加一个随时间变化的量就可以让河流流动起来。
上述实施例是采用静态图片循环显示的方式实现动态纹理的,当然,本领域技术人员也可以采用其他可行的实现方式,例如,金山公司申请的中国公开号为CN1936964A的专利公开文献中提出的利用视频文件实现3D场景中的动画纹理的方法。
参照图6,示出了一种针对一矢量确定相应的顶点坐标的方法实施例,具体包括以下步骤步骤601、将该矢量划分为预定段数;所述预定的段数可以由美术人员等根据实际需要指定即可,或者也可以设定段数-需求的对应表,自动从中查询获得。
步骤602、由该矢量的长度和方向,得到各个段的长度和方向;步骤603、由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度;步骤604、由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度;步骤605、按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布。
需要说明的是,以上步骤之间并没有固定的顺序关系,有些步骤还可以合为一个步骤完成,例如,步骤601和602等。另外,得到各个段相应宽度和旋转角度的线性插值计算方法仅仅是本实施例的一个优选方案,本领域技术人员当然也可以根据实际需要应用其他任何可行的数学模型计算得到各个段的相应宽度和旋转角度,只要得到这些数据,就可以由该矢量链得到河流的立体架构;只不过这些参数的优劣会影响到所模拟河流的形状而已。
由于计算机图形学中所有的物体都是由最简单的三角形组成的,所以在本实施例中,优选的,连接顶点坐标所得到的条带网络是由多个三角形构成的。每一条矢量生成的三角形数目可以由所预定的段数来决定,三角形的数目即为段数的两倍,因为一个段由两个三角形拼合而成。然后程序按照段数均匀的将顶点分布在矢量的两侧,由每个段的长度、宽度和方向确定了三角形的二维图形,又根据旋转角度将多个三角形连接起来,从而形成三维结构。
每个段的宽度由矢量起始时的宽度和末尾的宽度线性插值产生,每个段都以矢量为中心,围绕矢量旋转的角度也由矢量起始时的旋转角度一末尾时的旋转角度线性插值产生。对于线性插值,即可以理解为对起、止两个数按照参数求出中间数的方法。具体公式可以写为P=P1+t(P2-P1),P1为起始值,P2为终止值,t为参数(0≤t≤1),当t=0时P=P1,当t=1时P=P2。如七点的气温为15度,十二点的气温为25度,按照线性插值,十点的气温为15+(10-7)/(12-7)*(25-15)=21度。
在两个矢量首尾相接的地方,因为上一矢量的末段和下一矢量的首段宽度和旋转都相同,因此下一矢量的首段可以采用上一矢量的末段的顶点,缝合在一起,最终形成一条连续的条带。对于两个矢量连接处的圆滑问题,可以通过增加该矢量的段数或者增加相邻多个矢量的段数等方式达到较佳的效果。
步骤601-605仅仅是用于实现图4所示的条带网络的一种方案,如果所需的条带网络的结构更加复杂,例如,参见图7,矢量的一段由4个或者更多的三角形组成,则针对每个段所设置的顶点数据会增多,相应的计算步骤也会更加复杂,比如,对该段宽度进一步进行划分等等。
前面所详述的实施例是采用矢量链来表示河流的位置和方向,生成顶点,最终产成条带。采用矢量链的优点是简单,但因为矢量链是由矢量首尾相接形成的链条,因此,每一条矢量都是直的,要想形成圆滑的矢量链就不得不增加矢量的条数,并缩短每条矢量的长度,这样会给河流制作人员带来较大的工作量。
一种改进的方案是,采用曲线来替换矢量链,作为河流的位置和方向的表示,并由此曲线来生成顶点,虽然在生成顶点时还是要对曲线按小段进行采样,但因为小段的数目较多,且小段的距离较短,这样生成的条带相比将会是一条比较圆滑的条带,而不像之前那样由矢量链中的矢量生成的同一方向的小段那般是直的。
下面以三次贝塞尔曲线为例阐述如何确定曲线,以及如何生成顶点。其中与前述矢量链的实现方式中的相似之处就不再详述,参见前述相关部分即可。
参照图8,示出了一种针对一贝塞尔曲线段确定相应的顶点坐标的方法实施例,具体包括以下步骤步骤801、将该曲线段划分为预定段数;对于贝塞尔曲线而言,一条贝塞尔曲线由一个起点,一个终点,和两个控制点来确定。参见图9,P0,P3为曲线的起止点,P1,P2为控制点。P0到P1的矢量为P0的切线,P3到P2的矢量为P3的切线。
贝塞尔曲线的参数方程如下Q(u)=P0(1-u)3+P13u(1-u)2+P23u2(1-u)+P3u3其中,u为参数,(0≤u≤1)。
两个贝塞尔曲线段相接连时,需要把前一个贝塞尔曲线段的终点和后一个贝塞尔曲线段的起点重合,而且前一个贝塞尔曲线段的终点的切线和后一个贝塞尔曲线段的起点的切线应在同一直线上,以保证两条贝塞尔曲线段的连续性。参照图10,Q1的终点P3和Q2的起点S0重合,且P3的切线和S0的切线在同一条直线上。
步骤802、由该曲线段的参数方程,得到各个小段的位置点U,以及法平面;假设,我们将曲线分为10段,则每小段的参数u分别为0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0。将各小段的参数代入参数方程即可求得各个小段的位置点U,以及法平面;具体的求值过程属于该领域数学计算的一般知识,在此不进行详述了。参见图11,示出了参数u分别为0.2和0.7时的法平面F1、F2;位置点U1、U2;以及最终确定的顶点a、b、c、d。
步骤803、由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度;步骤804、根据各小段的旋转角度和法平面确定各小段位置点U的法线;参照图12,示出了法平面F1、法线L和旋转角度β之间的关系,位置点为U1。
步骤805、由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度;步骤806、根据各小段位置点U的宽度和法线,确定顶点分布。
参照图13,示出了根据图12所示的参数确定顶点b的结果,其中点U1和点b之间的距离等于步骤805所得的宽度,法平面F1、法线L和旋转角度β之间的关系也如图所示。
由于具体的计算过程由贝塞尔曲线的数学属性决定,并且对于采用贝塞尔曲线的实现方式而言,其条带生成步骤、纹理坐标生成以及渲染步骤都与前述的实施例相似,因此,本实施例只需简单介绍独特之处即可。
参照图14,示出了一种用于河流模拟的系统实施例,具体可以包括
曲线链绘制单元1401,用于绘制与所模拟的河流相应的曲线链,以及针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;顶点确定单元1402,用于根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;条带网络生成单元1403,用于连接各顶点坐标,得到由多个三角形组成的条带网络;纹理坐标确定单元1404,用于采用预置规则,针对各顶点设置对应的纹理坐标;渲染单元1405,用于依据顶点坐标和纹理坐标进行渲染,得到河流。
优选的,所述纹理坐标中还包括一随时间变化的变量,以实现动态纹理。所述曲线链中的第一个曲线段的参数还包括,起始宽度和起始旋转角度。
对于所述顶点确定单元的实现方式之一,以贝塞尔曲线为例,其进一步可以包括用于将该曲线段划分为预定段数的子单元;用于由该曲线段的参数方程,得到各个小段的位置点U,以及法平面的子单元;用于由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度的子单元;用于根据各小段的旋转角度和法平面确定各小段位置点U的法线的子单元;用于由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度的子单元;用于根据各小段位置点U的宽度和法线,确定顶点分布的子单元。
参见图15,示出了一种用于河流模拟的系统实施例,具体可以包括矢量链绘制单元1501,用于绘制矢量链,以及针对该矢量链中各个矢量设置相应的末尾宽度和末尾旋转角度;顶点确定单元1502,用于根据该矢量链的参数,确定所模拟河流的各顶点坐标,所述矢量链参数包括矢量长度、矢量方向、矢量末尾宽度和旋转角度;条带网络生成单元1503,用于连接各顶点坐标,得到由多个三角形组成的条带网络;纹理坐标确定单元1504,用于采用预置规则,针对各顶点设置对应的纹理坐标;渲染单元1505,用于依据顶点坐标和纹理坐标进行渲染,得到河流。渲染单元一般需要和图形API(例如,D3D,Opengl等)进行数据交互,完成时间的渲染。
优选的,所述纹理坐标中还包括一随时间变化的变量,以实现动态纹理。所述矢量链中的第一个矢量的参数还包括,起始宽度和起始旋转角度。
对于所述顶点确定单元的实现方式之一,其进一步包括用于将该矢量划分为预定段数的子单元;用于由该矢量的长度和方向,得到各个段的长度和方向的子单元;用于由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度的子单元;用于由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度的子单元;用于按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布的子单元。
优选的,所述矢量链绘制单元、顶点确定单元、条带网络生成单元和纹理坐标确定单元位于场景编辑器中,即通过改进现有的场景编辑器,增加相应的功能而实现本发明。当然,也可以直接编制一个独立的软件,包括图7所示的各个单元,也可以实现本发明。
对于系统实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种用于河流模拟的方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种河流模拟方法,其特征在于,包括绘制与所模拟的河流相应的曲线链,并针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;连接顶点坐标,得到由多个三角形组成的条带网络;采用预置规则,针对各顶点设置对应的纹理坐标;依据顶点坐标和纹理坐标进行渲染,得到河流。
2.如权利要求1所述的方法,其特征在于,还包括在所述纹理坐标中增加一随时间变化的变量,以实现动态纹理。
3.如权利要求1所述的方法,其特征在于,所述曲线链中的第一个曲线段的参数还包括起始宽度和起始旋转角度。
4.如权利要求1所述的方法,其特征在于,当所述曲线链为矢量链时,通过以下步骤针对一矢量确定相应的顶点坐标将该矢量划分为预定段数;由该矢量的长度和方向,得到各个段的长度和方向;由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度;由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度;按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布。
5.如权利要求1所述的方法,其特征在于,当所述曲线链为贝塞尔曲线链时,通过以下步骤针对一贝塞尔曲线段确定相应的顶点坐标将该曲线段划分为预定段数;由该曲线段的参数方程,得到各个小段的位置点U,以及法平面;由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度;根据各小段的旋转角度和法平面确定各小段位置点U的法线;由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度;根据各小段位置点U的宽度和法线,确定顶点分布。
6.如权利要求1所述的方法,其特征在于,所述曲线链的绘制步骤在场景编辑器中完成。
7.一种河流模拟系统,其特征在于,包括曲线链绘制单元,用于绘制与所模拟的河流相应的曲线链,以及针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;顶点确定单元,用于根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;条带网络生成单元,用于连接各顶点坐标,得到由多个三角形组成的条带网络;纹理坐标确定单元,用于采用预置规则,针对各顶点设置对应的纹理坐标;渲染单元,用于依据顶点坐标和纹理坐标进行渲染,得到河流。
8.如权利要求7所述的系统,其特征在于,所述纹理坐标中还包括一随时间变化的变量,以实现动态纹理。
9.如权利要求7所述的系统,其特征在于,所述曲线链中的第一个曲线段的参数还包括起始宽度和起始旋转角度。
10.如权利要求7所述的系统,其特征在于,当所述曲线链为矢量链时,所述顶点确定单元进一步包括用于将该矢量划分为预定段数的子单元;用于由该矢量的长度和方向,得到各个段的长度和方向的子单元;用于由该矢量起始宽度和末尾宽度线性插值得到各个段的宽度的子单元;用于由该矢量起始旋转角度和末尾旋转角度线性插值得到各个段以该矢量为中心、围绕该矢量的旋转角度的子单元;用于按照各个段的长度、方向、宽度以及旋转角度,在该矢量两侧确定顶点分布的子单元。
11.如权利要求7所述的系统,其特征在于,当所述曲线链为贝塞尔曲线链时,所述顶点确定单元进一步包括用于将该曲线段划分为预定段数的子单元;用于由该曲线段的参数方程,得到各个小段的位置点U,以及法平面的子单元;用于由该曲线段的起始旋转角度和末尾旋转角度线性插值得到各个小段位置点U的旋转角度的子单元;用于根据各小段的旋转角度和法平面确定各小段位置点U的法线的子单元;用于由该曲线段的起始宽度和末尾宽度线性插值得到各个小段位置点U的宽度的子单元;用于根据各小段位置点U的宽度和法线,确定顶点分布的子单元。
全文摘要
本发明提供了一种河流模拟方法和系统,该方法可以包括绘制与所模拟的河流相应的曲线链,并针对该曲线链中各个曲线段相应的末尾宽度和末尾旋转角度;通过所述绘制过程确定各个曲线段的控制信息;根据该曲线链中各个曲线段的参数,确定所模拟河流的各顶点坐标,所述参数包括曲线段的控制信息、曲线段的末尾宽度和旋转角度;连接顶点坐标,得到由多个三角形组成的条带网络;采用预置规则,针对各顶点设置对应的纹理坐标;依据顶点坐标和纹理坐标进行渲染,得到河流。本发明通过对河流采用特殊的数据结构,由程序自动生成河流的模型,以及纹理坐标,在场景编辑器中可以所见即所得的进行河流编辑,极大的方便和简化了对河流的模拟。
文档编号G06T15/10GK101051390SQ200710099168
公开日2007年10月10日 申请日期2007年5月15日 优先权日2007年5月15日
发明者刘思维 申请人:北京金山软件有限公司, 北京金山数字娱乐科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1