Sandy引擎学习笔记:导入MD2模型

 在sandy升级到3.1的版本后,加入了支持导入md2的模型,总算进步一些。关于md2模型,按我猜测是一种动画的模型格式,sandy升级3.1版本后,才支持导入这种格式,之前可以导入3ds模型,但是效率比较差,运算大一点都难以渲染出来。关于导入的方面,其实sandy里面有专门负责外部的导入的文件类,那就是LoaderQueue类。

 

 在3.0的时候,LoaderQueue可以支持IMG BIN 的编码导入,现在我们用它来导入我们的MD2文件,使用     LoaderQueue类的时候,只要创建实例化对象就可以,如下

 

   queue = new LoaderQueue();
   queue.add( "man", new URLRequest("bauul.md2"), "BIN" );
   queue.add( "manSkin", new URLRequest("bauul.jpg"), "IMG" ); 

 

   ...............

   queue.start();//启动加载

  加载是一个队列的形式,它可以添加更多的文件。

 

  第二步:进行监听完成,监听的过程,其实是监听Event的COMPLETE事件,当加载完成后,就产生了一个事件分派。

  queue.addEventListener(SandyEvent.QUEUE_COMPLETE, loadMD2Complete );

 

  SandyEvent.QUEUE_COMPLETE 就是针对监听加载完的事情了。

 

 

 为了完成这件事情,我们要准备一下MD2的模型。通过上面的进行导入进去了。

 

md2

 

 

 

  还记得sandy第一个程序当中,我们创建模型的时候,要进行渲染实例化的时候,其实关键是将sandy的对象转换为flash DIsplayObject类对象,这样我们就可以渲染对象到flash player里面去。

 

 

总的来说,在创建一个sandy的程序,我们要创建一个Scene3D 对象,创建摄影机Camera3D(或者其他摄影机),

把对象添加到容器里面去,可以认为是Sprite类型的对象。

像scene=new Scene3D("scene",cotain,camera,g); 其中cotain是我们所创建的容器,同样如果你创建一个类继承了Sprite对象,cotain可以改成了this。

scene=new Scene3D("scene",this,camera,g);

 

我们要它的模型,添加到容器里面其实有好处,关键是我们在背景进行贴图,如果使用this指向的话,在交换深度的时候就很容易出错。

在程序当中,添加一个语句,交互深度的显示位置。就可以进行一个背景贴图了。

this.swapChildrenAt(0,1);

 

解析一下程序:

imp=new MD2("imp",queue.data["man"],2);//在3.1版本引入了常见模型,带三个参数,第一个名称,第二个二进制数据,第三个缩放

MD2(p_sName:String, data:ByteArray, scale:Number = 1)
Creates MD2 primitive.

 

创建一个MD2模型很简单,它是sandy.primitive 包下常见的模型之一,它和box一样,可以很简单的创建。

 

 

对MD2模型贴图:

imp.appearance=new Appearance(new BitmapMaterial(queue.data["manSkin"].bitmapData));

 如果后面MD2模型有贴图的话,可以进行贴图,通过queue的对象加载后,可以获取到相关的信息,进行位图贴图。

 

 最后,在渲染的时候,可以对MD2的模型进行播放

private function enterFrameHandler(event:Event):void
  {
   scene.render();
   if (imp != null)
   {
    imp.frame+= 0.3;
   }
   //md.process();
  }

 

使用它的frmae属性就可以进行播放动画了,是不是很酷呢?呵呵

 md3

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值