Threejs物联网,养殖场3D可视化(一)

9 篇文章 4 订阅

1,介绍

该示例使用的是 r95版本Three.js库。

主要实现功能:引用养殖场模型进行展示。效果图如下:

 

2,主要说明 

养殖场3D展示主要使用OBJLoader和MTLLoader加载模型并直接赋予材质进行展示。

 引入模型代码如下:

  3,源码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Threejs物联网,养殖场3D可视化</title>
		<meta charset="utf-8">
		<script type="text/javascript" src="libs/three.js"></script>
		<script type="text/javascript" src="libs/OrbitControls.js"></script>

		<script type="text/javascript" src="libs/OBJLoader.js"></script>
		<script type="text/javascript" src="libs/MTLLoader.js"></script>
		<style>
			body {
				margin: 0;
				overflow: hidden;
			}
		</style>
	</head>
	<body>
		<div id="dom"></div>
		<script type="text/javascript">
			var camera;
			var renderer;
			var mesh;

			function init() {
				// 创建一个场景,它将包含我们所有的元素,如物体,相机和灯光。
				var scene = new THREE.Scene();

				var urls = [
					'assets/textures/posx.jpg',
					'assets/textures/negx.jpg',
					'assets/textures/posy.jpg',
					'assets/textures/negy.jpg',
					'assets/textures/posz.jpg',
					'assets/textures/negz.jpg'
				];

				var cubeLoader = new THREE.CubeTextureLoader();
				scene.background = cubeLoader.load(urls);

				// 创建一个摄像机,它定义了我们正在看的地方
				camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 30000);
				// 将摄像机对准场景的中心
				camera.position.x = 5500;
				camera.position.y = 3000;
				camera.position.z = 2000;
				camera.lookAt(scene.position);
				var orbit = new THREE.OrbitControls(camera);

				// 创建一个渲染器并设置大小,WebGLRenderer将会使用电脑显卡来渲染场景
				// initialize basic renderer
				renderer = new THREE.WebGLRenderer({
					antialias: true,
					logarithmicDepthBuffer: true,
				});
				renderer.setSize(window.innerWidth, window.innerHeight);

				// 添加环境光
				scene.add(new THREE.AmbientLight("#ffffff", 1.5));
				// 将呈现器的输出添加到HTML元素
				document.getElementById("dom").appendChild(renderer.domElement);

				// 在屏幕上显示坐标轴
				var axes = new THREE.AxesHelper(10000);
				// scene.add(axes);

				initModel();

				// 启动动画
				renderScene();

				// 添加模型
				function initModel() {
					var mtlLoader = new THREE.MTLLoader();
					mtlLoader.setPath("assets/models/obj_mtl/")
					mtlLoader.load('yangzhichang.mtl', function(materials) {
						materials.preload();

						var objLoader = new THREE.OBJLoader();
						objLoader.setMaterials(materials);
						objLoader.load('assets/models/obj_mtl/yangzhichang.obj', function(object) {
							mesh = object;
							object.traverse(function(node) {
								if (node.material) {
									node.material.side = THREE.DoubleSide;
								}
							});
							scene.add(mesh);
						});
					});
				}
				
				document.addEventListener('click', onDocumentMouseDown, false);
				
				function onDocumentMouseDown(event) {
					// 点击屏幕创建一个向量
					var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window
						.innerHeight) * 2 + 1, 0.5);
					vector = vector.unproject(camera); // 将屏幕的坐标转换成三维场景中的坐标
					var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
					var intersects = raycaster.intersectObjects(mesh, true);
					if (intersects.length > 0) {
						var name = intersects[0].object.name;
						var obj = scene.getObjectByName(name);
						console.log(obj)
						scene.remove(obj);
					}
				}

				function renderScene() {
					orbit.update();
					requestAnimationFrame(renderScene);
					renderer.render(scene, camera);
				}

				// 渲染的场景
				renderer.render(scene, camera);
			}
			window.onload = init;

			function onResize() {
				camera.aspect = window.innerWidth / window.innerHeight;
				camera.updateProjectionMatrix();
				renderer.setSize(window.innerWidth, window.innerHeight);
			}
			// 监听调整大小事件
			window.addEventListener('resize', onResize, false);
		</script>
	</body>
</html>

 4,下载

使用threejs渲染养殖场模型源码,养殖场模型obj+mtl格式,threejs模型Threejs渲染obj+mtl模型,Threejs加载3D工厂模型Threejs实现引入工厂模型更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/baidu_29701003/54823032

5,源码和模型

需要完整代码、模型或者其他源码,请进入博客首页查看其他文章或者留言

联系我微信:1171053128

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: three.js物联网3d可视化是一种现代化的技术,利用三维模型和图形化界面来展示物联网设备的数据和状态。对于粮仓等储藏性质的设备而言,可采用这种技术进行实时的监控和管理,从而极大的提升了粮仓的运维效率和安全性。 粮仓案例源码是基于three.js物联网3d可视化技术开发的,利用现代化的WebGL技术,实现了粮仓3d可视化界面的设计和搭建。该源码采用基于前端技术的开发方式,充分发挥Web端数据和可视化交互性的优势。 该源码提供了丰富的功能模块,包括粮仓结构的构建、粮仓温湿度数据的采集、数据的可视化展示和粮仓灾害预警等功能。通过该源码,用户可以实现多种交互式操作,包括缩放、旋转、拖拽等,来实时查看粮仓内部的情况,提高数据的可视化程度。 综上所述,粮仓案例源码为用户提供了一种高效、可靠的监控和管理方式,有助于提升粮仓运维的效率、安全性和可靠性。该技术在粮仓等储藏性质的行业应用广泛。 ### 回答2: 物联网3D可视化技术在实际应用中,与人们的生活息息相关。其中,粮仓案例源码是一个非常实用的应用案例。 该案例源码基于Three.js开发,可以在浏览器中通过3D可视化展示粮食仓库的储存情况。通过该案例,我们可以清晰地了解到每一个仓库中的粮食储量情况,从而可以方便地管理粮食的存储、领取以及补充等方面。 在该案例中,设计师采用了人性化的UI设计,使得用户可以轻松地进行各项操作。同时,其交互操作也非常简单自然。不仅如此,该案例的源码还非常规范,代码结构相当清晰,便于阅读与修改。值得一提的是,该案例也有详细的开发文档,为有意愿学习或者开发的用户提供了很好的指导。 总体来说,该粮仓案例源码是一个具有实践意义的案例,其代码规范、可读性以及人性化的UI,都体现了其开发者的专业素养和工作态度,是物联网3D可视化技术方面的一个难得的优秀案例。 ### 回答3: 粮仓案例是利用three.js技术实现的一种物联网3D可视化方案。这种方案主要是针对对粮仓的物理参数进行数据采集和计算,然后通过传感器将数据发送到控制器,控制器可将数据转换为3D可视化图像。这种方案可用于实时监测粮仓内温度、湿度、质量等参数,及时发现异常情况并进行处理。 源码方面,这个项目主要使用了JavaScript编程语言和three.js库进行开发。整个项目代码非常详细,包括三维建模、数据采集、传感器接口配置、数据可视化等多个部分。此外,源码还提供了详细的说明和注释,方便技术人员进行开发和调试。 这个案例的优势在于它结合了物联网3D可视化技术。通过物联网,可以实现对粮仓内多参数的实时监测和数据采集;而通过three.js库,可以将这些采集到的数据转换为生动的3D模型,提供更好的可视化效果。此外,这个案例还具有高度的可扩展性和可定制性,可以针对不同行业和应用场景进行定制开发。 总之,这个案例是物联网3D可视化技术的有力实践,推动了这两种技术的结合与发展,对于实现智能化系统具有重要意义。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左本Web3D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值