zoukankan      html  css  js  c++  java
  • PV3D学习笔记-导入DAE模型

     

    网上关于PV3D导入DAE模型的例子都非常多,可惜我研究了半天,一个都没成功,或者是破面问题,或者是贴图不显示,再或者贴图乱掉了。今天晚上终于搞定,心得发上来。

    制作模型的软件是SketchUp Pro 7.1,选这个主要是体积小,建模方便,毕竟Maya和3Ds max都上是GB的体积,SketchUp才30MB。

    在SketchUp中建好模,注意不能让模型成组,选择文件-导出3D模型,注意右下角的选项,勾上“输出材质纹理”,其他都可以不选,导出格式选dae即可。

    找到这个dae文件,用记事本打开,dae其实就是个xml文件,打开后搜索init_from,然后在下方不远处会看到大致如下的内容:

    <image id="ID171"><init_from>car/texture0.jpg</init_from></image>

    这里显示的就是模型贴图的路径(如果贴了图的话就有),改成这样:

    <image id="ID171"><init_from>texture0.jpg</init_from></image>

    也就是删掉目录,只剩贴图文件名,然后相应地,将car文件夹里的贴图全部复制出来。

    不知道问什么,PV3D似乎不会去搜索文件夹下的东西,只认和dae文件同目录下的贴图,这就是我一直没搞定贴图的元凶。

    然后是PV3D的调用代码,代码一贯很简洁,只要3行即可,创建DAE对象需要引入org.papervision3d.objects.parsers.DAE,创建代码如下:

    1
    2
    3
    var mod:DAE = new DAE();
    mod.addEventListener(FileLoadEvent.LOAD_COMPLETE, onload);
    mod.load("house.dae");

    这里使用了addEventListener来监视模型的载入,接着相应LOAD_COMPLETE事件;

    1
    2
    3
    4
    private function onload(e:FileLoadEvent):void
    {
            mod.scale=20;<br>      scene.addChild(mod);
    }

    需要注意的是,SketchUp里的坐标单位和PV3D里的单位不同(应该有个对应关系,至少我现在没发现),所以SketchUp里看起来很大的模型,放在PV3D里也许小到被忽略,所以用scale放大20倍,其他模型再具体调整。

  • 相关阅读:
    C#:基于WMI查询USB设备信息 及 Android设备厂商VID列表
    C#中 @ 的3种用途
    有关于 使用 命名管道 进行网络 进程间通信 的资料收集
    MySql LAST_INSERT_ID 【插入多条数据时】
    两个“不合理继承 ”的判定标识
    MYSQL 函数 字符串到整数
    Spring MVC 对于@ModelAttribute 、@SessionAttributes 的详细处理流程
    重构,拥有多个构造函数(重载)的类
    vue二级联动select
    gulp.dest用法详解
  • 原文地址:https://www.cnblogs.com/regalys168/p/3606164.html
Copyright © 2011-2022 走看看