flash 3d flash3d 研究所 pv3d 共享资源  | 经典范例  | 视频教程  | 友情链接  | 联系我们
登陆 | 注册  flash 3d 研究所
讨论区





最近更新:
● ck47阁下在讨论区里 发表新主题“新手问题...”(07:49:50)
● 无语瓶阁下在教程区里 回复“《超简易papervision3D基础 ...”(18:09:44)
● payday loan阁下在教程区里 回复“《pv3d, sandy, away3d...”(05:56:23)
浏览主题:如何动态更换外部加载的DAE模型上的材质贴图列表?

如何动态更换外部加载的DAE模型上的材质贴图列表?
aswind (2009-08-07 11:24:53)

我的目的是这样:
从外部加载了一个人体模型DAE文件,里面有一套默认的三张位图贴图,现在我在Flash库里创建了两套共6张的位图,要通过点击一个按钮,动态改变人体模型的贴图。

我们知道外部加载的DAE文件是用MaterialsList来赋予它材质贴图的,所以我在加载DAE文件时,用从库位图中创建的MaterialsList来替换DAE模型默认的内置贴图,这个一点问题都没有,我想用那一套材质贴图列表都可以:

var dae:DAE=new DAE(true);
dae.load("collada/girl_03.dae",myMaterialist);

现在的问题是不管我用什么方法,都没办法动态改变dae的贴图。我试过的方法有:

1)改变材质贴图列表的赋值。也就是说,我创建了另一个包含另外3张位图贴图的材质贴图列表myMaterialist2,然后当点击按钮后执行myMaterialist=myMaterialist2;但是没有反应。

2)改变材质贴图列表里面的位图贴图的BitmapData,也就是说,当点击按钮后,我把myMaterialist里位图贴图的所有BitmapData都换成了用从另外一套位图里创建的BitmapData;应该来说,Flash里面的变量赋值都是引用赋值,BitmapData改变了,那么myMaterialist也会随之改变,但是奇怪的是DAE还是没有反应。好像一旦执行了dae.load("collada/girl_03.dae",myMaterialist);后,贴在DAE上的材质贴图就和它的源数据脱离了关系了。

如果DAE只有一张贴图(不用材质贴图列表),那么就比较容易处理,可以用一般的材质贴图替换的方法来更换材质贴图。但是用材质贴图列表就那么多的麻烦。不知道我那个环节没有搞清楚,希望各路高手们不吝指点。


flash 3d 研究所 DDM君
(2009-08-07 12:54:29)
aswind君的几种测试非常有道理。
我们也是一直没有处理更换多张贴图的问题,XML解析时,materialList里面的代码非常混乱。好像解析的时候已经被复制给其他什么属性在管了,所以改变materialList已经不能改变XML本身的贴图。总之pv3d由于是大规模协作下的产物,而且作者们都不大负责任,所以很多冗余的代码估计他们自己也很难看懂了OTL.....

所以我们通常基本上是通过美工手段解决,比如实在需要的时候直接更换模型,当然代价是内存使用率暴增。

flash 3d 研究所 aswind
(2009-08-12 12:03:56)
DDM君,这个问题,我最终还是解决了。有兴趣的朋友可以到我的网站上看演示实例:http://www.flashare.net/blog/?page_id=772 ,是最下面的那个3D模特儿。点击右下角不同的按纽可以改变3D模特儿的脸部贴图,头发贴图,身体贴图。我在实例中只制作了两套贴图,其实只要有时间,可以做N套。

由于3D模特儿的多变性高达14000多个,所以如果机器不好的话,对按钮点击的反应可能有点延迟。DAE文件也比较大,所以下载需要点耐心等待。

差点忘了说原理:其实也很简单的,就是改变MaterialsList中的材质贴图。因为在DAE模型的贴图链“材质贴图列表 - 材质贴图 - 材质贴图的BitmapData”中,只有中间的“材质贴图”是对所要贴图的材质是指名道姓的,所以只有改变这里的贴图信息才会在场景中反应出来。

flash 3d 研究所 DDM君
(2009-08-12 14:01:47)
aswind这是非常棒的研究,范例也做的非常精良。
直接改变指定ID的bitmapData是非常优秀的想法,好样儿的。

flash 3d 研究所 ICPlay
(2010-03-22 15:49:14)
请问下aswind:你那个链接地址现在怎么打不开啊.我也一直想查看这方面的资料.但都比较难找着 请问能否提供些指导.

flash 3d 研究所 告别永恒
(2010-03-23 11:39:13)
恩---同样期待ing---
还请 aswind君 不吝赐教啊!


flash 3d 研究所 后羿
(2010-03-23 11:54:07)
顶顶顶 顶你个肺啊

flash 3d 研究所 uniqueboy
(2010-06-02 19:36:23)
请问aswind君,如何改变你说的MaterialsList中的材质贴图。我是初学者,刚刚接触PV3D,自己做了辆三维汽车,想在Flash里展示时可以更换汽车的颜色,也就是更换汽车的材质贴图。刚看了这篇文章还不是很懂,请您能讲详细些吗?最好能举个列子给我看看,谢谢啊!!

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

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

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

(目前需登陆方可发表)


不想添加了