Threejs加载城市建筑物地图

视频教程链接:Threejs杭州3D建模(建筑物,道路,河流,发光,标语)炫酷效果

腾讯课堂链接:https://ke.qq.com/course/6035106#term_id=106266474

1.首先,需要下载两个软件(blender,qgis)

然后,下载一个blender插件:blendergis

可以在github上下载这个插件:

https://github.com/blendergis/BlenderGIS

下载完成之后,不要解压缩。

在blender中,选择上方编辑->偏好设置->插件,点击安装,选择你下载的压缩包。一定要勾选上插件前面的方框。

安装完成之后,就会在上方出现这样一个按钮。地理信息系统或者blendergis

那blendergis使用过程中可能会出现一些问题。比如加载地图的时候,显示No Imageio,那这个问题,网上有很多解决方法。或者出现一个灰色图,或者显示找不到位置。这些问题可能是因为你没有进行科学上网。或者blender和blendergis版本不匹配。大家可以在淘宝上花几块钱让商家帮你搞定。购买前,先询问一下,是否能解决你遇到的问题。

那这里将杭州建筑物的shp导入到qgis中,然后,右键->导出->要素另存为

然后,选择文件路径。这里CRS一定要选择3857,墨卡托投影。因为我们blender里面只支持这个类型。

然后,将转换好的shp文件导入到blender中。

这里,勾选从属性字段提取,基面向下取整或者是floor,这个代表楼层数。也就是说它会根据楼层高度加载建筑物高度

导入完成之后,可以把它z轴的缩放调大一点

然后就可以把他导出出去,这里我们选择导出为.glb文件,勾选压缩可以使加载速度更快

然后,来到我们脚本里面,

import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { DRACOLoader } from "three/addons/loaders/DRACOLoader.js";
const loader = new GLTFLoader();
  const dracoLoader = new DRACOLoader();
  dracoLoader.setDecoderPath("/draco/");//draco文件夹路径
  loader.setDRACOLoader(dracoLoader);
  let res = await loader.loadAsync("/model/xxx.glb");
scene.add(res.scene),

就可以将模型添加到我们场景当中了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Three.js 是一个基于 WebGL 的开源 JavaScript 库,可以创建和显示各种三维图形场景,包括建筑模型。可以使用 Three.js 加载建筑模型的白膜,即建筑的基本轮廓,然后根据需要进行进一步的设计和开发。 首先,需要准备建筑的模型数据,一般为基于三维软件(如AutoCAD、SketchUp等)绘制的建筑模型。将模型导出为常见的 3D 文件格式,如 OBJ、GLTF、FBX 等。 然后,通过 Three.js 的加载器(如 OBJLoader、GLTFLoader、FBXLoader)加载建筑模型的文件。加载建筑白膜可以使用灰色或透明的材质,使建筑模型显示为白色或半透明的模样。 加载和显示建筑白膜的代码示例如下: ```javascript // 创建场景、相机和渲染器 var scene = new THREE.Scene(); var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); var renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); // 创建材质 var material = new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0.5 }); // 创建加载器并加载建筑模型文件 var loader = new THREE.OBJLoader(); loader.load('building.obj', function (object) { object.traverse(function (child) { if (child instanceof THREE.Mesh) { child.material = material; } }); scene.add(object); }); // 设置相机位置 camera.position.z = 5; // 创建动画循环 function animate() { requestAnimationFrame(animate); // 旋转建筑模型 scene.rotation.y += 0.01; renderer.render(scene, camera); } animate(); ``` 以上代码实现了加载建筑白膜的基本功能,通过调整材质的颜色和透明度,以及添加相应的光源,可以实现更加细致和真实的建筑模型显示效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值