完整DEMO有需要可以下载,three.js json配置地图DEMO

随着html5 canvas的流行,酷炫的web端效果层出不穷,搭载基于webgl 的three.js的图形库可以做出基于web的3D效果。最近应对客户需求,2D平面地图已经不太满足客户的口味,3D的效果更让人接受,先看一下成果图。

对应室内地图CAD图纸 进行3D立体效果拉伸,再加上一些实景模型的搭配,使得整体效果更好。

地图地板墙体的依据cad 尺寸制定的json数据协议:

 {title: '',x: 480,y: 80,z: 0,width: 2,height: 866,color: "#30B2BB",textcolor: "black",bordercolor: "rgba(76, 181, 216, 0.85)",bspMesh: [// 小房子的墙{type: 'union',geometryType: 'box', color: '#fff',x: 0,y: 80,z: 82,width: 38,height: 2,positionY: 0,}]
}

3D坐标轴对应2D多了一个高度 ,这里高度设置为Y轴,2D.Y=>3D.Z  2D.X=>3D.X 。3D场景新增的几何体都是模型的中心在原点,而2D的原点是从屏幕左上角开始(0,0),所以这里需要一个转换,首先确认地图的最大长宽尺寸,然后通过计算得到2D坐标转换3D时基于地图的位置设置其position,

data.x = data.width / 2 - MapXLength / 2 + data.x;

data.z = data.height / 2 - MapZLength / 2 + data.z;

常规的地面墙面,以及柱子,墙面门通过,ThreeBSP库进行模型的组合,打孔,完成。

地图区域的说明通过DIV+css来完成,实时计算3D坐标系固定位置对于2D屏幕的位置来实现引导性的连接:

function worldPointToScreen(point) {let vec2 = point.project(camera);let halfWidth = window.innerWidth / 2;let halfHeight = window.innerHeight / 2;return {x: vec2.x * halfWidth + halfWidth,y: -vec2.y * halfHeight + halfHeight};
}

转换公式如上。

地图操作控制器是OrbitControls。

记一次three.js 布局3D室内简易地图相关推荐

  1. js室内地图开发_如何使用JS来开发室内三维地图的轨迹回放功能

    在制作完成室内三维地图的功能后,最经常有的需求就是如何做人员的轨迹回放,一般流程都是从数据库中查询轨迹坐标后,经过后台查询接口返回给前端,接下来的事情都交给JS来完成. 如果想做好一个性能好的轨迹回放 ...

  2. three.js实现3D室内全景看房

    首先我们先搭建一个项目,我选择使用vite来进行项目的搭建,执行命令如下: yarn create vite 项目名称 这样一个基本的项目就搭建成功了,目录如下所示 然后,下载一下three.js工具 ...

  3. html5 3d室内房间布局图片展示js特效

    下载地址 html5 3d室内房间布局图片展示特效 dd:

  4. three.js实现3d球体树状结构布局——添加入场、出场、点击放大等动画

    目录 系列文章 前言 新增功能 添加背景 灯光旋转动画 数据入场.出场动画 点击放大 实现效果 实现源码 相关资源 系列文章 three.js实现3d球体树状结构布局--树状结构的实现 前言 本文建议 ...

  5. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图...

    原文:[高德地图API]从零开始学高德JS API(一)地图展现--仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...

  6. 智慧医院建设新趋势-院内导航系统-医院3D室内导航系统

    随着时代经济的发展,人们的医疗需求也在上升,而现在的各大医院建筑面积动辄几万平方米,复杂的布局以及难以连续的指示标志却对就医的患者十分不友好,相信不少的小伙伴也有类似的经历.所以医疗服务的健全就变得十 ...

  7. Three.js - 走进3D的奇妙世界

    摘要:本文将通过Three.js的介绍及示例带我们走进3D的奇妙世界. 文章来源:宜信技术学院 & 宜信支付结算团队技术分享第6期-支付结算部支付研发团队前端研发高级工程师-刘琳<thr ...

  8. 政务中心3D室内导航系统

    政务中心3D室内导航系统 一.系统背景 办事者不清楚所需资料及办理窗口和路线,前往咨询台或随机询问工作人员,政务中心咨询台咨询量巨大 政务中心面积越来越大,办事窗口众多.楼层布局复杂,办事人员寻路困难 ...

  9. 3D室内导航系统技术方案

    今天和大家分享一下3D室内导航系统针对医院的解决方案,近期也在整理微信端的室内定位导航的资料,后续后空也会分享给大家,如果有兴趣的朋友可以加我QQ1563056788交流 一.系统简介 医院便民服务互 ...

  10. 3d旋转相册代码源码_原生 JS 实现 3D 立方体

    访问该URL可查看效果:http://is666a.gitee.io/javascript3d_cube/ 项目源码已上传码云:小朋友/JavaScript 3D立方体 原生 JS 实现 3D 立方体 ...

最新文章

  1. 快速适应性很重要,但不是元学习的全部目标
  2. 15 年来, 程序员升级打怪的路上,这些书始终与你并肩作战
  3. Go会接替Java,成为下一个企业级编程语言吗?
  4. wtl单文档选项_Vite 中文文档翻译
  5. 特殊表情存数据库处理
  6. 【Python】Python一些有趣而基础的知识(结合Java进行对比)
  7. Adobe illustrator 粉色背景字体是为什么 - 连载19
  8. Winform—C#读写config配置文件
  9. Rocketmq介绍和安装
  10. 25_android下文件访问的权限
  11. CrossApp 1.1.6新鲜出炉
  12. MediaWiki中的各种功能和设置
  13. 思路清晰的软光栅小引擎和四元数结合案例
  14. MySQL数据库——数据完整性(实体完整性、域完整性、参照完整性)
  15. max3490esa_MAX3096ESE+T_maxim芯片后缀tg16是什么意思
  16. 【保密知识】排查失泄密隐患 防控保密风险点
  17. 在《进击的巨人》中,你同情谁?
  18. Lightdb Pgpool-II 读写分离使用
  19. java 异步调用 事务_深入理解Spring注解@Async解决异步调用问题
  20. POJ - 3278抓牛牛

热门文章

  1. 格力电器董事长选举,董明珠当选的可能性极大
  2. 基于JavaEE的居民水电费管理系统_JSP网站设计_MySQL数据库设计
  3. ANdroid的QQ分享接入,android 集成QQ互联 (登录,分享)
  4. 基于AT89C51单片机的超声波传感器测距【程序详细代码及注释】
  5. STM32 F103之点亮LED流水灯 (STM32入门学习)
  6. 30分钟了解DNS及搭建方法
  7. 圆锥曲线的定值定点问题
  8. SEGY数据的读取与写出C++
  9. KDJ指标公式的应用要则是什么KDJ指标公式的使用技巧是什么
  10. MacOS Aria2GUI配置