从3dsmax导出Dae模型到papervision3D

从外部的三维软件,如3dsmax导入模型到papervision3D,下面,让我们熟悉一下这个流程。
[b]【[url]http://www.newflash3d.com[/url]---flash3D先锋队:北京贝武易科技公司】[/b]
有疑问请联系我QQ:363596350
在3dsmax里建立一个箱体。

[img]/upload/attachment/128684/53f88e81-5c04-3d64-8f6a-60c778222adc.jpg[/img]

长 20
宽 100
高 30
如图所示:

[img]/upload/attachment/128690/0bef345f-34a3-3a27-87fb-e40a100bd0ee.jpg[/img]
这里我们用的都是3dsmax默认的单位。也就是英尺。
我们这里需要注意的是它的轴向:xyz和它对应的长宽高。

[img]/upload/attachment/128692/d48258bf-452d-3e23-83b7-565e575f13ae.jpg[/img]
输出为box.DAE文件。
选择默认的设置,OK即可。
我们在Flex中把物体导入进去
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:myCanvas3D="myCanvas3D.*" applicationComplete="init();">
<mx:Script>
<![CDATA[
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.lights.PointLight3D;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.DAE;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.events.FileLoadEvent;

private var viewport:Viewport3D;
private var scene:Scene3D;
private var render:BasicRenderEngine;
private var camera:FreeCamera3D;

private var light:PointLight3D;

private var box:DAE;
private var plane:Plane;

private function init():void{
viewport=new Viewport3D(500,400);
scene=new Scene3D();
render=new BasicRenderEngine();
camera=new FreeCamera3D(2,100);
plane=new Plane(null,100,100,10,10);
//light=new PointLight3D(true);
//light.x=0;
//light.y=50;
//light.z=-80;
//scene.addChild(light);

box=new DAE(true);
box.load("assets/box.DAE",new MaterialsList( {all:new WireframeMaterial()} ) );


box.addEventListener(FileLoadEvent.LOAD_COMPLETE,boxonloaded);

camera.x=20;
camera.y=00;
camera.z=-20;
mycanvas.canvas.addChild(viewport);
}
private function boxonloaded(evt:FileLoadEvent):void{
scene.addChild(plane);
scene.addChild(box);
camera.lookAt(box);
render.renderScene(scene,camera,viewport);
}

]]>
</mx:Script>
<myCanvas3D:Canvas3D id="mycanvas" width="500" height="400" backgroundColor="0x000000"/>
</mx:Application>

运行,看到如下的结果:

[img]/upload/attachment/128700/d19f9625-566c-38a7-8bc4-b4679838d1f0.jpg[/img]
简单的解释一下,这里我们看到我们的箱体是立着的,我们多做了一个plane物体来作为参考,我们的相机在我们的Pv3d系统的位置为:
camera.x=20;
camera.y=0;
camera.z=-20;
我们的plane物体的长、宽、高都为100,那么箱体的长度和plane物体的长度是一样的。也就是说我们从3dsmax里导入的物体的长度在Pv3d系统的单位长度是一致的!这个很关键。
好,单位确定后我们就来探讨坐标轴的问题。
展开好UV,贴好材质,如图,我们通过材质来示意轴向。

[img]/upload/attachment/128707/2f0b1263-c28f-3d8c-8a66-573a060ee7c5.jpg[/img]
重新输出文件为:boxm.DAE
我们重新把文件导入到pv3d系统去,运行,我们看到是黑色的箱体,看不到材质,我们打开编辑boxm.DAE文件,把
<init_from>../sceneassets/images/outUV.jpg</init_from>


改为
<init_from>outUV.jpg</init_from>

因为我们的贴图outUV.jpg与我们的文件boxm.DAE是在同一个目录下。
再把材质代码改为:
box.load("assets/boxm.DAE",null );

只要路径对了,
boxm.DAE文件自动配置好贴图。
最终贴出来效果为

[img]/upload/attachment/128721/d1c110cb-ee29-37a2-ae26-8e71112506bc.jpg[/img]
在max的显示为:

[img]/upload/attachment/128723/024e5a14-dd1b-38cb-b216-821dd7667057.jpg[/img]
最终我们得出的结论是:
[b]3dsmax与pv3d的系统单位一致,
只要把Y轴与Z轴交换一下就达到一致效果。[/b]
[b]【[url]http://www.newflash3d.com[/url]---flash3D先锋队:北京贝武易科技公司】[/b]
有疑问请联系我QQ:363596350
最终,我们可以导入一个游戏人物角色了,Papervision 3D导入游戏人物!很激愤人心的事情啊!这里我们用了一个最终幻想的人物头部模型。
结果如图

[img]/upload/attachment/128725/67e45d72-da8a-3810-8b4d-d56ede1c4f14.jpg[/img]
下一步,我们会走的更远!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值