陈纪龙+姚江河+姚旭
要:以新疆南疆胡杨为研究对象,运用线性回归方程拟合出胡杨茎高与胸径之间的生长数学模型;运用C++/CLR和Visual C++编程语言及DXUT图形库技术建立胡杨茎的3D模型,并实现生长模拟的可视化;经过渲染、光栅化、法线贴图等处理,使对胡杨树茎的模拟更具真实效果。
关键词:胡杨;生长模型;可视化系统;新疆南疆
中图分类号:TP319 文献标识码:A 文章编号:0439-8114(2014)20-4966-03
DOI:10.14088/j.cnki.issn0439-8114.2014.20.053
Growth Model of Populus Stem Height and Diameter and Visualization
CHEN Ji-long,YAO Jiang-he,YAO Xu
(College of Information Engineering,Tarim University,Alar 843300,Xinjiang,China)
Abstract: The mathematical model of growth between stem height and diameter of populus in Southern Xinjiang was fitted using linear regression equation. The 3D model of populus stem is established by using C++/CLR, Visual C++ programming language, DXUT graphics library technology. The visualization of growth simulation was realized after rendering, rastering,normal maping and so on etc. the simulation of populus stems was more real.
Key words: populus; growth model; visualization system
随着计算机技术发展,树木生长模拟技术也随之快速发展[1]。在游戏场景、三维影视等中常看到栩栩如生的植物,其展示了计算机虚拟技术在树木生长模拟技术中成功地运用。由于树木生理周期长、体积大、生长过程复杂,在短时间内难以采集到大量真实准确的数据[2],所以现代林业越来越重视树木的生长模拟研究,其操作方便、可视性强[3]。本研究通过调节胡杨的生长因子,模拟了胡杨茎生长过程,为后续研究奠定了坚实的基础。
1 胡杨茎高与胸径生长模型的建立
在塔里木河附近、阿拉尔市及十二团周边根据不同土壤类型选择样地,采集胡杨胸径、树龄、树高及土壤含水量等数据,对其试验分析并运用线性回归方程拟合出胡杨茎高与胸径生长的数学模型,计算公式如下式所示:
y=3.518 7inx-1.474 2
其中,y表示胡杨茎高,单位为m;x表示胡杨胸径,单位为m,y与x之间关系的散点图如图1所示。从图1中可以看出,随着胡杨胸径不断地增长,胡杨茎高也在不断地增加,所以胡杨树的生长是不可逆的[4]。
2 胡杨茎的3D模型
采用3D图形学中网格建模技术建立胡杨茎的三维结构模型,该技术具有兼容性好,占用系统资源少,运算速度快等特点[5]。网格一般由三角形构成,表示三角形网格的常见技术是列举顶点,即顺序读取3个顶点构成一个三角形,顶点存储于顶点缓存中。但在三角形网格中,一个顶点往往被多个三角形所共享,同一个顶点信息被多次存储,造成了冗余信息,浪费了大量存储空间,运算效率较低。因此,本研究采用索引来访问三角形顶点,这种方法需要建立两个数组,一个数组用于存储模型中所有的顶点,另一个数组则存储每一个三角形的顶点在第一个数组中的索引。通常情况下,顶点缓存中的顶点数据不仅包含顶点坐标及顶点颜色值,还应该包含法线、纹理坐标。索引一般使用16位无符号整数,可以表示65 536个顶点,这样节约了存储空间,提升了程序的运算性能。在建立胡杨茎的模型时,需要用到圆的参数方程来求顶点数据,这些数据构成了圆柱体模型。本研究建立的胡杨茎3D模型如图2所示。
3 南疆胡杨茎高与胸径生长模拟可视化系统
3.1 系统简介
本系统的开发平台为Visual Studio 2013,数据库采用SQLite3,SQLite3是一款轻型关联式数据库管理系统,目前应用在很多嵌入式产品中,只需要几百千字节的内存,占用系统资源低,处理速度快,能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如C#、PHP、Java等。数据库连接采用ODBC接口,编程语言为C++/CLR和Visual C++,图形库采用DXUT,DXUT是建立在Direct3D 9和Direct3D 10 API上的一个程序框架。Excel文档读写采用MyXls,MyXls是一个操作Excel的开源类库,方便快捷,速度快,体积小。可视化系统主界面如图3所示。
3.2 功能介绍
本系统由5个功能模块组成,各模块简介如下。
1)Data Manage(F1)。通过单击或按功能键F1,可以打开此功能界面,该模块实现了胡杨数据的管理,包括胡杨数据的查询、添加、修改、删除、导入及导出。比如通过设置选项参数,可以查询符合条件的数据,并输出结果。
2)Change Device(F2)。通过更改相应显卡参数,调整胡杨茎的显示效果。比如多重采样抗锯齿选项(Multisample Count),通过选择下拉列表框中的参数,可以很好地消除胡杨茎在旋转过程中产生的锯齿现象,使画面更加平滑。
3)胡杨茎模型。界面中央为胡杨茎的3D模型,使用者可以拖动鼠标左右键,来控制胡杨茎任意角度的滚动和旋转,按下W或S键,可以调整胡杨茎观察视角的远近。
4)Tree Height和Tree Radius。通过滚动条调整胡杨树茎高和胸径的参数值,来对胡杨茎的生长进行动态模拟。这两个参数是有关联的,无论拖动哪一个,都会使另一个发生变化,这是由胡杨树茎高与胸径的生长数学模型决定的。
5)Animation 单选框。可以自动控制胡杨茎的生长过程。选中该框,观察者可以清晰地看到胡杨茎的3D生长过程,从一个点直到长成一棵参天大树。图4是截取的一段生长过程效果图。
3.3 系统的实现及关键技术
1)法线。源自光源的光线将在胡杨茎表面反射,随后抵达眼部位置,观察者就可以看到场景中的对象,这个过程称之为光照模拟。为了求得反射后的光线向量,需要知道表面法线;为了求得法线[6],将三角形的边数据看做向量并计算叉积以求法线数据。为了后续数据处理的方便,将叉积结果除以向量长度(length),获得单位向量。
2)纹理坐标。为了增强视觉的真实感,本系统将拍摄的胡杨表皮图片附加到模型上,同时存储对应图片的纹理坐标,即是将图片上每一个点精确对应到胡杨茎模型的表面,这样就能使图片上的每个像素和构成胡杨茎模型的三角形的顶点一一对应,便于以后的法线贴图。
3)树木的渲染。采用基于左手坐标系的3D渲染。为了增强胡杨茎模型表面的凹凸感,采用了法线贴图技术,即在模型表面的每个点上均作法线,通过RGB(对应坐标x、y、z)颜色通道来标记法线的方向,来增强表面的凹凸感。胡杨茎建模的空间称为对象空间,相应的坐标都是对应于圆柱体的底面中心,在顶点处理阶段,对象空间将变换至多个空间,直至达到裁剪空间[7,8]。世界变换就是将物体顶点坐标从对象空间转换到世界空间。在对象空间里,顶点坐标依据模型的本地坐标系原点而定,在世界空间里,所有模型的顶点共用一个原点,即世界坐标系原点。事实上,世界变换就是将一个模型从对象空间重新定位到世界空间内,从对象空间到世界空间的转换实际上就是对模型进行平移、旋转、缩放以及它们的任意组合变换而成。
4)视见体。考虑到相机有限的视域范围,是无法捕捉场景的全部对象,本研究将可见区域称为视见体,其有4个参数需加以定义:垂直方向上视角的大小fovy、横纵比aspect、近裁剪面n、远裁剪面f,这样就定义了一个金字塔区域用来裁剪,然后进行投影。
5)光栅化。该过程简单来说就是把胡杨茎模型及与其相关的颜色信息转换成屏幕上的像素,即让构成胡杨茎模型的三角形都具有真实色彩。
6)光照。采用phong光照模式,用于模拟现实中的光照,对象表面上一点的颜色由四项定义,即漫反射(diffuse)、镜面反射(specular)、环境光(ambient)和反射光。其中,漫反射和镜面反射来源于光源的光线,环境光用于模拟间接光照,反射光则是来自发光对象。由于光照是通过法线计算的,会导致树木看上去是平的,不符合树木的生理特征,采用法线贴图技术来增强表面凹凸感。
7)法线贴图。首先根据对象表面的凹凸来生成对象表面法线数据,对于法线的计算,需要使用到偏导数,即dh/dx和dh/dy,这时,可以获得(x,y,h(x,y))的两个切向量,即(1,0,dh/dx)和(0,1,dh/dy)。同理,通过叉积求得法线,将法线数据存储在图片中,用于光照计算,本设计所用的法线贴图如图5所示。最后,在顶点着色器中使用法线贴图和对应的纹理坐标,来进行光照计算,最终达到理想效果。
4 结论
运用线性回归方程拟合出胡杨茎高与胸径之间生长的数学模型,在此基础上运用C++/CLR和Visual C++编程语言及DXUT图形库技术建立了胡杨茎3D生长模型,最后运用渲染、光栅化、法线贴图等技术,实现了胡杨茎生长模拟的可视化。本系统的模拟效果生动逼真,在一定程度上反映了胡杨的生长形态和生理特征,对胡杨生长模拟的信息化研究有一定的促进意义。
参考文献:
[1] 王 珊.基于人工智能的虚拟树木生长过程模拟[D].北京:北京林业大学,2010.
[2] 周春江.基于L系统的虚拟植物生长的模拟研究[D].重庆:重庆大学,2005.
[3] 陈恩波.作物生长模拟研究综述[J].中国农学通报,2009,25(22):114-117.
[4] 吴文美.基于L-systems的植物功能结构生长模拟研究[D].北京:北京林业大学,2013.
[5] 刘 骥.植物生长模拟与可视化研究[D].重庆:重庆大学,2009.
[6] 龙 洁,苏喜友.国内树木三维可视化研究进展[J].林业调查规划,2007,32(6):44-47.
[7] 何新乐.光影响下的植物生长模拟方法与可视化建模[D].重庆:重庆大学,2011.
[8] 卢康宁.基于生理生态模型的杉木形态结构变化可视化模拟研究[D].北京:中国林业科学研究院,2012.
2)Change Device(F2)。通过更改相应显卡参数,调整胡杨茎的显示效果。比如多重采样抗锯齿选项(Multisample Count),通过选择下拉列表框中的参数,可以很好地消除胡杨茎在旋转过程中产生的锯齿现象,使画面更加平滑。
3)胡杨茎模型。界面中央为胡杨茎的3D模型,使用者可以拖动鼠标左右键,来控制胡杨茎任意角度的滚动和旋转,按下W或S键,可以调整胡杨茎观察视角的远近。
4)Tree Height和Tree Radius。通过滚动条调整胡杨树茎高和胸径的参数值,来对胡杨茎的生长进行动态模拟。这两个参数是有关联的,无论拖动哪一个,都会使另一个发生变化,这是由胡杨树茎高与胸径的生长数学模型决定的。
5)Animation 单选框。可以自动控制胡杨茎的生长过程。选中该框,观察者可以清晰地看到胡杨茎的3D生长过程,从一个点直到长成一棵参天大树。图4是截取的一段生长过程效果图。
3.3 系统的实现及关键技术
1)法线。源自光源的光线将在胡杨茎表面反射,随后抵达眼部位置,观察者就可以看到场景中的对象,这个过程称之为光照模拟。为了求得反射后的光线向量,需要知道表面法线;为了求得法线[6],将三角形的边数据看做向量并计算叉积以求法线数据。为了后续数据处理的方便,将叉积结果除以向量长度(length),获得单位向量。
2)纹理坐标。为了增强视觉的真实感,本系统将拍摄的胡杨表皮图片附加到模型上,同时存储对应图片的纹理坐标,即是将图片上每一个点精确对应到胡杨茎模型的表面,这样就能使图片上的每个像素和构成胡杨茎模型的三角形的顶点一一对应,便于以后的法线贴图。
3)树木的渲染。采用基于左手坐标系的3D渲染。为了增强胡杨茎模型表面的凹凸感,采用了法线贴图技术,即在模型表面的每个点上均作法线,通过RGB(对应坐标x、y、z)颜色通道来标记法线的方向,来增强表面的凹凸感。胡杨茎建模的空间称为对象空间,相应的坐标都是对应于圆柱体的底面中心,在顶点处理阶段,对象空间将变换至多个空间,直至达到裁剪空间[7,8]。世界变换就是将物体顶点坐标从对象空间转换到世界空间。在对象空间里,顶点坐标依据模型的本地坐标系原点而定,在世界空间里,所有模型的顶点共用一个原点,即世界坐标系原点。事实上,世界变换就是将一个模型从对象空间重新定位到世界空间内,从对象空间到世界空间的转换实际上就是对模型进行平移、旋转、缩放以及它们的任意组合变换而成。
4)视见体。考虑到相机有限的视域范围,是无法捕捉场景的全部对象,本研究将可见区域称为视见体,其有4个参数需加以定义:垂直方向上视角的大小fovy、横纵比aspect、近裁剪面n、远裁剪面f,这样就定义了一个金字塔区域用来裁剪,然后进行投影。
5)光栅化。该过程简单来说就是把胡杨茎模型及与其相关的颜色信息转换成屏幕上的像素,即让构成胡杨茎模型的三角形都具有真实色彩。
6)光照。采用phong光照模式,用于模拟现实中的光照,对象表面上一点的颜色由四项定义,即漫反射(diffuse)、镜面反射(specular)、环境光(ambient)和反射光。其中,漫反射和镜面反射来源于光源的光线,环境光用于模拟间接光照,反射光则是来自发光对象。由于光照是通过法线计算的,会导致树木看上去是平的,不符合树木的生理特征,采用法线贴图技术来增强表面凹凸感。
7)法线贴图。首先根据对象表面的凹凸来生成对象表面法线数据,对于法线的计算,需要使用到偏导数,即dh/dx和dh/dy,这时,可以获得(x,y,h(x,y))的两个切向量,即(1,0,dh/dx)和(0,1,dh/dy)。同理,通过叉积求得法线,将法线数据存储在图片中,用于光照计算,本设计所用的法线贴图如图5所示。最后,在顶点着色器中使用法线贴图和对应的纹理坐标,来进行光照计算,最终达到理想效果。
4 结论
运用线性回归方程拟合出胡杨茎高与胸径之间生长的数学模型,在此基础上运用C++/CLR和Visual C++编程语言及DXUT图形库技术建立了胡杨茎3D生长模型,最后运用渲染、光栅化、法线贴图等技术,实现了胡杨茎生长模拟的可视化。本系统的模拟效果生动逼真,在一定程度上反映了胡杨的生长形态和生理特征,对胡杨生长模拟的信息化研究有一定的促进意义。
参考文献:
[1] 王 珊.基于人工智能的虚拟树木生长过程模拟[D].北京:北京林业大学,2010.
[2] 周春江.基于L系统的虚拟植物生长的模拟研究[D].重庆:重庆大学,2005.
[3] 陈恩波.作物生长模拟研究综述[J].中国农学通报,2009,25(22):114-117.
[4] 吴文美.基于L-systems的植物功能结构生长模拟研究[D].北京:北京林业大学,2013.
[5] 刘 骥.植物生长模拟与可视化研究[D].重庆:重庆大学,2009.
[6] 龙 洁,苏喜友.国内树木三维可视化研究进展[J].林业调查规划,2007,32(6):44-47.
[7] 何新乐.光影响下的植物生长模拟方法与可视化建模[D].重庆:重庆大学,2011.
[8] 卢康宁.基于生理生态模型的杉木形态结构变化可视化模拟研究[D].北京:中国林业科学研究院,2012.
2)Change Device(F2)。通过更改相应显卡参数,调整胡杨茎的显示效果。比如多重采样抗锯齿选项(Multisample Count),通过选择下拉列表框中的参数,可以很好地消除胡杨茎在旋转过程中产生的锯齿现象,使画面更加平滑。
3)胡杨茎模型。界面中央为胡杨茎的3D模型,使用者可以拖动鼠标左右键,来控制胡杨茎任意角度的滚动和旋转,按下W或S键,可以调整胡杨茎观察视角的远近。
4)Tree Height和Tree Radius。通过滚动条调整胡杨树茎高和胸径的参数值,来对胡杨茎的生长进行动态模拟。这两个参数是有关联的,无论拖动哪一个,都会使另一个发生变化,这是由胡杨树茎高与胸径的生长数学模型决定的。
5)Animation 单选框。可以自动控制胡杨茎的生长过程。选中该框,观察者可以清晰地看到胡杨茎的3D生长过程,从一个点直到长成一棵参天大树。图4是截取的一段生长过程效果图。
3.3 系统的实现及关键技术
1)法线。源自光源的光线将在胡杨茎表面反射,随后抵达眼部位置,观察者就可以看到场景中的对象,这个过程称之为光照模拟。为了求得反射后的光线向量,需要知道表面法线;为了求得法线[6],将三角形的边数据看做向量并计算叉积以求法线数据。为了后续数据处理的方便,将叉积结果除以向量长度(length),获得单位向量。
2)纹理坐标。为了增强视觉的真实感,本系统将拍摄的胡杨表皮图片附加到模型上,同时存储对应图片的纹理坐标,即是将图片上每一个点精确对应到胡杨茎模型的表面,这样就能使图片上的每个像素和构成胡杨茎模型的三角形的顶点一一对应,便于以后的法线贴图。
3)树木的渲染。采用基于左手坐标系的3D渲染。为了增强胡杨茎模型表面的凹凸感,采用了法线贴图技术,即在模型表面的每个点上均作法线,通过RGB(对应坐标x、y、z)颜色通道来标记法线的方向,来增强表面的凹凸感。胡杨茎建模的空间称为对象空间,相应的坐标都是对应于圆柱体的底面中心,在顶点处理阶段,对象空间将变换至多个空间,直至达到裁剪空间[7,8]。世界变换就是将物体顶点坐标从对象空间转换到世界空间。在对象空间里,顶点坐标依据模型的本地坐标系原点而定,在世界空间里,所有模型的顶点共用一个原点,即世界坐标系原点。事实上,世界变换就是将一个模型从对象空间重新定位到世界空间内,从对象空间到世界空间的转换实际上就是对模型进行平移、旋转、缩放以及它们的任意组合变换而成。
4)视见体。考虑到相机有限的视域范围,是无法捕捉场景的全部对象,本研究将可见区域称为视见体,其有4个参数需加以定义:垂直方向上视角的大小fovy、横纵比aspect、近裁剪面n、远裁剪面f,这样就定义了一个金字塔区域用来裁剪,然后进行投影。
5)光栅化。该过程简单来说就是把胡杨茎模型及与其相关的颜色信息转换成屏幕上的像素,即让构成胡杨茎模型的三角形都具有真实色彩。
6)光照。采用phong光照模式,用于模拟现实中的光照,对象表面上一点的颜色由四项定义,即漫反射(diffuse)、镜面反射(specular)、环境光(ambient)和反射光。其中,漫反射和镜面反射来源于光源的光线,环境光用于模拟间接光照,反射光则是来自发光对象。由于光照是通过法线计算的,会导致树木看上去是平的,不符合树木的生理特征,采用法线贴图技术来增强表面凹凸感。
7)法线贴图。首先根据对象表面的凹凸来生成对象表面法线数据,对于法线的计算,需要使用到偏导数,即dh/dx和dh/dy,这时,可以获得(x,y,h(x,y))的两个切向量,即(1,0,dh/dx)和(0,1,dh/dy)。同理,通过叉积求得法线,将法线数据存储在图片中,用于光照计算,本设计所用的法线贴图如图5所示。最后,在顶点着色器中使用法线贴图和对应的纹理坐标,来进行光照计算,最终达到理想效果。
4 结论
运用线性回归方程拟合出胡杨茎高与胸径之间生长的数学模型,在此基础上运用C++/CLR和Visual C++编程语言及DXUT图形库技术建立了胡杨茎3D生长模型,最后运用渲染、光栅化、法线贴图等技术,实现了胡杨茎生长模拟的可视化。本系统的模拟效果生动逼真,在一定程度上反映了胡杨的生长形态和生理特征,对胡杨生长模拟的信息化研究有一定的促进意义。
参考文献:
[1] 王 珊.基于人工智能的虚拟树木生长过程模拟[D].北京:北京林业大学,2010.
[2] 周春江.基于L系统的虚拟植物生长的模拟研究[D].重庆:重庆大学,2005.
[3] 陈恩波.作物生长模拟研究综述[J].中国农学通报,2009,25(22):114-117.
[4] 吴文美.基于L-systems的植物功能结构生长模拟研究[D].北京:北京林业大学,2013.
[5] 刘 骥.植物生长模拟与可视化研究[D].重庆:重庆大学,2009.
[6] 龙 洁,苏喜友.国内树木三维可视化研究进展[J].林业调查规划,2007,32(6):44-47.
[7] 何新乐.光影响下的植物生长模拟方法与可视化建模[D].重庆:重庆大学,2011.
[8] 卢康宁.基于生理生态模型的杉木形态结构变化可视化模拟研究[D].北京:中国林业科学研究院,2012.