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

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: away3d是学习flash3d最好的工具,可以打下很好的基础。










最近更新:
● Antuanettiz阁下在讨论区里 发表新主题“male dating faqs — 2...”(23:09:31)
● DonaldRox阁下在讨论区里 回复“Ceftin|how to order ...”(06:50:08)
● Gregorytuche阁下在讨论区里 发表新主题“mesihs...”(12:09:01)
浏览主题:多个外部模型贴N张图的研究

多个外部模型贴N张图的研究
DDM君 (2012-03-16 05:50:37)

作者:noxss (转载请注明)
Email: czzzz@189.com


我曾经也以为PV3D只能给COLLADA模型贴一张图,还为此去给人物模型重新UNWRAP UWV,浪费了我一个下午的时间。。。其实方法手册里都讲有了,我看了手册才后悔。。。以后就养成了先翻手册和代码的习惯。

例子:在3DS MAX中画了两个平面,每个平面各有一张贴图,材质分别命名为'map1'和'map2',如图:
pv3d 教程



好了,代码来了~~

package
{
import flash.events.Event;

import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.Collada;
import org.papervision3d.view.BasicView;

public class duoMapTest extends BasicView
{
    private var matList:MaterialsList;
    private var mat1:BitmapFileMaterial;
    private var mat2:BitmapFileMaterial;
    private var twoPlane:Collada;
   
    private var loadedObjectNum:int;
   
    public function duoMapTest()
    {
    super(550, 400, true);
    init();
    init3d();
    startRendering();
    }
    private function init():void
    {
    loadedObjectNum = 0;
    }
    private function init3d():void
    {
    matList = new MaterialsList();
   
    mat1 = new BitmapFileMaterial('map1.jpg');
    mat2 = new BitmapFileMaterial('map2.jpg');
   
    mat1.name = 'map1';
    mat2.name = 'map2';
   
    matList.addMaterial(mat1);
    matList.addMaterial(mat2);
   
    twoPlane = new Collada('twoPlane.DAE', matList);
    twoPlane.scale = 0.1;
   
    mat1.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoaded);
    mat2.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoaded);
    twoPlane.addEventListener(FileLoadEvent.LOAD_COMPLETE, onLoaded);
   
    viewport.addEventListener(Event.ENTER_FRAME, enterFrameCheck);
    }
    private function onLoaded(e:FileLoadEvent):void
    {
    loadedObjectNum ++;
    }
    private function enterFrameCheck(e:Event):void
    {
    if (loadedObjectNum == 3)
    {
      viewport.removeEventListener(Event.ENTER_FRAME, enterFrameCheck);
      scene.addChild(twoPlane);
    }
    }
    override protected function onRenderTick(event:Event=null) : void
    {
   
   
    super.onRenderTick();
    }
}
}

这个代码很简单,我懒,就不多讲了,关键就是材质的名称要跟你在3D软件里的一样,就行了,简单吧!

效果图:
pv3d 教程







noxss
Email: czzzz@189.com
2009-09-29
转载请注明







flash 3d 研究所
(2009-10-18 13:31:45)
lz麻烦您能不能给点小小的注释啊~~~对于初学者的我来说吃透它还是有点难度的----


flash 3d 研究所
(2009-10-23 09:53:24)
noxss君.....是以豪爽的人吧...下次叫他注意加上注解。


flash 3d 研究所
(2009-11-06 14:55:38)
DDM君 我发现用flex builder 开发3D游戏蛮爽的,代码有高亮,能自动弹出。
我本是做flex的,把你们代码贴上去稍加修改,发现可以完美运行!


flash 3d 研究所
(2009-12-06 11:14:22)
其实,DAE类是可以直接提取dae文件中的贴图,并将他们贴到相应的地方上去的啊
daedocument 类的函数
public function parseLibraryImages():void
           {
                 var list :XMLList = this.COLLADA.library_images..image;
                 var element :XML;
                 var hasImages :Boolean = false;
                 
                 this.images = new Object();
                 
                 var loader :DaeImageLoaderThread = new DaeImageLoaderThread(this.baseUrl);
                 
                 loader.addEventListener(DaeParseEvent.IMAGES_COMPLETE, onImagesComplete);
                 
                 for each(element in list)
                 {
                       var image :DaeImage = new DaeImage(this, element);
                       if(image.init_from && image.init_from.length)
                       {
                             this.images[ image.id ] = image;
                             
                             loader.addImage(image);
                             
                             hasImages = true;
                       }
                 }
                 
                 if(hasImages)
                       loader.start();
                 else
                       onImagesComplete();
           }
是专门做这件事的啊


flash 3d 研究所
(2009-12-06 11:16:18)
ps :
我是因为需要load lzma压缩的dae 所以将此函数从private改成public了


flash 3d 研究所
(2010-01-18 17:15:47)
帮了大忙了! 呵呵 谢谢


flash 3d 研究所
(2010-06-04 17:32:51)
我尝试过,不行啊..


flash 3d 研究所
(2010-06-04 18:26:56)
囧..是我自己的问题..
成功了..
oh yeah!
感谢noxss大师..
感谢研究所..


flash 3d 研究所
(2010-09-02 15:07:12)
应该加个疑问。。。如何与这样的每个图片交互??????????????????????????????????????????


flash 3d 研究所
(2010-09-27 23:25:47)
这个一直在被大家念叨着---传说级的东西啊---


flash 3d 研究所
(2010-10-23 10:31:39)
http://www.flab3d.com/forum-tag-view-id-1282-title-pv3d+%E7%89%B9%E6%AE%8A%E4%BD%8D%E7%BD%AE.html
不是传说


flash 3d 研究所
(2011-11-07 18:46:12)
Wow, your post makes mine look febele. More power to you!


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

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

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

(目前需登陆方可发表)


不想添加了