threejs创建3D炫酷地图(地图流光,飞线,水印动画,高光)

这篇具有很好参考价值的文章主要介绍了threejs创建3D炫酷地图(地图流光,飞线,水印动画,高光)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 下载地图的json,这里我们可以在阿里云数据平台上进行下载

threejs 动态线,javascript,阿里云,图形渲染

2.在代码中解析下载的json

const fileloader = new THREE.FileLoader();

fileloader.load('/china.json',(res)=>{

res=JSON.parse(res)

createMap(res)

})

3.得到的坐标点是经纬度,所以我们要把它转为二维坐标,这里使用插件d3

const projection = d3

.geoMercator() //地图投影方式(用于绘制球形墨卡托投影)

.center([108.5525, 34.3227]) //地图中心点经纬度坐标

.scale(84) //缩放

.translate([0, 0]); //移动地图位置

4.生成地图

let chinaObj = new THREE.Object3D();

const edgeMaterial = new THREE.LineBasicMaterial({

color: 0xffffff,

blending: THREE.AdditiveBlending,

});

const extrudeMats = [

new THREE.MeshStandardMaterial({

color: new THREE.Color(0x0000ff),

transparent: true,

opacity: 0.85,

blending: THREE.AdditiveBlending,

}),

new THREE.MeshStandardMaterial({

color: new THREE.Color(0x0000ff),

transparent: true,

opacity: 0.35,

blending: THREE.AdditiveBlending,

}),

];

function createMap(res) {

res = JSON.parse(res);

res.features.forEach((province) => {

//省市的物体

let provinceObj = new THREE.Object3D();

if (province.geometry.type == "Polygon") {

province.geometry.coordinates.forEach((polygon) => {

let shape = new THREE.Shape();

let arr = [];

for (let i = 0; i < polygon.length; i++) {

let [x, y] = projection(polygon[i]);

if (i == 0) {

shape.moveTo(x, -y);

} else {

shape.lineTo(x, -y);

}

arr.push(x, -y, 1);

}

let mesh = createPolygon(shape, arr,province);

provinceObj.add(mesh);

});

} else if (province.geometry.type == "MultiPolygon") {

province.geometry.coordinates.forEach((multipolygon) => {

multipolygon.forEach((polygon) => {

let shape = new THREE.Shape();

let arr = [];

for (let i = 0; i < polygon.length; i++) {

let [x, y] = projection(polygon[i]);

if (i == 0) {

shape.moveTo(x, -y);

} else {

shape.lineTo(x, -y);

}

arr.push(x, -y, 1);

}

let mesh = createPolygon(shape, , arr,province);

provinceObj.add(mesh);

});

});

}

chinaObj.add(provinceObj);

});

base.scene.add(chinaObj);

}

5.创建多边形

function createPolygon(shape, , arr,province) {

let geo = new THREE.ExtrudeGeometry(shape);

let mesh = new THREE.Mesh(geo, extrudeMats);

if (province.properties.name) mesh.name = province.properties.name;

//画线

let buffer = new THREE.BufferGeometry();

buffer.setAttribute(

"position",

new THREE.BufferAttribute(new Float32Array(arr), 3)

);

let line = new THREE.Line(buffer, edgeMaterial);

chinaObj.add(line);

return mesh;

}

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

CSDN视频链接:threejs炫酷地图(地图流光,飞线,水印动画,高光,波浪)文章来源地址https://www.toymoban.com/news/detail-700892.html

到了这里,关于threejs创建3D炫酷地图(地图流光,飞线,水印动画,高光)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ThreeJS-3D教学八-OBJLoader模型加载+动画

    先看效果图: 本篇给大家介绍下模型加载的知识,用到了OBJLoader对应的模型,为了增加趣味性,花了些时间,利用new THREE.Points获取到模型上的点,做了一个动画效果,其实就是操作 Y轴上的点,先降低上0,然后再还原,代码如下: 如果有同学从我第一篇文章开始学到现在,

    2024年04月24日
    浏览(41)
  • threejs+vue 省份3D可视化地图

    1.先获取想要展示地图的区域json数据 阿里云获取地图区域的json 示例为陕西省 2.npm安装three.js和d3 npm i three 、 npm i d3 3.引入相关方法和json数据 该文章只做记录,具体在场景中使用中自己调整。

    2024年04月14日
    浏览(38)
  • ThreeJS——在3D地球上标记中国地图板块

    地球预览视频效果 TweenJS (动画库)用来做相机转场的动画 Jquery (这里只用到一个 each 循环方法,可以使用 js 去写) ThreeJS (3D 地球制作) 100000.json (全国城市经纬度) d3.v6.js 用来设置平面转3D效果(本来考虑做成3D的中国地图板块,最后因效果看起来比较美观还是考虑用线条嵌入球体

    2024年02月12日
    浏览(40)
  • Cesium中的流光道路效果 - 创建令人惊叹的3D动态效果

    Cesium是一个强大的地理信息系统(GIS)开发平台,提供了许多令人惊叹的功能集,其中包括创建流光道路效果。这种效果可以为地图添加动态的路径效果,使用户可以更好地理解地理数据的关系和变化。在本文中,我们将探讨如何使用Cesium创建流光道路效果,并提供相应的源

    2024年02月04日
    浏览(90)
  • 使用动画曲线编辑器打造炫酷的3D可视化ACE

    前言 在制作3D可视化看板时,除了精细的模型结构外,炫酷的动画效果也是必不可少的。无论是复杂的还是简单的动画效果,要实现100%的自然平滑都是具有挑战性的工作。这涉及到物理引擎的计算和对动画效果的数学建模分析。一般来说,只有专业的3D建模从业人员才能完成

    2024年02月03日
    浏览(51)
  • css的rotate3d实现炫酷的圆环转动动画

    2.1 rotate3d rotate3d:rotate3d() CSS 函数定义一个变换,它将元素围绕固定轴移动而不使其变形。运动量由指定的角度定义; 如果为正,运动将为顺时针,如果为负,则为逆时针。 语法: 含义: x 类型,可以是 0 到 1 之间的数值,表示旋转轴 X 坐标方向的矢量。 y 类型,可以是 0

    2024年02月02日
    浏览(48)
  • Flutter 小技巧之不一样的思路实现炫酷 3D 翻页折叠动画

    今天聊一个比较有意思的 Flutter 动画实现,如果需要实现一个如下图的 3D 折叠动画效果,你会选择通过什么方式? 相信可能很多人第一想法就是: 在 Dart 里通过矩阵变换配合 Canvas 实现 。 因为这个效果其实也算「常见」,在目前的小说阅读器场景里,类似的翻页效果基本都

    2024年02月06日
    浏览(40)
  • ThreeJS-3D教学一:基础场景创建

    Three.js 是一个开源的 JS 3D 图形库,用于创建和展示高性能、交互式的 3D 图形场景。它建立在 WebGL 技术之上,并提供了丰富的功能和工具,使开发者可以轻松地构建令人惊叹的 3D 可视化效果。 Three.js 提供了一套完整的工具和 API,用于创建和管理 3D 场景、几何体、纹理、光照

    2024年02月07日
    浏览(56)
  • 你还不会创建炫酷的3D封装库吗?【开源】Altium Designer 3D封装库

    ☞ PCB设计3D封装的作用         很多工程师在使用EDA软件设计PCB电路板时,总喜欢添加完整的3D封装,PCB板中元件的3D封装有什么作用呢? 1、可视化电子系统集成         有助于工程师更好地理解电路板与其他系统部件之间的相互作用。他们可以查看组件之间的空间关

    2024年01月17日
    浏览(50)
  • ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

    本案例为一个 threejs 的特效网页,大小球体进行包裹,外球体为透明材质,但是进行了线框渲染,使其能够通过外球踢查看其内球体。 注:案例参考源于互联网,在此做代码解释,侵删 本案例除 ThreeJS 外不适用任何第三方框架,放心食用 懒的同学可以直接下载代码,打赏作

    2024年02月08日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包