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倍,其他模型再具体调整。

  • 相关阅读:
    Spring Controller参数为空串的处理方式
    netstat用法
    zookeeper的配置项
    C++ Lambda表达式用法
    java命令行运行jar里的main类
    Random的nextInt用法
    【JAVA】删除某个目录及目录下的所有子目录和文件
    Centos7设置keepAlived开机自启动
    linux设置nginx开机自启动
    window.open()方法
  • 原文地址:https://www.cnblogs.com/regalys168/p/3606164.html
Copyright © 2011-2022 走看看