企鹅百科网,

手机版

当前位置:首页 > 办公百科

用脚本语言开发动画插件的方法分析

时间:2022-04-03人气:作者: 未知

用脚本语言开发动画插件的方法分析

  3dsmax提供了层次的开发工具:MAXScript。MAXScript脚本语言具有非常强的适用性,因为利用此语言进行插件设计时并不需要设计者具有非常专业的程序设计知识。利用MAXScript的这一特点,通过一个插件的开发实例阐明了插件的开发方法,并通过该插件的实际应用说明和验证了MAXScript脚本语言具有的更强的适用性。
  
  三维插件的开发本身是一个系统的过程,它涉及到开发过程的目标分析、插件类型、插件的功能、插件的关键技术以及插件卷展栏设计。利用脚本语言开发插件,尽管不需要很强的程序设计的专业知识,但是,在开发时仍需要了解和掌握脚本语言的功能和特点,尤其是脚本语言中特有的构件,熟练应用脚本语言进行各种构建的连接。本文正是想通过对一个插件的开发和设计来说明这一问题。

  一、脚本插件的设计
  

  任何一个插件都是在一定目标的设定下进行的,为此,若要利用脚本语言制作插件首先就需要分析目标的特点、完成目标的方法,也就是对要实现的目标进行可行性分析。
  
  利用脚本语言开发插件与利用3ds max形成具体图形有很大的不同,这种不同点也就是利用脚本语言开发插件的独特的优势之处。虽然利用3ds max可以地制作出各种不同形状的几何体,但是我们在设计中发现根据不同的需要却仅仅只靠3ds max系统自身所拥有的工具,常常要经过很多次反复修改、变形等操作才能达到我们设计的要求,而且最终结果也有一定限度,这与实际设计中所需要体现出的灵活性不想符合。但是利用脚本语言却可以设计出灵活性非常强大的插件,这种插件足以满足当代的设计需求。
  
  因此,从两者的不同中我们可以看出,利用脚本语言设计可以满足现代设计中目标复杂性的需求,为此,利用脚本语言强大的功能和其简捷直观的特点开发插件具有非常独特优势,也是其可行性。例如,在3ds max中基本几何体中有“cylinder”圆柱体,但是其形状过于简单,如要满足现实中对在制作各种建筑物圆柱时的需求就要经过多次修改。在机械制造中,我们也常常遇见有关各种齿轮的建模,如果利用3ds max传统的方法创建齿轮的模型,要经过非常繁琐的工续,大量的修改,还未必如意。如果能够通过简单的编程实现某一功能插件,这不仅提高了制作效率,而且扩展了系统的功能和实用性。
  
  二、系统的接口和插件的类型
  
  利用3ds maxscript二次开发的的插件有很多类型:扩展类型插件、帮助类型插件、几何体插件等,可以根据需要开发出不同类型的插件。但无论是什么类型的插件,其接口都是通用或专用程序提供给应用层用户进行二次开发的一种程序接口方式,其主要目的就是为了提高软件的重用性和可扩展性,以延长软件的生命周期。由于MAXScirpt集成在3ds max系统下,开发的插件通过其接口都可以和3ds max进行无缝连接。
  
  在进行插件的编写时,首先必须定义插件及类型。在maxscript脚本语言中用plugin命令定义插件,也既是生成插件的关键字,并且必须告诉插件类型和一个插件的新的类名,其形式如下:
  
  Plugin superClass ClassName
  
  Name:”PlugingName”
  
  Category:“…”
  
  ClassID:#()
  
  …
  
  superClass是脚本插件的超类名称,ClassName是插件的新的类名,PlugingNanme是用户界面UI上显示的插件名称。ClassID是系统加载时用来识别插件类的,它是一个十六进制数,通过MAXScript Listener脚本监听器中利用GenClassID()方法来获取,每个插件都只有一个唯一的ID号。脚本插件在编写完成后经过测试后可以直接复制到3ds max的plugins目录下,启动3ds max,脚本自动运行,新的插件直接出现在对应的UI界面中。
  
  三、脚本插件的关键技术
  
  在3ds max无论是系统插件还是脚本插件,插件的功能实现都是通过鼠标实现。因此,在开发脚本插件时,首先就要实现鼠标的创建工具,即鼠标输入(点击和拖动)驱动脚本,它不仅是脚本插件的基础,而且还可以应用到其他脚本中。在maxscipt中,利用tool create创建对象时“tool create”用来处理鼠标控制。它包括两种主要的鼠标事件:鼠标点击事件onmousepoint和鼠标拖动事件on mousemove:
  
  在on mousepoint事件中如果要利用该鼠标事件,其语法为
  
  On mousePoint click do
  
  (
  
  Case click of
  
  (if clickNo==1 do
  
  …
  
  )
  
  )
  
  通过该事件可以定义鼠标多次点击时的动作,并允许通过使用coordsygrid和gridPoint命令来获取鼠标点击时的位置参数,并将参数传递给相应函数调用。
  
  在on mousemove事件中利用该鼠标事件语法为
  
  On mousemove clickNo do
  
  (
  
  Case click of
  
  (if clickNo==2 do
  
  …
  
  通过该事件定义了鼠标在拖动时所产生的动作,并同样可以获得其位置参数。
  
  对于创建几何体插件,还需要buildMesh来产生插件手柄。buildMesh是脚本简单对象插件的主要手柄,每次需要更新几何体时都需要调用这个手柄,在这个手柄中,可以利用mesh生成代码创建mesh的节点和面,其应用格式:
  
  在括弧中主要是利用相应的函数及表达式生成创建几何体时需要的节点和面。而buildMesh手柄接受setMesh方法,这个方法提供mesh生成的数据,该数据正是快速创建几何体所需要的节点和由节点数组产生的面数组。大多数3D对象的表面都是由三角形网格组成的,其图形的绘制速度很快。因此,这里所创建对象的每一个面都是由三个节点所构成。

标签: 插件  脚本语言  标签  简介