快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 学习Flash3d请一定先看看AS3基础,如果你不想在这里被踢屁股的话










最近更新:
● ScottJep阁下在讨论区里 发表新主题“En France Sildenafil...”(13:57:30)
● ScottJep阁下在讨论区里 发表新主题“Sans Ordonnance Pril...”(13:25:06)
● Antuanettiz阁下在讨论区里 发表新主题“sex dating adult sit...”(13:01:14)
浏览主题:《超简易papervision3D基础 第三篇 导入外部模型》

《超简易papervision3D基础 第三篇 导入外部模型》
DDM君 (2012-03-16 05:50:44)

DDM君 , Flab3D.com (允许转载,转载请注明)


如果没有能够从外部导入的功能,整个引擎其他方面再完美,实际制作上都毫无疑义。Pv3d提供了非常简单的collada导入类。给我们两种使用collada外部模型的选择。

(collada目前和以后都应该是flash3d的主流模型,制作中功能也足够,所以我们不会废您的时间去讨论md2,obj等等)

 
 
 


具体使用什么插件可以从3dsmax,maya,blender等软件中导出我们将放在本文的最后。
练习时可以下载我们为您制作的小汽车collada模型(.Dae或.XML都是一样的)
源文件下载(含模型)
这次请先下载我们的源代码,我们使用的是collada类导入模型;请自己尝试一下用DAE类导入。 有遇到什么困难,欢迎到讨论区发言。(无需注册)

这一次我们会用到很多我们在超简易第二篇里面学到的调整物体位置的方法,如果没有看过欢迎去 超简易papervision3D基础 第二篇 物体的各种移动

我们目前在pv3d里有两种使用collada模型的方式:
Collada类:简便,但不支持骨骼等动画信息,适合导入静止的场景模型。
Dae类:声明多几步,读取慢一点,支持骨骼动画等,而且有我们还在不断添加新的功能。

用Collada类:
var car=new Collada("模型.XML ",new MaterialsList({all:new BitmapFileMaterial("贴图.jpg")}));
//当模型输出的时候,XML/DAE文件里贴图路径正确的话,new MaterialsList是完全不需要的。只用写new Collada ("模型.XML");
car.addEventListener(FileLoadEvent.LOAD_COMPLETE, 完成后该怎么办的方法);

用Dae类:
var Car:DAE=new DAE(true);
car.load("模型.XML",new MaterialsList({all:new BitmapFileMaterial("贴图.jpg")}));
//当模型输出的时候,XML/DAE文件里贴图路径正确的话,new MaterialsList是完全不需要的。只用写car.load("模型.XML");
car.scale=100;//一定一定要记住哦,一定要写这一步,DAE才能输出正常大小。每天都有人询问这个问题,所以千万千万记住哦~~谁看了这篇再因为这个问题问‘为什么我的DAE看不见’,自己罚面壁半小时,呵呵^V^.

(来自讨论区的中華注:後來才發現是因為模型太大的緣故,最好在Max中將模型整體縮小,發現小一點沒有關係xxx.scale=1可以對模型經行整體縮放,另外關於導入模型自身原點坐標的位置問題,解決方式是在Max中將模型放置在原點坐標處,這樣方便一些效果的實現。另外貼圖的問題,導出的XML文件直接包含對貼圖的路徑,將貼圖放到某一路經下。然后把XML中貼圖路徑改成放貼圖的路徑。這樣就可以不用寫new MaterialsList({all:new BitmapFileMaterial("map_car.jpg")})

car.addEventListener(FileLoadEvent.LOAD_COMPLETE,完成后该怎么办的方法);
//加这一步比较科学,因为等模型读取完成在进行其他的位置变更啊,加入到scene.addChild啊。

FileLoadEvent是pv3d用来监测外部文件是否被读取的类。
import org.papervision3d.events.FileLoadEvent;

有些朋友会发觉车和地面接触的地方有很严重的‘破面’问题,这个我们会专门在" 解释深度排列(Z-sorting)问题"这篇 里面具体分析。为了尽可能防止这个问题,我这里简单的把车升高了50。
car.moveUp(50);



当car读取完毕以后可以scene.addChild(car),car就会显示出来了。
在enterframe的方法里面,我写了:
if (car) {
什么什么的
}
//这可以确保car这个物件有了以后,再进行各种位置调整。
camera.lookAt(car);
//如果想让摄像机一直看着某个物件的时候,必须把lookAt写在enterframe的方法里。

下面三个是这次要用到的新类。
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.parsers.Collada;

import org.papervision3d.objects.parsers.DAE;



Maya导出collada的工具使用:
http://www.feelingsoftware.com/ 点击右上角的download,可能需要注册。
如果注册有困难的朋友可以直接下载我们这里的用于maya的导出插件 colladaMaya,适用于maya2008,8.5,8.0,7.0.
(由于版权问题,强烈建议大家还是去上面feelingsoft的官方网站注册下载)

安装好了以后,要记得在maya的插件管理器(plugin manager)中勾选collada,就可以导出.dae文件到pv3d中使用了。Max里面也是同理,具体操作中遇到困难欢迎区讨论区求助。
flab3d.com
Collada的导出有时会出错(根据要导出信息,不同三维软件导出的信息也有少许区别),所以具体操作时,请自己多尝试几次,不要放弃。有任何不清楚的地方,欢迎到讨论区发言。(无需注册)



DDM君
Flab3D.com

Flash3d研究所推荐的Pv3d傻瓜包下载
源文件下载

colladaMaya导出插件





flash 3d 研究所
(2008-11-25 22:44:21)
非常慢 我下载你们的那个源文件 测试半天不出来 模型漆黑一片


flash 3d 研究所
(2008-11-26 10:07:52)
car=new Collada("car.XML",new MaterialsList({all:new BitmapFileMaterial("map_car.jpg")}));
//car.scale=100;
car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);
我在3D maxs 裡面輸出了一個模型,名字也叫car.xml ,
但是當我寫了car.scale=100; 反到看不到圖形了,上面的教程中說的,不是一定要寫這個嗎?car.scale的這個屬性到底可以用不。我是菜鳥,希望DDM君給解答下,謝謝。


flash 3d 研究所
(2008-11-26 11:06:05)
非常抱歉 因为怕写得太麻烦混乱初学者
实际上模型要不要scale=100 和输出的模型大小和您的摄像机离物体的距离都是有关的 正常游戏大小输出 scale一般建议会*100,但实际上您*10也可以,只要保证每个dae都*10就是了,总之自己怎么合适怎么做 能看得到就是了 对吧
希望对你有帮助

to 中华:对不起,模型漆黑表示没有找到贴图,请检查
new BitmapFileMaterial("map_car.jpg")}));
这句贴图的地址,和您的贴图地址。
网络上读不出来应该是网络暂时有点问题,非常抱歉。


flash 3d 研究所
(2008-11-28 15:03:44)
请问源码运行后为什么漆黑一片?是什么问题呢?


flash 3d 研究所
(2008-11-28 16:06:55)
啊我看了一下 ddm把面弄得高了点 面高的时候 不要用ctrl-enter测试,用publish。黑是因为没有读出来。


或者就改下面的:
plane=new Plane(new BitmapFileMaterial("map.jpg"),10000,10000,15,15);

15,15改小点就可以了比如5,5


flash 3d 研究所
(2008-11-28 16:17:59)
其实是因为我为了写的精简,还没有判定plane是否生成就加入scene了,所以plane面一多就会有这个问题。

我已经把源代码改成8,8了 给您带来麻烦非常抱歉


flash 3d 研究所
(2008-12-24 21:37:20)



flash 3d 研究所
(2008-12-24 21:39:45)
DDM君,很热情,非常客气,一看就知道是个很谦虚的人。
支持你们研究所,继续努力。



flash 3d 研究所
(2008-12-24 21:39:46)
DDM君,很热情,非常客气,一看就知道是个很谦虚的人。
支持你们研究所,继续努力。



flash 3d 研究所
(2008-12-24 21:42:23)
感谢您的赞扬(脸红),感谢支持,一起加油!


flash 3d 研究所
(2008-12-30 15:10:24)
不好意思,我动行了一下,老报了个错误是:
Type was not found or was not a compile-time constant:FileLoadevent

我运行的就是下载的源文件,是不是我的计算机里少什么东西??


flash 3d 研究所
(2008-12-30 20:31:27)
import org.papervision3d.events.FileLoadEvent;
检查一下这句导入没有
然后确认是否是从我们研究所下载的最新傻瓜包


flash 3d 研究所
(2009-01-19 15:28:44)
能否点击汽车让他变大?


flash 3d 研究所
(2009-02-13 12:02:12)
请问DDM君,3dmax导出collada用什么插件


flash 3d 研究所
(2009-02-24 20:48:32)
DDM君,春节期间你们网站因备案问题关门,我们都非常着急,盼着你们的网站早一天恢复起来!
顺便问个问题:前几天,我用研究所的PV3D包做ADE.play的测试,3dsmax的动画我设置包含在Collda3D导出里面了,但是我用DAE的类来调用play方法,却没有成功,我在这里问一下,研究所DAE类包里面的play方法可以实现么,附个实例上来可以吗?


flash 3d 研究所
(2009-02-25 15:46:12)
理论上来说只要动画导出正确,不用play方法也会自动播放。没有播放说明导出时有错误。而这类错误的可能性就很多了,可能是IK,可能是导出了多余的部件,可能是导出clip问题等等等等^^。


flash 3d 研究所
(2009-03-06 15:35:20)
请问在MAYA中导出动画 时,因为有曲线做为控制器,导出不会出错吗,


flash 3d 研究所
(2009-03-11 18:47:36)
不会


flash 3d 研究所
(2009-03-14 22:38:51)
这个3D开发包竟然已经为用户写了这么多数学算法。比D3D,OpenGL方便多了,问题是速度慢。


flash 3d 研究所
(2009-03-19 16:56:02)
在3DS MAX中随手弄了一个输出为DAE格式,
用collade加载时,将scale=0.1时,在屏幕上刚好;
用dae加载时,将scale=10时,与前者的大小一样;

这二个类的在加载时,尺寸倒底是如何计算的?


flash 3d 研究所
(2009-03-27 21:29:39)
是这样的,DDM君 可否把 引晴里所有的属性和方法做一个整理
统一有条理性的放在一起,这样不是好多了,你讲起来也简单,大家学起来更有条理,不然老是感很模糊,说不懂嘛!又好像知道一点,好像有学不完的方法,一节课来两个一节课来两个,头都搞大了,想查回之前学过的,还得到前面的章节中去一行行找,.这是我个人意见,不知各位同仁觉得如何!!!!
最后还是得谢谢DDM君,你的教材让我认识了FLASH 3D
!!!


flash 3d 研究所
(2009-03-27 21:33:02)
还有类也是一样


flash 3d 研究所
(2009-03-27 23:03:57)
我想问下
camera=new FreeCamera3D(2,200);
后面那两 参数的具体意思是??????


flash 3d 研究所
(2009-04-10 22:49:49)
我用源文件测试的时候,报错了
具体描述是47行 1046:找不到类型,或者它不是编译....
源码是            private function onloaded(evt:FileLoadEvent):void {



flash 3d 研究所
(2009-04-12 23:11:28)
您好,我下载您的源码运行后漆黑一片,而且非常的慢,运行一会Flash CS4就死了,请问是怎么回事?


flash 3d 研究所
(2009-04-12 23:13:46)
但是生成的文件却没有问题。


flash 3d 研究所
(2009-04-12 23:15:23)
不用回答了,知道答案了,麻烦了。


flash 3d 研究所
(2009-04-15 18:54:57)
请问tiger311你能告诉我你出现问题的答案吗??


flash 3d 研究所
(2009-04-17 15:22:39)
请问,我根据教程,自己拉了一个正方体导出为DAE,再放到场景中加载,但是为啥图形没有出来?难道是导出有什么问题要值得注意的么?


flash 3d 研究所
(2009-04-22 07:17:11)
請問,在maya导出dae時的setting是怎么的?
我导出的是一個animated(有joint ) 的file
但导出後沒有animation
and maya 中的Material 不可以全部导出dae吗??

thank you !!


flash 3d 研究所
(2009-04-24 14:25:44)
DDM君你好,我是一个FLASH3D的初学者,目前不会使用3D建模软件,今天用了一下Google SketchUp 6,导出了一个dea文件,用pv3D加载进来后,运行的时候提示没有贴图,不知道用3Dmax或者maya导出dea的时候是否也会生成一个贴图的文件,像我这样的初学者请给点建议,我改用哪个建模软件?另外要创建可以动的模型,模型的动作是在建模的时候就做好的呢还是导入到pv3d后再做的,问题很菜,感谢回答,我很喜欢flash3D,虚心向你学习~


flash 3d 研究所
(2009-04-25 10:53:06)
嗯,都可以的。这些是美工方面的技法,我们这里尽量不占篇幅。基本理念看看下面这篇。
http://www.flab3d.com/tutorial.php?top=t123dbasic1
具体选择那个软件制作,可以去‘火星时代’(直接百度搜索它)论坛看看


flash 3d 研究所
(2009-05-06 17:50:36)
DDM君你好!
我想和你探讨一下,关于导入DAE中有动画模型的问题。
我用Blender制作了一段简单的动画,里面包含了骨骼,然后导出成DAE格式。
然后用在AS3中用DAE 导入,后来又试了用DAEMC2 导入,结果都看不到对应的动画动作。
INFO: animations COMPLETE (#channels: 4 #frames: 100, startTime: 0 endTime: 4)
但是已经看到动画的frames被解析出来了,为什么不会播放呢


flash 3d 研究所
(2009-05-21 09:23:22)
DDM君你好!~
我是Maya新手,想问一下,为什么我的Maya装上去以后,全视图模式下,只显示半个视图区域,四视图的话就正常了


flash 3d 研究所
(2009-05-21 15:33:58)
很好,很强大..
小弟在这感谢各位大哥了```


flash 3d 研究所
(2009-06-11 23:35:33)
load唔到野..黑色,,應該係load唔到texture..
error如下:

INFO: Papervision3D Public Beta 2.0 - Great White (December 3rd, 2008)

INFO: BitmapFileMaterial: Loading bitmap from map.jpg
ERROR: MaterialObject3D: transformUV() material.bitmap not found!


flash 3d 研究所
(2009-06-12 09:20:01)
to日君:
用导出试试,测试时由于信息好多,只要地址正确,load唔到texture仅是测试前几秒嘅问题。


flash 3d 研究所
(2009-07-28 23:42:30)
DDM君 我想请问一下 那个car.xml是怎么来的??是用什么工具做的??我是菜鸟,谢谢


flash 3d 研究所
(2009-07-31 11:44:07)
xml就是dae改变了扩展名而已,dae就是一个xml,您打开看看就知道格式就是xml


flash 3d 研究所
(2009-10-14 14:42:44)
DDM君,我下载了一套3DMAX9,可是装collada扩展的时候总是装不上,在plugins这个文件夹里总是空的,能帮忙解决一下吗?谢谢啊


flash 3d 研究所
(2009-10-15 16:54:57)
DDM君,我装了“Maya2008 云龙绿化版”可是不管我怎么装“ColladaMaya_3.05B”就是不生效,是不是应该有个 collada.mll的文件出现???超郁闷...请教了!!



flash 3d 研究所
(2009-10-21 17:08:46)
我3ds max2009 导出模型DAE文件老是卡住 怎么办啊


flash 3d 研究所
(2009-12-16 20:42:00)
请问有没有pv3d的帮助文档?



flash 3d 研究所
(2010-01-06 12:02:02)
导入模型以后点光源不起作用了,怎么回事?请帮帮忙,谢了!


flash 3d 研究所
(2010-01-12 11:41:42)
Dear DDM:
我使用的是Maya2008,但是我裝colladamaya後,要在maya裡面要loaded collada.mll時,卻沒有出現這個外掛文件。這問題困擾了很久。我也曾參考http://100town.cn/web/public/bbs/message_boards/message/21021 這篇先安裝FCollada_FREE_3.05B.exe,不過仍是同樣的結果。不知是哪邊出了問題?十分謝謝您。


flash 3d 研究所
(2010-02-18 23:02:49)
请问var Car:DAE=new DAE(true);
car.load("模型.XML",new MaterialsList({all:new BitmapFileMaterial("贴图.jpg")}));
这里的"贴图.jpg"是怎么生成的?


flash 3d 研究所
(2010-02-19 13:03:33)
讨论区去查询一下就知道了。baidu搜索 ‘简模贴图绘制’ 。


flash 3d 研究所
(2010-02-21 14:50:11)
dear DDM君
我想问下有pv3d的帮助文档没?对于不会3d方面的单从程序入手怎样将建模,贴图在flash平台联合起来。谢谢,不知道我表述清楚没有


flash 3d 研究所
(2010-02-21 17:38:51)
近期会专门录制一个这方面流程的教程,因为询问的人太多了,呵呵。
这里共享资源区有别人上传的pv3d帮助,用处不大,还是只有直接看代码。
http://www.flab3d.com/tutor-tag-upload.html



flash 3d 研究所
(2010-07-20 18:33:13)
我下载了源文件运行的时候,汽车出来了,也在运动,但是地图不见了,即场景中找不到map.jpg。这是什么原因呢?


flash 3d 研究所
(2010-09-06 16:30:24)
原文件直接运行 不见有小车 估计是缺失了file:///E:/My%20Documents/3Dprojects/MAYA/flash3d/car02.mb这个文件,DDM君能否给个?



flash 3d 研究所
(2010-10-11 17:24:56)
TypeError: Error #1009: 无法访问空对象引用的属性或方法。
     at org.papervision3d.objects.parsers::Collada/buildObject()
     at org.papervision3d.objects.parsers::Collada/parseGeometry()
     at org.papervision3d.objects.parsers::Collada/parseNode()
     at org.papervision3d.objects.parsers::Collada/parseScene()
     at org.papervision3d.objects.parsers::Collada/buildCollada()
     at org.papervision3d.objects.parsers::Collada/onComplete()
     at flash.events::EventDispatcher/dispatchEventFunction()
     at flash.events::EventDispatcher/dispatchEvent()
     at flash.net::URLLoader/onComplete()
我在下载来的dae文件来检测程序时,是可以显示的,但是自己做的dae就会出错,请问下,改如何解决


flash 3d 研究所
(2010-11-01 10:19:05)
我用源文件测试的时候,报错了
具体描述是47行 1046:找不到类型,或者它不是编译....
源码是   private function onloaded(evt:FileLoadEvent):void {

请问DDM君,3dmax导出collada用什么插件



flash 3d 研究所
(2010-12-15 09:43:38)
请问:
//当模型输出的时候,XML/DAE文件里贴图路径正确的话,new MaterialsList是完全不需要的。只用写car.load("模型.XML");

这 是不是 说把max里的maps文件夹下的东西
复制到E:pv3dorgpapervision3dobjectsparsers下?



flash 3d 研究所
(2010-12-15 09:47:02)
我在练习导入 dae 模型,做了个desk ,但提示:
E:pv3d est01.as,37 行      1093: 语法错误。

第37行:desk.scale=100;
删除 这行 后,提示:
E:pv3d est01.as,36 行      1067: void 类型值的隐式强制指令的目标是非相关类型 org.papervision3d.objects.parsers:DAE。

这是?



flash 3d 研究所
(2011-01-04 15:47:45)
学习了新知识,感觉非常棒


flash 3d 研究所
(2011-02-16 14:07:11)
dae导入到PV3D中,贴图显示不出来,只有一个个框,dae里的贴图路径已经改了,怎么办


flash 3d 研究所
(2011-03-22 17:06:01)
DDM君! 想请教你一下,是否用过 3d max 2010 导出过.DAE 呢?

我不需要collada插件就能导出 .DAE了,但是只有模型,没有图片
我试过很多次了!应该不是路径的问题。 望能进一步与大家一起探讨这个问题!或指教!


flash 3d 研究所
(2011-06-01 11:20:42)
请问FreeCamera3D 和Camera3D有什么区别?


flash 3d 研究所
(2011-07-16 00:54:12)
scale 到了AS3.0 后不是用的百分比么,,,1就行了不用100吧??


flash 3d 研究所
(2011-08-23 02:54:37)
I'm impressed! You've maneagd the almost impossible.


flash 3d 研究所
(2012-01-16 15:25:58)
为何我的3D人物动画,导出DAE后就出现错误,急,谢谢!



flash 3d 研究所
(2012-03-14 08:12:36)
可不可以既给模型贴图,又指定一个shader(如phong),因为我觉得只贴图不太真实,谢谢


flash 3d 研究所 bjceo
(2014-07-04 12:11:26)
DDM
运行你给的源文件报错:
具体描述是47行 1046:找不到类型,或者它不是编译....
源码是   private function onloaded(evt:FileLoadEvent):void {


flash 3d 研究所 aa
(2017-02-25 17:45:33)
源文件下载不了.


flash 3d 研究所 aa
(2017-02-25 18:29:32)
源文件无法下载


flash 3d 研究所 engladpen
(2017-08-17 19:34:09)
Наконец-то, чтото полезное:)


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了