🍺三维数字地球GIS系列相关文章(C++)🍺:
1 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第一期
2 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第二期
3 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、glfw、glut)第三期
4 【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL)第四期
5 【小沐学GIS】基于C++绘制三维数字地球Earth(QT、OpenGL、Satellite、卫星轨道模拟)第五期
6 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenG、SolarSystem、太阳系模拟)第六期
7 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、OpenSceneGraph / OSG)第七期
8 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、二维瓦片地图)第八期
9 【小沐学GIS】基于C++绘制三维数字地球Earth(OpenGL、三维瓦片地球)第九期
10 【小沐学GIS】基于C++绘制三维数字地球Earth(osgEarth、三维瓦片地球)第十期
11 【小沐学GIS】基于C++绘制OpenStreetMap地图矢量数据(QT、OpenGL、OSM、Mapbox)第十一期
12 【小沐学GIS】基于C++绘制地形DEM(OpenGL、Terrain、TIFF、hgt)第十二期
🍺GIS系列相关辅助工具如下🍺:
1 【小沐杂货铺】GIS瓦片地图下载工具(高德/天地图/谷歌/必应/OSM/MapBox/ArcGIS)
2 【小沐杂货铺】GIS高程地形tif文件转obj/gltf三维模型工具(geotiff to obj/gltf、3d模型处理)
🍺三维数字地球GIS系列相关文章(其他语言)🍺:
1 【小沐学GIS】基于C#绘制三维数字地球Earth(C#、OpenGL)
2 【小沐学GIS】基于Python绘制三维数字地球Earth(Python、OpenGL、地球/太阳系/卫星)
3 【小沐学GIS】基于Android绘制三维数字地球Earth(Android、OpenGL)
4 【小沐学GIS】基于Golang绘制三维数字地球Earth(Go、OpenGL)
5 【小沐学GIS】基于Rust绘制三维数字地球Earth(Rust、OpenGL)
6 【小沐学GIS】基于Lua绘制三维数字地球Earth(Lua、OpenGL)
7 【小沐学GIS】基于Java绘制三维数字地球Earth(Java、OpenGL)
8 【小沐学GIS】基于Unity3d绘制三维数字地球Earth(Unity3d、OpenGL)
9 【小沐学GIS】基于Vulkan绘制三维数字地球Earth(Vulkan)
10 【小沐学GIS】基于Godot绘制三维数字地球Earth(Godot)
11 【小沐学GIS】基于VTK绘制三维数字地球Earth(VTK)
12 【小沐学GIS】基于Babylon.JS绘制三维数字地球Earth(Babylon.JS、vue、react)
🍺三维数字地球WebGIS系列相关文章(Three.JS)🍺:
1 【小沐学WebGIS】基于Three.JS绘制三维数字地球Earth(WebGL、vue、react)
2 【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第一期
3 【小沐学WebGIS】基于Three.JS绘制三维太阳系Solar System(three.js、WebGL)第二期
4 【小沐学WebGIS】基于Three.JS绘制卫星模拟Satellite Tracker(three.js、vue、react、卫星)
5 【小沐学WebGIS】基于Three.JS绘制OpenStreetMap地图矢量数据(WebGL、OSM、2d/3d)
6 【小沐学WebGIS】基于Three.JS绘制地形DEM(Three.JS、WebGL、TIFF)
7 【小沐学WebGIS】基于Three.JS绘制瓦片地图(Three.JS、WebGL、Mapbox)
8 【小沐学WebGIS】基于Three.JS绘制飞行轨迹Flight Tracker(Three.JS/ vue / react / WebGL)
9 【小沐学WebGIS】基于WebGL绘制三维数字地球Earth(WebGL、地球/卫星/航迹)
10 【小沐学WebGIS】基于WebGL绘制二三维地图地球晨昏效果(Three.JS/ vue / react )
11 【小沐学WebGIS】基于Three.JS绘制三维城市建筑(City / vue / react )
🍺Three.JS系列相关文章如下🍺:
1 【小沐杂货铺】基于Three.JS构建IFC模型浏览器(WebGL、CAD、Revit、IFC)
2 【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第1期
3 【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow)第2期
4 【小沐杂货铺】基于Three.JS绘制云图/热力图/CAE物理场渲染(Three.JS、WebGL、CAE、heatmap)
5 【小沐杂货铺】基于Three.js渲染三维风力发电机(WebGL、vue、react、WindTurbine)
6 【小沐杂货铺】基于Three.js渲染三维船舶航行仿真(WebGL、vue、react、ship/boat/vessel)
7 【小沐杂货铺】基于Three.js绘制三维管道Pipe(WebGL、vue、react)
8 【小沐杂货铺】基于Three.js绘制三维机械臂RobotArm(WebGL、vue、react)
9 【小沐杂货铺】基于Three.JS绘制三维海面/海洋/水面(WebGL / vue / react )
10 【小沐杂货铺】基于Three.JS构建三维虚拟教学实践课程(WebGL / vue / react )
11 【小沐杂货铺】基于Three.JS绘制URDF机器人模型(WebGL / vue / react )
12 【小沐杂货铺】基于Three.JS绘制动物世界Animal(WebGL / vue / react )
13 【小沐杂货铺】基于Three.js渲染三维飞行仿真Flight Simulation(WebGL / vue / react )
14 【小沐杂货铺】基于Three.js渲染三维无人机Drone(WebGL / vue / react )
🍺三维数字地球WebGIS系列相关文章(Cesium.JS)🍺:
1 【小沐学WebGIS】基于Cesium.JS绘制卫星轨迹Satellite Tracker(Cesium、vue、react)第1期
2 【小沐学WebGIS】基于Cesium.JS绘制卫星轨迹Satellite Tracker(Cesium、vue、react)第2期
3 【小沐学WebGIS】基于Cesium.JS绘制飞行轨迹Flight Tracker(Cesium/ vue / react / czml / GPX)
4 【小沐学WebGIS】基于Cesium.JS绘制雷达波束/几何体/传感器Sensor(Cesium / vue / react )
5 【小沐学WebGIS】基于Cesium.JS桌面端适配地球卫星App(Cesium.js+QT/C#/MFC/Python/Electron)
6 【小沐学WebGIS】基于Cesium.JS绘制火箭发射Rocket(Cesium、vue、react)
7 【小沐学WebGIS】基于Cesium.JS与TacView ACMI联动仿真通信(Cesium、vue、react)
🍺AI系列相关文章🍺:
1 【小沐学AI】基于AI大模型开发MCP Server服务(Cesium.JS、Three.JS、Blender)

1、简介

1.1 three.js

https://threejs.org/

Three.js 是一个基于 WebGL 的开源 JavaScript 库,用于在浏览器中创建和展示 3D 图形。它由 Ricardo Cabello(也称为 Mr.doob)于 2010 年创建,旨在简化 WebGL 的复杂性,使开发者能够轻松创建 3D 场景和交互式内容。

易用性:提供简洁的 API,降低了 WebGL 的学习门槛,无需深入了解图形学底层知识。
跨平台支持:支持所有现代浏览器,包括移动设备。
功能丰富:内置多种几何体、材质、光源、动画和交互功能。
扩展性:支持加载外部模型和纹理,以及自定义着色器。
社区活跃:拥有丰富的教程、资源和插件,便于学习和扩展。

1.2 船舶航行模拟

在 Three.js 中实现船舶航行模拟时,可采用 glTF 格式的船舶模型作为核心载体,通过加载外部模型还原船体细节,并结合动态逻辑模拟航行状态。具体实现可分为以下几个部分:

首先搭建基础场景框架,初始化 Three.js 核心组件(场景、透视相机、WebGL 渲染器),配置环境光与定向光以提升模型质感,同时引入轨道控制器(OrbitControls),支持通过鼠标交互(左键旋转视角、右键平移场景、滚轮缩放距离)灵活观察船舶细节。

其次通过 GLTFLoader 加载船舶模型,调整模型位置使其贴合虚拟水面(可通过平面几何体模拟),并为模型添加基础物理属性。

最后在动画循环(requestAnimationFrame)中,通过改变船舶的位置坐标(如沿 X 轴或 Z 轴匀速移动)模拟航行轨迹,同时可添加船体轻微摇摆(绕 X 轴或 Z 轴小角度旋转)和水面波纹动画,结合控制器的阻尼效果,实现更贴近真实航行状态的动态模拟。

2、代码测试

2.1 代码1

代码编号: A10_1_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面行驶
在这里插入图片描述
在这里插入图片描述

2.2 代码2

代码编号: A10_2_ThreeJS_ShipSimulation_js_vite
关键词: three.js绘制船舶海面行驶,小岛,漂浮物

在这里插入图片描述
在这里插入图片描述

2.3 代码3

代码编号: A10_3_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面行驶,小岛
在这里插入图片描述
在这里插入图片描述

2.4 代码4

代码编号: A10_4_ThreeJS_ShipSimulation_js_app
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.5 代码5

代码编号: A10_5_ThreeJS_ShipSimulation_js_webpack
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.6 代码6

代码编号: A10_6_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.7 代码7

代码编号: A10_7_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.8 代码8

代码编号: A10_8_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述

2.9 代码9

代码编号: A10_9_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.10 代码10

代码编号: A10_10_ThreeJS_ShipSimulation_js_game
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.11 代码11

代码编号: A10_11_ThreeJS_ShipSimulation_js_vite_BoatPhysics3D
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.12 代码12

代码编号: A10_12_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述
在这里插入图片描述

2.13 代码13

代码编号: A10_13_ThreeJS_ShipSimulation_js
关键词: three.js绘制船舶海面
在这里插入图片描述

结语

如果您觉得这些文字有一点点用处,请给作者点个赞;╮( ̄▽ ̄)╭
如果您有技术问题探讨,评论处留言。//(ㄒoㄒ)//
谢谢各位童鞋们啦( ´ ▽ ` )ノ ( ´ ▽ `` )っ!
更多精彩文章详见微信公众号:爱阅读的小沐

如需技术探讨 / 软件定制 / 代码分享,请加文章末尾的微信公众号或QQ!
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐