本文介绍: 如需3dtiles文件,请私聊我哦,或者vx Kii-MichstaBe 加我。然后启动nginx运行前端项目输入localhost:8081 能打开就代表成功。由于测试的3dtiles位置错误,我也没有调整,上面的。打开nginx/conf/nginx.conf修改。以上就是加载cesium加载3dtiles流程。把转好的3dtiles放到nginx根目录下。方法是调整3dtiles位置方法。如有错误处,请指正~~

今天写一下cesium处理3dtiles和在本地加载3dtiles教程

图片1.png

1. 文件处理

如需3dtiles文件,请私聊我哦,或者vx Kii-MichstaBe 加我。文件转换成3dtiles的话推荐
Cesium3DTilesConverter
或者cesiumlab
处理成为以下格式文件

1682348952878.png

2. 代理

下载nginx
解压到D盘根目录
把转好的3dtiles放到nginx根目录

1682349366471.png
打开nginx/conf/nginx.conf修改

1682349482462.png

 listen       8081; #启动端口   localhost:8081
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Headers X-Requested-With;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

location / {
    #root   html;
    #index  index.html index.htm;
    proxy_pass http://localhost:5173/;#转发前端项目运行地址
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header        X-Read-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

location /tile3 {
    root D:\nginx;
    autoindex on;
    #index  index.html index.htm;
}

然后保存退出nginx根目录使用cmd(以下为几个常用的nginx命令):
start nginx启动nginx
nginx -s reload (重新读取文件
nginx -s reopen重启服务
nginx -s quit (关闭服务
然后启动nginx运行前端项目输入localhost:8081 能打开就代表成功

3.加载

<script setup lang="ts"&gt;
import * as Cesium from 'cesium';
import { onMounted } from 'vue';

onMounted(() =&gt; {
  const viewer = new Cesium.Viewer('cesiumContainer', {
    infoBox: false,
    terrainProvider: Cesium.createWorldTerrain({
      requestVertexNormals: true,
      requestWaterMask: true,
    }),
  });//初始化cesium

  const tilesetModel = new Cesium.Cesium3DTileset({
    url: "/tile3/tileset.json" //tile3为nginx代理地址
  });
  viewer.scene.primitives.add(tilesetModel); //添加viewer

  const tileModelTool = {
    scale: 1.0,
    longitude: 0,
    latitude: 0,
    height: 0,
    rx: 0,
    ry: 180,
    rz: 0,
    alpha:1
  }

  const update3dtilesMaxtrix = function () {
    const mx = Cesium.Matrix3.fromRotationX(
      Cesium.Math.toRadians(tileModelTool.rx)
    );
    const my = Cesium.Matrix3.fromRotationY(
      Cesium.Math.toRadians(tileModelTool.ry)
    );
    const mz = Cesium.Matrix3.fromRotationZ(
      Cesium.Math.toRadians(tileModelTool.rz)
    );
    const rotationX = Cesium.Matrix4.fromRotationTranslation(mx);
    const rotationY = Cesium.Matrix4.fromRotationTranslation(my);
    const rotationZ = Cesium.Matrix4.fromRotationTranslation(mz);
    const position = Cesium.Cartesian3.fromDegrees(
      tileModelTool.longitude,
      tileModelTool.latitude,
      tileModelTool.height
    );
    const m = Cesium.Transforms.eastNorthUpToFixedFrame(position);
    Cesium.Matrix4.multiply(m, rotationX, m);
    Cesium.Matrix4.multiply(m, rotationY, m);
    Cesium.Matrix4.multiply(m, rotationZ, m);
    const scale = Cesium.Matrix4.fromUniformScale(tileModelTool.scale);
    Cesium.Matrix4.multiply(m, scale, m);
    tilesetModel.modelMatrix = m;
    // viewer.scene.globe.translucency.frontFaceAlphaByDistance.nearValue = Cesium.Math.clamp(
    //   tileModelTool.alpha,
    //   0.0,
    //   1.0
    // );
  }

  viewer.zoomTo(tilesetModel); //相机移动
  // update3dtilesMaxtrix();
})

</script&gt;

<template&gt;
  <div id="cesiumContainer"&gt;</div&gt;
</template&gt;

<style scoped&gt;
#cesiumContainer {
  width: 100vw;
  height: 100vh;
  overflow: hidden;
}
</style>

1682350537065.png
由于测试的3dtiles位置错误,我也没有调整,上面的update3dtilesMaxtrix方法是调整3dtiles位置方法
以上就是加载cesium加载3dtiles的流程
如有错误处,请指正~~

原文地址:https://blog.csdn.net/weixin_45617978/article/details/130354783

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_16629.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注