您的位置:首页 > 其它

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

2008-10-11 21:04 323 查看


问题:如果导入一个3dsmax的模型?

首先先装上一个3dsmax的插件,这个插件的作用是将建模的3dsmax文件导出一种一种asf的文件类型,

这种类型能够被sandy识别,能够重写绘制到场景中去;

当中有两种方式导入:一种是导出asf格式,一种导出ase 代码

两种方式都有特点:

主要使用的类:

使用

sandy.parserParser classes for importing 3D structures
导入3D结构

package

{

import flash.display.Sprite;

import flash.events.*;

import sandy.core.Scene3D;

import sandy.core.data.*;

import sandy.core.scenegraph.*;

import sandy.materials.*;

import sandy.materials.attributes.*;

import sandy.primitive.*;

import sandy.parser.*;

public class My3D extends Sprite

{

private var scene:Scene3D;

private var camera:Camera3D;

private var pot:Shape3D;

public function My3D()

{

var parser:IParser = Parser.create("asset/teieraASE.ASE",Parser.ASE );//导入ase格式,让它在flash里面重写绘画

parser.addEventListener( ParserEvent.FAIL, onError );//模型导入失败监听

parser.addEventListener( ParserEvent.INIT, createScene );//初始化监听事件

parser.parse();

}

private function onError( pEvt:ParserEvent ):void

{

trace("加载文件错误");

}

private function createScene(p_eEvent:ParserEvent ):void

{

camera = new Camera3D( 500, 300 );//建立摄影机

camera.y = 30;

camera.z = -200;

var g:Group = Group( p_eEvent.group);

pot = g.children[0] as Shape3D;//将模型转为shape3d 类型

pot.x = 0;

var materialAttr:MaterialAttributes = new MaterialAttributes(new LightAttributes( true, 0.2 ) );

var material:Material = new ColorMaterial( 0xE0F87E, 0.9, materialAttr);//添加颜色材质和和光线

material.lightingEnable = true;//开启光线

var app:Appearance = new Appearance( material);//创建一个物体表面

pot.appearance = app;

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

addEventListener( Event.ENTER_FRAME, enterFrameHandler );

}

private function enterFrameHandler( event : Event ):void

{

pot.pan +=3;

scene.render();

}

}

}

代码解析:

var parser:IParser = Parser.create("asset/teieraASE.ASE",Parser.ASE );//导入ase格式,让它在flash里面重写绘画

parser.addEventListener( ParserEvent.FAIL, onError );//模型导入失败监听

parser.addEventListener( ParserEvent.INIT, createScene );//初始化监听事件

parser.parse();//加载文件

导入3dmax导出的ase代码后,flash 要导入模型,其实是重写解析ase里面的数据,重写通过api函数重写绘制出模型到flash 舞台中去。

sandy引擎提供了一个接口说明:

Description
IParser The IParser interface defines the interface that parser classes such as ColladaParser must implement.

导入后,把它转为Shape3D 对象,pot = g.children[0] as Shape3D;//将模型转为shape3d 类型

然后定义材质,然后渲染场景。

扩展:定义材质,还可以加上一些纹理贴图;效果会更加好
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: