MaxScript在三维数字城市模型批量化处理中的应用

2019-08-23 02:44王卫玲刘瑜初建崇刘洪春
电子技术与软件工程 2019年14期
关键词:脚本语言批量高程

文/王卫玲 刘瑜 初建崇 刘洪春

1 引言

数字城市的渊源来自于美国副总统戈尔于1998年1月21日提出的数字地球的概念,自此之后,中国学者特别是地学界的专家认识到“数字地球”战略将是推动我国信息化建设和社会经济、资源环境可持续发展的重要武器,并于1999年11月29日至12月2日在北京召开了首届“数字地球”大会。至此,三维城市的发展也紧随其后,成为近20年来的热点之一。三维数字城市是城市资源可视化的最佳方式,是适应社会飞速发展的技术手段,有助于城市的招商、引资,在城市建设、公安交通、城市管线、房地产发布等方面发挥着积极的作用。三维城市的发展与三维制作软件和三维展示平台是分不开的。目前,三维制作软件已经能够满足三维城市模型制作的要求,客观、真实地反映出城市面貌,三维展示平台也已经有了诸如泰瑞公司的Skyline、伟景航的CityMaker等能够承载海量场景、进行空间数据分析的优秀软件。对于一个城市而言,建筑数量往往多达几十万栋,工作量十分巨大。因此,寻求一种快速、高效的建模方法是构建三维虚拟城市的关键,而MaxScript在其中的贡献不容小觑。

本文以山东省某市三维数字城市建设过程中遇到的实际问题为例,以3d Max为数据建设平台,以Skyline为海量数据的承载、展示和分析平台,从三维历史数据的整理过程,介绍了3d Max的脚本语言MaxScript在整个工作流程中的完成的功能及部分代码实现。由此可以看到,MaxScript在三维数据的批量化处理过程中能够做到准确、快速、有效,使得数据处理过程中大量繁杂、重复性的工作得以自动化处理,大幅提高了工作效率。

图1:批量修改max文件名称界面

2 MaxScript脚本语言

MAXscript是3ds Max内置脚本语言,Max2.0及以后加入的功能。它不但拥有一般程序语言的所有特点,而且可以在程序内实现几乎所有在3ds max界面下的交互操作,功能非常强大,而且语法比较简单,容易上手。MAXscript也能使用在与3ds Max相关的产品中如Autodesk VIZ,character studio,Plasma和GMax;脚本可使用于建模,动画,材质,渲染等等。它是专门为3D Studio Max设计的。

图2:批量修改名称结果

MAXscrip使用一个开放式界面来自定义和编写 3ds Max 脚本,3ds Max的大多数功能都可以通过脚本调用,开发人员可以轻松扩展用户界面和自动化操作以执行批处理。用户可以通过 OLE Automation 建立外部系统的实时接口。可以这样说,用脚本可以把Max几乎所有的功能重写一遍(少数功能除外),而且能实现无法用鼠标键盘实现的操作。

MaxScript可以运用3D矢量、矩阵、四维数等代数工具来完成高级复杂的程序设计任务,适用于对含有大量对象的集合进行操作。比如在大场景中进行十分复杂的选择,构造星空等复杂场景,或者把集中的大量物体分别放在精确的位置等,如果用手工来完成将会极其繁琐和复杂,而且不能保证效果,而MaxScript却可以通过几行代码瞬间完成。可以建立批处理工具,这样可以把3d Max从业人员从一些简单重复的工作中解脱出来。

3 MaxScript在三维模型数据批处理中的应用

我中心的三维数字城市建设起步于2004年,属于skyline系统平台的首批用户。模型建设从零起步,没有成型的经验可供借鉴。因此,最早建设的三维模型数据跟现在成熟的建模流程相比,存在着很多不足:

(1)模型命名采用中文。目前很多GIS软件平台对中文命名的模型支持度都不是很好,在模型的导入导出以及查询分析的过程中会有兼容性不佳情况出现。

(2)模型未与坐标结合。建筑模型都是单个建设,位于坐标原点归底归中。模型无法批量化进入平台,只能手工单个按照影像摆放,大大降低了工作效率。但是这批模型却是极其具有历史价值的,它是10多年前城市面貌的三维立体化展现,是现有的三维城市模型所无法代替的。在历史数据的整理过程中,需要MaxScript脚本语言辅助3d Max结合生成虚拟三维城市,其中涉及到中文名称修改为英文、按坐标摆放建筑模型、按dem将建筑模型坠地等工作,要实现这些过程的批量自动化检验和修正,MaxScript就成为了不可或缺的重要工具。MaxScript强大的批量操作功能,使重复性工作能够准确、快速完成,发挥出不可替代的作用。

3.1 批量修改MAX模型名称为英文名

本文采用3d max建模,导出为.x或者为xpl2格式,进入SkyLine平台进行大场景展示。导入导出的相关属性信息均保存于shp表格中。在批量修改3dmax模型的名称之前,首先要借助之前从平台导出的shp文件,文件中包含有模型的中文名称、坐标信息、旋转角度raw等内容,如图1所示。借助shp中的中文名称这一属性栏,利用excel表格的自动填充功能,制作出两个csv文件,一个为原名.txt,另一个为要修改成的新名.txt。然后就可以启动MaxScript编写好的插件,批量进行模型名称的修改。结果如图2所示。

部分简要代码如下:

用MaxScript批量修改模型名称,高效而准确,节省了大量的人力物力,成倍提高了工作效率。

3.2 批量移动模型到指定位置

模型建设初期,由于没有摸索出成型的建模经验,也没有其他的经验可供借鉴,因此,模型采用了单体化建模,并且没有跟gis坐标相结合,每个3d Max模型都是在坐标原点建模,

这种建模方式存在着很大的制约性,将来不管是转换坐标系统还是要更换展示平台,都会成为工作无法高效开展的瓶颈。因此,将单个模型按3d Max的数据承载度以区块方式加坐标存放模型势在必行。

首先,要按照事先导出的shp表格,做出一张模型名称与坐标及旋转角度raw的对应关系,然后利用maxscript编写的插件,批量实现按区块、按坐标存放的模型。如图3所示。

简要代码如下:

3.3 按照dem修改模型高程

在三维平台中准备完毕的遥感影像已和高程属性合一,所有楼房模型只需按照导入3d max的dem,统一在一个水平面上而浮动在遥感影像上即可,这样的方法免去三维模型建造中的高程手工赋值工作。利用MaxScript操作所有模型数据统一高程,不但弥补了建模过程中可能出现的错输现象,对于已经附带高程属性的模型也可按照这一标准执行。据此,可利用MaxScript来进行批量修改这些模型的高程。如图4所示。

简要代码:

4 结束语

三维数字城市建设模型数据量庞大,准确快速地构建三维模型是进入场景进行三维分析应用的首要前提。本文针对在工作中遇到的实际问题,在历史模型整理的过程中,引入MaxScript脚本来解决批量修改成英文名称、批量按坐标导入3d max平台、批量按dem修改模型高程的问题,为三维数据的应用提供了极大的便利性。项目最终证明,采用MaxScript脚本语言进行数据处理是比较简单易行的,大大提高了工作效率,在三维城市构建中发挥了不可替代的重要作用。

图3:批量按坐标摆放的界面及结果

图4:按dem修改模型高程界面及结果

猜你喜欢
脚本语言批量高程
8848.86m珠峰新高程
一种面向SSC的电信增值业务的生成方法及实现
GPS控制网的高程异常拟合与应用
浅析计算机技术在flash动画中的应用
浅议高校网银批量代发
SDCORS高程代替等级水准测量的研究
基于SiPESC平台的Python扩展模块开发
回归支持向量机在区域高程异常拟合中的应用
基于AUTOIT3和VBA的POWERPOINT操作题自动批量批改
考虑价差和再制造率的制造/再制造混合系统生产批量研究