zoukankan      html  css  js  c++  java
  • cesium导入3D模型(obj转gltf)

    cesium中支持载入3D模型,不过只支持gltf格式。gltf是khronos组织(起草OpenGL标准的那家)定义的一种交换格式,用于互联网或移动设备上展现3d内容,充分支持opengl,webgl,opengles图形加速标准。


    在用cesium的过程中难免需要导入建好的obj或dae模型,这时候就需要将这些模型转成gltf格式了
    我比较常用的是obj,所以我用的是obj2gltf

    obj转gltf步骤
    首先在cesium目录下安装obj2gltf(如果没有nodejs的就装一个吧,反正又简单官方还推荐)

    npm install --save obj2gltf

    然后在node_modules目录下找到obj2gltf,把你需要转的obj和带的贴图放在obj2gltf根目录下(貌似是obj2gltf的bug,指定目录似乎不管),在obj2gltf目录下打开命令行,输入

    node bin/obj2gltf.js -i model.obj -o model.gltf

    为了避免一个个文件转换的麻烦,参考博客http://blog.csdn.net/u013929284/article/details/53106331,写了一个批处理文件,将文件夹A中的obj文件全部转为对应的gltf文件放入文件夹B中,代码为

    @echo off
    for /r D:obj2gltf-masterOBJ %%i in (*.obj) do node bin/obj2gltf.js -i %%i -o OUTPUT	est.gltf
    pause & exit

    按原博主的方法会报缺少参数,添加-i,-o后解决,成功转换。

    这里写图片描述
    成功转换模型后,将模型放到相应路径,使用viewer.scene.primitives.add方法加载

          var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
              Cesium.Cartesian3.fromDegrees(102.73, 25.04,  0));
          var model = viewer.scene.primitives.add(Cesium.Model.fromGltf({
              url : '../Source/SampleData/Models/pangea3dgalleon.gltf',
              modelMatrix : modelMatrix,
              //scale : 10.0,
              maximumScreenSpaceError: 16 // default value
          }));
    
          viewer.camera.flyTo({
              destination : Cesium.Cartesian3.fromDegrees(102.73, 25.04, 2631.082799425431)
          });

    加载后发现模型不出现,排查后原因是加载地形后模型被挡住,将模型放大到一定程度或放置位置在一定高度就能看到





  • 相关阅读:
    黑盒测试和白盒测试的区别
    alpha测试和beta测试的区别
    selenium退出语句区别
    QTP8.2--安装流程
    Xshell无法连接Linux虚拟机问题
    Linux-----centos6.2---安装Linux的流程
    MySql错误处理--错误代码和消息
    基于Linux系统--web环境搭建
    前端底层-作用域 this 原型笔试题练习
    前端底层-冒泡与捕获
  • 原文地址:https://www.cnblogs.com/Yimi/p/8136211.html
Copyright © 2011-2022 走看看