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

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

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,源码和模型


相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
5月前
|
人工智能 数据可视化 安全
Java带可视化数据大屏的物联网智慧工地系统源码
通过现场AI智能视频监控、临时设施动态管理,实时检测场地空间、资源、设施的运行状况,及时发现场地安全隐患,确保为工人营造一个安全、文明的场地作业环境。
62 0
|
1月前
|
人工智能 监控 数据可视化
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
94 0
|
9月前
|
监控 数据可视化 物联网
Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤
基于微服务+Java+Spring Cloud Vue +UniApp +MySql实现的智慧工地云平台源码
93 1
|
10月前
|
数据采集 JSON 监控
Zabbix物联网可视化开发文档
Zabbix物联网可视化开发文档
96 1
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
768 0
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
传感器 监控 数据可视化
IoT Studio 物联网可视化应用搭建开发实践
阿里云 IoT Studio 物联网可视化应用搭建开发实践
22633 4
IoT Studio 物联网可视化应用搭建开发实践
|
数据可视化 物联网
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
668 0
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(二)
Threejs物联网,养殖场3D可视化(二)
324 0
Threejs物联网,养殖场3D可视化(二)
|
2天前
|
存储 安全 物联网
未来交织:区块链、物联网与虚拟现实的技术融合与应用革新
【5月更文挑战第9天】 随着科技的迅猛发展,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐渗透到我们生活的各个角落。这些技术不仅单独发展,而且越来越多地相互融合,催生出新的应用场景和商业模式。区块链技术以其去中心化和不可篡改的特性,为数据安全提供了坚实的保障;物联网通过智能化连接日常设备,极大地提升了生活和工作效率;而虚拟现实则通过沉浸式体验,改变了人们的娱乐和学习方式。本文将探讨这些技术的发展趋势,并分析它们在不同领域的结合应用,从而描绘出一个由新技术驱动的未来蓝图。
|
2天前
|
安全 物联网 区块链
未来技术的融合潮流:区块链、物联网与虚拟现实的交汇点
【5月更文挑战第9天】 在数字化时代的浪潮中,新技术不断涌现,重塑着商业模式、社会互动和日常生活。本文聚焦于三项前沿技术——区块链、物联网(IoT)和虚拟现实(VR),探讨它们各自的发展趋势以及如何相互交织,共同构建一个更加智能、安全和沉浸式的未来世界。通过分析每项技术的核心优势和潜在挑战,文章描绘了一个多技术融合的应用蓝图,旨在为读者提供一个关于这些技术如何联合起来改变未来世界的清晰视角。
15 5

相关产品

  • 物联网平台