APP下载

VT+MAX开发中的解决方案

2015-01-18徐承志

湖北工业大学学报 2015年5期
关键词:立方体插件灯光

张 鹤,徐承志

(湖北工业大学计算机学院,湖北 武汉430068)

由于Virtools不是三维模型制作软件,模型从3ds Max导入到Virtools时可能会出现不被识别的特征属性等问题[1]。当模型中部分信息不被Virtools支持,那么在输出时,编译器将根据自己的编译办法,对相应的信息进行转化,其中格式和特征的本质发生了变化,但是保留了模型在视觉等方面的感觉特征。

本文作者参与国家级大学生创新创业项目——“基于虚拟校园的软件生态系统研究”。由于项目需要,作者根据所在学校实际校园环境,在3ds Max中创建虚拟校园模型作为Virtools场景模型。在建模和使用Virtools软件过程中,通过不断地学习与实践,总结出一些3ds Max静态模型导入Virtools后出现的常见问题及解决办法。

1 插件使用问题

插件是一种十分常见的技术,插件结构有利于编写有良好的扩充和定制功能的应用程序[2]。3ds Max默认的安装程序没有导出Virtools支持格式文件的插件,因此需安装第三方导出插件。

1.1 导出插件版本

3ds Max中的场景模型导出成Virtools支持的格式即.nmo文件,需要下载 Max To Virtools插件。其中.nmo文件是Virtools默认的用于存储角色和场景以及物体等信息的文件格式,其中包含了一个或者多个单元信息[3]。自2012版本后,达索公司不再发布导出插件,目前网上下载到的最新版本是 Max To Virtools 5.0.0.134,最高版本只支持2012的Max版本。

由于2013或2014版本Max制作的静态模型可以在低版本Max中打开,制作的动画则不能在低版本中打开。因此,高版本制作的静态模型可以通过2012及以下版本导出成nmo格式。

1.2 插件参数设置

3ds Max模型在导出成nmo格式时,会显示一个输出参数表,在此主要介绍导出静态模型的参数设置(表1)。

表1 导出插件参数

2 模型问题

根据产品对模型的要求,在建模时要采用相应的建模标准,这样不仅能减少模型导出时出现的错误,模型的质量也能得到很好的控制。

2.1 模型比例尺寸变化

3ds Max模型在导入Virtools后,通常比例与要求不符,会在Virtools中自动进行缩放操作,运行时经常遇到异常现象,即场景中模型的各个部分有时并不按照规定的尺寸进行缩放。

在三维软件中制作一个较大或较为复杂的场景时,如果在一个3ds Max文件中直接导出,会出现“应用程序错误”。更为复杂的大场面则需要多人协同完成。然而一些人建模时没有在意模型的尺寸,因此在整合场景的时候,还需要调整每个物体的尺寸比例。

建议建模前先测量好物体的尺寸,由于Virtools中模型单位为m,将3ds Max的系统单位统一设置为m,场景合并时就不需要进行放缩操作了,自然不会出现相关的问题。

2.2 模型顶点数及大小

一般模型的顶点数太多,常常出现的问题一个是在导出时出现“应用程序错误”,另一个是导入到Virtools后造成程序运行慢,下面用一个实例来说明:

新建一个由多个立方体组成的模型,改变立方体的数量和分段数,观察导出效果(表2)。实验电脑配置:操作系统,Windows7;CPU,AMD A4-3300MAPU with Radeon (tm)HD Graphics;内存,4GB。表2中的数据是模型文件大小,单位是MB。其中,带括号的数据表示模型导出报错,“-”表示模型保存报错。当模型中立方体分段数不变,立方体数量增加时,文件大小增加,当达到一定大小时,出现保存出错情况;当立方体的数量不变,立方体的分段数增加时,文件大小增加,当达到一定大小时,导出报错。通过综合比较得出:3ds Max模型在导出时出现"应用程序错误"与模型的大小及顶点数有关。

表2 应用程序错误实例数据

制作3ds Max模型时,在确保形体准确且达到要求的前提下,顶点数越少越好。尽量用最少的线来确保模型的基本形态和特征[4]。在建模时需要养成一个好的习惯,同时参考一些优秀的模型。具体模型优化,可以从简化模型和提高渲染速度[5]进行优化。利用3ds Max新功能建模,用算法简化模型,简化纹理处理。3ds Max场景模型太大,导出时会出现错误,可以采用场景分块技术,把一个复杂的场景划分成多个子场景分别导出,最后在Virtools中加载。

3 灯光问题

灯光是舞台的生命[6],同样每一个3D场景都少不了灯光,灯光在场景中不仅起到了照明的作用,而且决定了场景的基调和气氛。相比于Virtools中只有三种灯光类型,3ds Max中灯光种类和参数更多,灯光搭配也更复杂。

3.1 灯光种类导出变化

Virtools中有三种光源:点光源是理想化为质点的向四面八方发出光线的光源,为最常使用的光源种类;聚光灯有注视的放射光,适合突出局部部位的照明;平行光为全场景照明的方向性光源,无法设置衰减效果。

3ds Max中创建的灯光在导入Virtools后灯光类型会发生相应的转变(表3)。

表3 灯光类型变化表

3.2 灯光照射范围变化

3ds Max中模型受光与灯光照射方向有关,在Virtools中除了平行光(Directional)与方向有关,点光源(Point)和聚光灯(Spot)都有照射距离限制,最大照射距离为200m。

如图1,在3ds Max中,沿着建筑物四周打上12盏聚光灯,调整灯光到物体的距离以及角度,距离主要取值150m,198m,200m,202m,250m,角度取值-45°,0°,45°,90°,以.nmo文件的形式输出,导入Virtools,观察单个灯光照射时模型效果。根据效果最后得出:当距离超过200m时,物体变黑,模型没有受光。通过同样的方式,得出点光源(Point)效果也是如此,而平行光(Directional)在方向确定后,模型在灯光方向上的受光面都能被照亮。

因此,在3ds Max中非平行光源到模型之间距离超过200m,导入到Virtools后,会出现物体变黑,不受光现象。此时灯光参数调节失去作用。建议遇到这种情况,一种方法是把灯光类型改成平行光(Directional),第二种方法是调整模型或灯光的实际坐标,使灯光与模型之间的距离控制在200m以内。

图1 灯光照射范围实验

4 材质贴图问题

3ds Max中已经赋好材质的模型在导入Virtools后常常出现变黑、材质显示不完全等现象。由于两个软件系统之间的差异性,造成一些模型效果不一样。那么在制作模型之前,则需要了解产生的原因。

4.1 模型导入Virtools后材质呈黑色

模型在3ds Max中,材质显示正常,在导入到Virtools后,材质呈黑色。

解决办法:在virtools中首先检查灯光,灯光与模型的距离不能超过200m,点击show light,灯光便会显示,黑色的圈表示灯光的范围(图2),要保证模型在灯光的照明范围内。第二检查模型材质(图3),漫反射(Diffuse)颜色以及所使用贴图为黑色,模型也会呈黑色。第三检查插件参数设置,详述在1.2节。最后检查模型,详述在本文4.2节。

图2 Virtools灯光显示设置

图3 Virtools材质属性面板

4.2 模型材质丢失

对于材质和纹理,输出后,Virtools并不支持双重材质的导入。并且,Virtools只支持3ds Max中的标准材质,在导入Virtools后就会出现材质只显示部分或完全呈黑色。

3ds Max模型材质赋贴图需要模型具有贴图坐标,一般模型贴图有自己的贴图坐标。贴图坐标也可以使用UVW展开编辑,同时利用展开的UV贴图,能绘制和制作更多需要的贴图。有时根据项目需要,不能利用UV制作贴图,而模型又需要赋多种材质,此时在模型输出之前需要对材质进行烘焙。所谓烘焙,就是一种把Max光照信息渲染成贴图的方式,而后把这个烘焙后的贴图再贴回到场景中去的技术。

如图4所示,在3ds Max创建一个简易飞机模型。烘焙之前,先展开模型UV贴图(图5),把飞机机身,机翼等不同部位展开,再绘制贴图,绘制好后赋给飞机,调整材质参数,在场景中打上灯光,进行烘焙,这样就得到了模型的最终贴图。

图4 飞机模型俯视图

图5 飞机UV展开图

4.3 在Virtools中加载贴图

Max模型导入到Virtools后,材质纹理丢失,可以在Virtools中把贴图加载进来。图6中,模型wuding的贴图“瓦”如果没有导入进来,则需在Textures把贴图“瓦”直接拖进来。之后右键材质wuding,即图7,在下拉列表中选中贴图“瓦”,则材质上赋好贴图了。最后右键网格wuding_Mesh中“Setup”,即图8,在 Channels中右键“Add Channel”,下拉列表选择材质wuding。模型wuding纹理便加载完成了。

图6 纹理组件面板

图7 材质设置面板

图8 材质通道添加面板

5 结论

综上,在制作Virtools场景模型时,3ds Max版本尽量选择2012版本。模型尽量优化。由于Virtools中灯光距离限制,在3ds Max布局灯光时可以根据场景大小来选择灯光类型,一般的灯光打法可以使用常见的三点光源法[7]。材质使用标准材质,贴图尽量烘焙。

通过在3ds Max中制作模型过程中遇到的问题得出的经验,用具体的数据分析了模型导入到Virtools中出现的问题及解决办法。有些方法还需要改进,一些具体的细节可以查阅相关资料。总之,在制作Virtools场景模型过程中,要不断地学习和实践来总结经验。在模型的优化上还需要进一步探究,建出更加符合要求的模型。

[1] 孙 倩.基于3DS MAX的三维建模及其在Virtools环境中的应用[J].中国科技信息,2008(06):241-243.

[2] 李延春.软件插件技术的原理与实现[J].计算机系统应用,2003(07):41-44.

[3] 王 方,王 峥.3ds Max模型及动画输出为 Virtools格式的方法[J].现代电影技术,2007(10):94-95.

[4] 刘婧婧.3ds Max模型与动画导入Virtools时遇到的问题以及解决方法[J].现代电影技术,2010(07):49-54.

[5] 赵 玲.基于3DMAX的模型优化的研究[J].科学技术与工程,2010(09):6 565-6 568.

[6] 王士军.浅谈灯光艺术的作用[J].文化时空,2002(08):90.

[7] 雷兆云.照明语言与技法[M].北京:中国传媒大学出版社,2009.

猜你喜欢

立方体插件灯光
水中灯光秀
今晚的灯光亮了天
来一场灯光派对
自编插件完善App Inventor与乐高机器人通信
内克尔立方体里的瓢虫
图形前线
基于jQUerY的自定义插件开发
立方体星交会对接和空间飞行演示
折纸
基于Revit MEP的插件制作探讨