threeJS加载3Dtitles数据

这篇具有很好参考价值的文章主要介绍了threeJS加载3Dtitles数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        加载.gltf文件从网上查找资料,比较容易。

import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';

        但是项目使用的不是该类型的数据,是制作的 3Dtitles,折腾了几天,找到的资料比较少,比对着其他方法加载出了数据。

1.加载3Dtitles引用

        与加载。gltf不同,加载3Dtitles需要引用对应的插件 “3d-tiles-renderer”。安装时,出现了各种错误,是跟vue版本兼容性问题,尝试了安装不同版本的,错误就没有了。

import { B3DMLoader, TilesRenderer } from "3d-tiles-renderer";
2. 加载模型

        模型的json文件,要调试确认是否加载成功。我是把json文件下载到本地加载执行的。

   //加载模型
      this.tilesRenderer = new TilesRenderer(datapath + "tileset.json");
      this.tilesRenderer.setCamera(this.camera);
      this.tilesRenderer.setResolutionFromRenderer(this.camera, this.renderer);
      this.scene.add(this.tilesRenderer.group);
3.遍历解析模型

        模型文件加载成功,对应的是由多个3dm数据组成,当然也可以单独加载一个。我是采取循环遍历的方式,将所有的3dm数据添加到一个group中,组合成一个完整的模型数据。

        模型第一次加载出来,看着比较粗糙,有的侧面显示有问题,就添加了属性处理。逐个渲染添加到对象中,就可以看到模型加载出来了。

        如果模型较大,有可能导致电脑死机,建议加载一小块区域进行尝试。

 // 加载json,解析json 取出children中的路径进行拼装加载
      fetch(datapath + "tileset.json")
        .then((response) => {
          return response.json();
        })
        .then((resdata) => {
          const tilesetArr = resdata.root.children;
          for (const tilese of tilesetArr) {
            new B3DMLoader().load(datapath + tilese.content.uri).then((res) => {
              res.scene.rotation.set(Math.PI / 2, 0, 0);
              res.scene.scale.set(0.01, 0.01, 0.01);
              res.scene.position.set(0, 0, 0);

              res.scene.traverse((model) => {
                this.group.add(res.scene);
                if (model.isMesh) {
                  model.material.side = THREE.BackSide; //背面可见
                  model.material.side = THREE.DoubleSide;//两侧的面可见
                }
              });
            });
          }
        })
        .catch((error) => {
          // 在这里处理获取JSON数据失败的情况
          console.error(error);
        });

 文章来源地址https://www.toymoban.com/news/detail-719254.html

到了这里,关于threeJS加载3Dtitles数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • cesium加载3dtiles倾斜摄影数据

    效果如图 倾斜摄影数据的地址:百度网盘 请输入提取码 提取码:ztde 1.配置nginx,代理3dtiles倾斜摄影数据服务 如我的倾斜摄影数据放在D盘的某个文件夹里面,nginx可以这样配置    2.代码里面3dtiles的url指向倾斜摄影服务地址,同时配置一系列的参数 3dtiles的配置参数如下,可

    2024年02月11日
    浏览(48)
  • Cesium 加载3Dtiles数据-最佳方法对比

            Cesium加载空间数据的方法有很多种,网络上关于3Dtiles数据集加载的废话连篇,看着就很无语。这里我本人直抒胸臆,简单介绍一下数据的加载方式。         先打开Cesium的深度检测的开关,也可以不打开。                完成以上步骤后,利用Cesium的readyPromi

    2024年02月11日
    浏览(93)
  • Cesium加载城市白膜数据3DTiles

    首先,城市建筑数据可以去网上扒一些,拿到的都是 shp格式 的文件。 shp文件可以很方便的转为 Geojson文件 ,然后再通过Cesium导入也可以实现效果。效果如下所示: 图中就是用Geojson数据添加到地图中,大约有117000条数据,加载的效果还可以。但是数据量大加载时间会比较长

    2024年02月11日
    浏览(59)
  • Cesium入门之十:Cesium加载3DTiles数据

    3DTiles是一种面向网格化、可展示的大规模三维空间数据格式,专门为流式传输和渲染海量3D地理空间数据而设计的,用于存储和管理基于网格的三维模型数据。其数据结构基于B3DM和PNTS格式,可以支持多个级别的LOD,并使用Tilesets(瓦片集合)来组织和管理数据。3DTiles具有以

    2024年02月12日
    浏览(52)
  • Cesium介绍及3DTiles数据加载时添加光照效果对比

    Cesium原意是化学元素铯,铯是制造原子钟的关键元素,通过命名强调了Cesium产品专注于基于时空数据的实时可视化应用。熟悉GIS开发领域的读者都知道,Cesium是一个用于创建3D地理空间应用程序的开源JavaScript库,它允许开发人员在Web浏览器中构建高性能的虚拟地球应用,支持

    2024年01月25日
    浏览(50)
  • 【THREE.JS学习(3)】使用THREEJS加载GeoJSON地图数据

    本文接着系列文章(2)进行介绍,以VUE2为开发框架,该文涉及代码存放在HelloWorld.vue中。 相较于上一篇文章对div命名class等,该文简洁许多。 接着引入核心库 其中,{OrbitControls}为控制器,加载后可以通过鼠标来移动加载数据的方向、放缩等 Three.js中的坐标系是以单位为米(

    2023年04月09日
    浏览(48)
  • 前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积

    前端VUE框架通过Cesium加载3dtiles,计算3dtiles的面积完整代码 前端开发中,使用Vue框架可以帮助开发者更高效地开发复杂的Web应用程序,并且越来越多的项目开始集成三维地球数据可视化。Cesium是一个开源的JavaScript库,可以轻松地实现地球数据的可视化,同时支持3D场景的绘制

    2024年02月08日
    浏览(52)
  • cesium加载三维模型3dtiles

    目的:为避免跨域 输入cmd命令 python3 -m http.server 5500 http://127.0.0.1:5500/data/mars3d-max-shihua-3dtiles-master/tileset.json http://127.0.0.1:5500/cesium/cesium%E5%8A%A0%E8%BD%BD3dtile2.html

    2024年02月13日
    浏览(81)
  • threejs纹理加载三(视频加载)

    threejs中除了能把图片作为纹理进行几何体贴图以外,还可以把视频作为纹理进行贴图设置。纹理的类型有很多,我们可以用不同的加载器来加载,而对于视频作为纹理,我们需要用到今天的主角:VideoTexture。我们先看效果:  我们直接看代码: 这里特别要注意:对于视频而

    2024年02月11日
    浏览(34)
  • vue+cusium加载3dtiles模型

    结合cesium,有很多种方法,这里举例最简单的,小白入门首选 添加完,就可以正常运行了 正常打包完,直接打开index是不会加载的,有的还会报错,这是跨域所致,要配置服务器 具体步骤 一、打开dist文件,输入cmd 二、配置服务器npm install http-server -g 三、添加请求头http-serv

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包