APP下载

中草药野外采集仿真实训系统研究

2022-05-14吴俊华申闫春

计算机仿真 2022年4期
关键词:分支中草药植被

张 蕾,吴俊华,陈 飞,申闫春

(1. 河南中医药大学护理学院,河南 郑州 450046;2. 北京信息科技大学计算机学院,北京 100192)

1 引言

中草药野外采集实训教学是培养高技能中药专业学生必修的教学环节,但是,中草药分布地域广、生长季节不同,而且,有些中草药生长环境险要,野外采集时还有野兽、毒蛇、毒蜂等危险。针对这些问题,研究一种中草药野外采集仿真实训的教学方法,可以把不同地域、一年四季生长的中草药都虚拟“种植”在相应的模拟生长环境中,让学生在“野外虚拟仿真环境”中采集各种中草药,学会野外中草药的采集过程,学会如何寻找中草药,拍摄中草药植物体、茎、叶、花等照片,GPS定位、记录地理坐标位置、海拔高度,记录坡向、坡度、坡位,采集中草药植物标本,装进采集袋中,观察、识别三维中草药仿真模型,填写野外中草药采集记录报告。

随着虚拟仿真系统在军事模拟训练、城市规划、虚拟交通、视景旅游、园林仿真等领域的广泛应用,虚拟仿真技术得到飞速发展,人们对虚拟场景模拟的真实度也越来越高,尤其是植被仿真需要生成高逼真度的植物模型,并能满足大规模植被渲染速度需求。目前,在虚拟仿真系统中通常采用Open Scene Graph三维图形库进行实景仿真,在场景模型方面有很好的仿真,而在植树、种草建模方面,常采用基于图像的十字交叉面或旋转平面构建植被模型,这种植被仿真技术真实感较差,不能满足中草药野外采集仿真实训场景的植被需求。

为了提高植物模型及中草药模型的真实感,保证虚拟植物模型、中草药模型与现实植物、中草药的结构相符合,并且要考虑计算机渲染效率,针对这一高逼真植物模型、中草药模型构建的难点问题,采用专业植物建模软件SpeedTree构建植被场景、树形植物、树形中草药模型、和中草药模型。考虑到3DsMax三维建模软件也拥有大量植物模型库,许多中草药已经由3DsMax构建成模型,因而,也采用3DsMax构建中草药模型,可以减少许多中草药模型的制作量,稍加修改即可导入到采集仿真系统中使用,对于外形比较简单的中草药可以直接采用3DsMax建模。

采集仿真系统的野外交互实训功能及仿真场景构建,采用Unity3D渲染引擎,Unity3D有免费版,硬件设备要求不高,采用C#编程,易于实现植被场景渲染和交互设计功能。

根据中草药野外采集流程,设计了系统总体结构及功能模块,开发了中草药野外采集仿真实训原型系统。

2 系统开发方法与流程

近几年,在虚拟仿真系统设计中,常用的三维图形渲染引擎主要有:OpenSceneGraph、Unreal Engine、Cry Engine、Unity3D。OpenSceneGraph是基于OpenGL和C++编写的,采用C++语言开发,需要软件专业人才开发。Unreal Engine是收费软件,体积庞大,也是采用C++语言开发,需要软件专业人才开发。Cry Engine是采用C#编程,易于开发,但采用服务收费模式,开发时间长。Unity3D有免费版,硬件设备要求不高,采用C#编程,而且具有强大的第三方开发插件,易于实现植被场景渲染和交互设计功能。因此,本文采用Unity3D开发中草药野外采集仿真实训系统。如图1所示。

图1 采用Unity3D开发采集仿真系统

中草药野外采集仿真实训系统需要大规模植被仿真,需要高逼真度的植物模型,包括:树、草、中草药,因而,其开发方法是:采用专业植物建模软件SpeedTree构建植被场景、树形植物、树形中草药模型、和中草药模型,该技术采用多边形及图像绘制的混合技术,极大地还原树形植物和中草药的植物结构。同时,针对复杂植被模型的绘制会降低场景的实时渲染效果的问题,采用细节层次技术优化模型,对植物模型进行简化,在近距离调入具有丰富细节的植物,在远距离时调入植物的简化模型,大量减少了多边形的使用量,使得树形植物和中草药模型即高逼真,又大幅度减少了内存占用,从而提高了整个场景的实时渲染效率,实现了大范围植被场景绘制。另外,SpeedTree已经拥有一些植物模型库,有一些是中草药模型,根据采集仿真系统的需要,只要对现有模型稍加修剪即可用于系统之中。同时,也采用3DsMax构建中草药模型,对于比较简单的中草药采用3DsMax建模比较方便。采集仿真系统的野外交互实训功能及仿真场景构建,采用Unity3D渲染引擎开发。

根据系统的开发方法,提出该方法的总体流程如图2所示。

图2 系统开发流程

开发中草药野外采集仿真实训系统,首先需要设计各种中草药的植被环境,拍照各种植被图像,采集各种树、草、中草药的图片,根据仿真场景设定的三维尺寸,统一处理成一定比例的纹理贴图及相关信息记录,根据各种树、草、中草药的特点,选用SpeedTree建模或3DsMax建模,针对需要仔细观察的树、中草药模型创建LOD模型,将纹理图及模型生成Unity3D资源,在Unity引擎中,导入Unity3D资源及相应的算法包,模型包,特效包等,在Unity3D中编写漫游代码,开发采集中草药事件处理功能模块,生成仿真应用,经过反复体验、测试、改进,最终完善、发布成中草药野外采集仿真实训系统。

3 系统设计

中草药野外采集仿真实训系统的核心功能是模拟实现学生的野外采药的教学过程,因此,需要根据实际的采药流程,设计系统各模块的功能,设计的采集中草药流程为:

1)按WSAD键,进入野外场景采集区,拖动鼠标左键控制行走方向;

2)点击望远镜观察、寻找各种中草药;

3)走近后,找到一种中草药,点击照相机,拍摄中草药植物体、茎、叶、花等照片;

4)点击GPS定位仪,记录地理坐标位置(维度、经度)、海拔高度;

5)点击罗盘仪,记录坡向、坡度、坡位。例如:北偏东45度、38度、上坡位;

6)点击剪刀(或铁铲),采集草药植物标本到地面;

7)点击标签,填写编号、名称等;

8)点击采集袋,装进采集袋中;

9)点击采集袋中的中草药名称,弹出三维中草药植物观察窗口,可以观察、认识、识别中草药三维模型、植物体照片、茎、叶、花、果实照片;

10)点击采集记录报告,填写野外中草药采集记录报告。

其它功能有:快速定位采集地点,实验目的,试验器具,导航窗口,帮助。

中草药野外采集仿真实训系统的采集事件功能设计如图3所示。

图3 系统的采集事件功能设计

根据中草药野外采集仿真实训系统的开发方法、开发流程、以及采集中草药的流程,针对植被仿真的特点和要求,设计了中草药野外采集仿真实训系统,如图4所示。

图4 系统总体设计

各模块功能简介如下:

1)UI界面:呈现三维野外采集仿真实景,可以通过人机交互功能实现野外漫游、点击各功能事件、具有缩放、旋转、移动等浏览功能。

2)模型管理:三维野外采集仿真场景模型、各种树木模型、中草药模型、LOD模型的增、删、改、查。

3)采集事件处理:是根据野外实际采集中草药的作业流程而设计的事件模块,主要有望远镜观察寻找、照相机拍摄照片、GPS定位仪记录、罗盘仪记录、剪刀或铁铲采集、填写标签、采集袋、三维植物观察、识别、填写采集记录报告等模块。

4)渲染算法:是采集仿真系统的核心模块,主要有植被渲染算法、LOD算法、碰撞检测算法、消息机制算法、仿真特效算法、实时仿真显示。

4 创建高逼真植被模型方法

在植被仿真场景中,高逼真植被模型分为:树、草、中草药。对于场景中只是为了构建植被环境而非重点观察的树和草的建模,可以采用基于图像的绘制技术,将树、草模型用其真实图像代替,主要有两种方法:一种方法是矩形面贴图的方法,创建适合树、草尺寸的矩形面片,贴上树、草真实图像,在仿真漫游时,实时面向观察者渲染。另一种方法是十字交叉面法,在两个互相垂直的矩形面上贴上树、草真实图像,在视点较远时效果也可以。

对于场景中需要高逼真展示的树和中草药的建模,需要采用基于分形的绘制技术,该技术依据树的几何形态结构,将树的绘制分为树根、树干、分支、细分支、树叶几个组成部分,并贴上相应的纹理图像,利用多边形图元、及适当的旋转、缩放等变换,模拟符合现实的植物外观模型。对于中草药建模,将中草药的绘制分为根、茎、叶、花、果几个组成部分,并贴上相应的纹理图像,利用多边形图元、及适当的旋转、缩放等变换,模拟符合现实的中草药外观模型。

4.1 用SpeedTree创建高逼真树木

美国IDV公司的三维树木建模软件SpeedTree,采用基于多边形及基于图像的混合绘制模型技术,构建高逼真植被模型,在快速渲染真实植被的同时,极大减少了多边形的使用量,并带有自己的植物模型库,通过修改植物模型库中的植物模型及相关参数,可以用于自己构建的虚拟仿真场景之中。

创建树木的主要流程是:创建树干、编辑树干参数,创建分支、编辑分支参数,创建细分支、编辑细分支参数,创建树叶、编辑树叶参数,选中树干,创建树根、编辑树根参数等。下面以创建一颗菩提树为例,说明用SpeedTree创建高逼真植物树的方法。

1)新建植被场景。启动SpeedTree Cinema v8.1.0,选择blank,新建一个场景,文件,保存为:putishu.spm。

2)添加树干。在空白处右击,选择Add geometry,选择trunk,例如:菩提树自然高度300cm,胸径7cm(半径3.5cm),冠幅120cm(半径6米)。修改树干参数,在generation中,改mode为classic,树干数量frequency为1,在spine中,改变树高度length为30,在skin中,改变树的半径radius为0.35。如图5所示。

图5 创建树干及修改参数

3)添加分枝。右击树干,选择Add geometry,选择bigbranches。修改分支参数,在generation中,mode为Interval,分支数量frequency为5,控制树分支生长的起点,改boundaries下first为0.3,让分枝互相错开,改spread为0.8;在spine中,改变分支长度length为6,改变树枝生长的方向,改start angle为0.3,调整树顶部密集一点,单击右侧曲线图,调整右侧树顶点向下,在曲线的75%处双击增加一个调整点,向上调整,使树冠符合菩提树的树冠。可以修剪单个树枝,选择nodes节点模式,选中太长的树枝,可以选中后,缩短其长度,或按delete键删除。

4)再添加更细的分枝。右击分支,选择Add geometry,选择Little branches;在generation中,mode为Interval,分支数量frequency为2,Count为2,控制细分支生长的起点,改boundaries下First为0.1,Last为0.7,让分枝互相错开,改spread为0.5;在spine中,改变分支长度length中的% of parent为0.2,改变树枝生长的方向,改start angle为0.4;可以修剪单个树枝,选择nodes节点模式,选中太长的树枝,可以选中后,缩短其长度,或按delete键删除。如图6所示。

图6 创建细分支及修改参数

5)添加树叶。选中细分支,右击,选择Add geometry,选择batched leaves,单击选择右侧下面的Materials,单击+,选择树叶材质D:putishusucaiputiye.tga,open,单击选择Meshes,单击+,选择叶子的模型D:putishusucaiputiye.FBX,选择附加到材质(putiye)上,ok;选中叶子结点batched leaves,单击选择Material,在Material中选择树叶材质putiye。在generation中,调节树叶大一点,改Size scalar为2;同理,选中粗分支,右击,选择Add geometry,选择batched leaves,选中叶子结点batched leaves,单击选择Material,在Material中选择树叶材质putiye,在generation中,调节树叶大一点,改Size scalar为2。如图7所示。

图7 创建树叶及修改参数

6)添加树干及分支纹理贴图。

单击选择右侧下面的Materials,单击+,分别添加树干、分支、细分支的材质D:putishusucaiputishugan.tga(putifenzhi.tga、putixifenzhi.tga),open;选中树干结点trunk,在Material中选择树干putishugan的材质图;选中分枝结点big branches,在Material中选择树分枝putifenzhi的材质图;选中细分枝结点Little branches,在Material中选择细分枝putixifenzhi.tga的材质图。如图8所示。

图8 创建高逼真菩提树

7)为Unity保存模型文件。为了不丢失树叶,需要保存到Unity3D工程的Assets文件夹下。具体方法如下:

创建文件夹D:unityspeed,启动Unity3D,新建,选择此文件夹,工程名:putishu1,创建工程;选中Assets,创建文件夹tree。

在SpeedTree中,文件,导出模型(Export Mess),选择Unity中的文件夹D:unityspeedputishu1Assets ree保存为putishu.fbx。

在Unity中,拖动Treeputishu到层次面板中,在场景视图中,聚焦,即看到SpeedTree导入进来的菩提树了。如图9所示。

图9 将高逼真菩提树导入到Unity中

在SpeedTree的结点视图区可以看到创建树的数据结构,菩提树分为树干、分支、细分支、树叶四个组成部分,并分别调整了相应的参数、贴上了相应的纹理图像,非常便于精细修改树的模型。如图10所示。

图10 菩提树的数据结构

4.2 用SpeedTree创建高逼真中草药

创建中草药模型类似创建树木的流程,主要分为根、秆、茎、叶、花、果几个部分,在建模时,由主根结点出发,分出秆或若干个茎结点,再由茎结点分出叶结点,再根据中草药的实际结构分出花结点、果实结点,该方法能够生成与现实中草药结构一致的逼真模型,同时满足计算机渲染效率要求。由于SpeedTree已经拥有一些植物模型库,有一些是中草药模型,根据采集仿真系统的需要,只要对现有模型稍加修剪即可用于系统之中。借助SpeedTree创建仙人球模型如图11所示。

图11 仙人球模型

4.3 用3DsMax创建高逼真中草药

3DsMax是Autodesk公司的三维建模软件,是一种多边形建模方式,也可以开发精细的植物模型,植物材质通过纹理贴图、参数修改可以达到真实植物一致的效果,对于相对简单的中草药采用3DsMax建模比较方便。另外,3DsMax也拥有大量植物模型库,许多中草药已经由3DsMax构建成模型,稍加修改即可导入到Unity3D采集仿真系统中使用,可以减少许多中草药模型的制作量。

创建中草药的主要流程是:制作根、根须、贴图,制作茎、贴图,制作叶子、贴图,制作花蕊、花蕾、贴图等。下面以创建一个人参为例,说明用3DsMax创建高逼真中草药的方法。

1)制作根、根须。创建文件夹D: enshen,启动3DsMax,保存为renshen.max,制作根:用一张人参根部图片作为参考图,在顶视图创建一个小圆柱体,分段都为1,转换为可编辑多边形,在前视图选择底部的面删除,在边界模式选择底部边界,用拉面法根据参考图片,移动、缩放,绘制出根部形状,最后,焊接点。制作根须:根据根须参考图,在制作的根部上选择一个面,挤出一个小长方体,再删除小长方体底部的面,用拉面法移动、缩放绘制出根须的形状,最后焊接点。根部的多个根须都按此方法制作,完成后,给根部整体添加一个FFD修改器,选择控制点,移动,调整根部整体形态,再加一个涡轮平滑,最后,打开材质球赋予人参根贴图,根据人参比例缩放调整到根部适当的大小。用3DsMax创建人参根、根须模型如图12所示。

图12 人参根、根须模型

2)制作茎。参考人参茎图片,选择图形,线,在前视图创建一条线,转为可编辑样条线,选择点模式,转换为Bezier角点,调整Bezier角点使线变得随意弯曲;点开渲染,勾选在渲染中启用和在视口中启用,修改径向厚度;沿x轴缩放,让线变得扁一点;按M打开材质球赋予人参茎贴图,根据根的位置,移动旋转对应好到适当位置。

3)制作叶子。参考人参叶子图片,在顶视图根据叶子图片大小创建一个平面,修改长度分段和宽度分段为1,打开材质球,把准备的人参叶子图片赋在平面上,选择平面,把xyz坐标归零,冻结选定对象;再创建一个小的平面,修改长宽分段为1,转为可编辑多边形,用拉面法移动调整点的位置制作出叶子的形态;右键全部解冻,删除一开始作为参考的叶子图片;选择绘制出的叶子调整中间的点让它凹下去;在左视图移动点调整叶子的弯曲形态;给叶子添加一个网格平滑,平滑度为0.5;按M打开材质球赋予人参叶子贴图;点击层次,仅影响轴,移动轴心点至茎部适当位置,根据需要可以复制多个叶子,调整好各自的位置。

4)制作花。制作花蕊:点击图形,线,在前视图创建一条线,转换为可编辑样条线,选择点转为Bezier角点,调整2个点使其弯曲;点开渲染,勾选在渲染中启用和在视口中启用,修改径向厚度,点击层次,仅影响轴,移动轴心点至线尾部;按M打开材质球赋予花蕊贴图;选择这个图形旋转复制15个,再任意选择几个图形,移动、调整大小,再次修改弯曲程度,让花蕊变得自然;转换为可编辑网格,把它们附加到一起。制作花蕾:在前视图创建一个球体,给球体添加一个FFD修改器,选择控制点,移动点,调整为花蕾的形态;按M打开材质球赋予花蕾贴图;旋转复制15个,移动花蕾到花蕊上面,一一对应,转换为可编辑网格,把它们附加到人参整体模型上。用3DsMax创建的人参模型如图13所示。

图13 人参模型

5)为Unity保存模型文件。为防止人参纹理贴图的丢失,需要将renshen.fbx及其纹理贴图都保存到Unity资源文件夹中,具体操作如下:

创建文件夹D: enshenfbx,导出到该文件夹下,保存为renshen.fbx。

重置3DsMax,打开renshen.fbx,可以看到多出一个文件夹renshen.fbm,把纹理贴图带进该文件夹里了。

启动Unity,新建,选择D: enshen文件夹,工程名:renshenunity,创建工程。选中Assets,创建文件夹model。

在资源管理器中,拷贝renshen.fbx及其纹理贴图文件夹renshen.fbm到model文件夹中。

在Unity中,将renshen预制物拖动到场景(层次面板)。在场景视图中,聚焦,即看到3DsMax制作的人参导入进来了。如图14所示。

图14 将高逼真人参模型导入到Unity中

5 创建LOD植物模型方法

在植物仿真中,需要对植被树、中草药进行大面积渲染,但大量高逼真树木及中草药模型会产生巨量面片数,影响渲染速度及仿真效果,为了提高整个仿真场景的实时性,需要采用LOD(Level of Detail,细节层次)技术,创建LOD植物模型的方法,根据仿真采集中草药的学生视点位置距离植被模型的距离而加载不同的LOD模型,在近距离时加载高逼真精细的植物模型,在中等距离时加载适量简化的植物模型,在远距离时加载最简化植物模型,这样,可以大量减少高逼真树木及中草药模型的加载量,不仅实现了高逼真植被模型仔细观察效果,而且提高了整个植被场景的实时渲染效率。

SpeedTree在构建植物模型时,可以分别对主干、细枝采用LOD技术,从而大量减少了植物的主干、细枝及树叶的多边形面,提高了渲染速度。一般采用精细、中等、简化模型三个层次,如果精细植物树模型的面片数是4000片,中等植物树模型的面片大约是3000片,简化植物树模型的面片大约是2000片。另外,SpeedTree为LOD模型提供了三套纹理来适应不同层次的模型贴图的需求。同样,使用3DSMAX也可以创建高、中、低三种LOD模型。

在Unity中,具有专门实现LOD技术的LODGroup组件,以便实时渲染导入的LOD植被模型,自动显示不同层次的模型,达到实时简化模型,而又不影响视觉效果的目的。在Unity中,添加LODGroup组件,并为该组件中的LOD添加不同面数的高、中、低模型,再调整相应LOD的视点范围,将视点与模型的距离设定为2%,表示视点离模型很远,不显示模型;当设定为10%,显示低分辨率模型;当设定为50%,显示中分辨率模型;当设定为100%,显示高分辨率模型。

6 实例研究

开发中草药野外采集仿真实训系统的核心是生成高逼真度的中草药模型,包括:树形模型和草形模型,并能满足大规模植被渲染的速度需求,采用专业植物建模软件构建植被场景、树形植物、草形模型,可以简化模型,并可以构建LOD植物模型,在近距离时观察精细的植物模型,在远距离时观察简化植物模型,提高了整个植被场景的实时渲染效率。

图15所示是采用SpeedTree构建的高逼真中草药万寿菊、牛肝菌、蕨菜和麦子的精细模型。

图15 SpeedTree构建的高逼真中草药模型实例

图16所示是采用3DsMax构建的高逼真中草药白芨、毛地黄、银莲花和灵芝的精细模型。

图16 3DsMax构建的高逼真中草药模型实例

7 结语

针对中草药野外采集实训教学,存在生长季节、生长环境限制等问题,研究了一种中草药野外采集仿真实训的教学方法,可以把不同地域、一年四季生长的中草药都虚拟“种植”在相应的模拟生长环境中,让学生在“野外虚拟仿真环境”中采集各种中草药,学会野外中草药的采集过程,完成模拟野外采集中草药实训课程。

为了创建高逼真树和中草药模型,采用基于分形的绘制技术,将树的绘制分为树根、树干、分支、细分支、树叶几个组成部分,并贴上相应的纹理图像,将中草药的绘制分为根、茎、叶、花、果几个组成部分,并贴上相应的纹理图像,采用专业植物建模软件SpeedTree构建植被场景、树形植物、树形中草药模型、和中草药模型。为了提高植被仿真的渲染效率,采用了LOD技术,创建了LOD植物模型,在视点较近时加载高逼真精细的植物模型,在视点较远时加载简化植物模型,大量减少了高逼真植被模型的加载量,即不影响仿真观察效果,又提高了实时渲染效率。

为了实现植被场景渲染和交互设计功能,采用了Unity3D开发整个系统,在研究中草药野外采集实际流程的基础上,设计了系统功能模块,提出了系统开发方法、开发流程,设计了系统总体结构,开发了中草药野外采集仿真实训原型系统。解决了中草药野外采集实训教学难的一些实际问题,使学生“身临其境”采集中草药,调动了学生实训教学的积极性,有助于掌握中草药知识。

猜你喜欢

分支中草药植被
益林中草药 初现规模化
追踪盗猎者
第一节 主要植被与自然环境 教学设计
杭锦旗植被遥感分析
基于git工具的多分支并行开发上线流程
用“分散数论”对“哥德巴赫猜想”的初等证明
含有二阶幂零鞍点的双同宿环附近的极限环分支
脑筋急转弯
脑筋急转弯
硕果累累