three.js中的3D模型分层显示(分类型显示);使用dat.gui控制three.js中的3D模型分层显示;dat.gui调用一次但是渲染了多个

news2025/2/24 16:43:55

 

效果如上,就是可以通过dat.gui控制3D模型中仅仅显示管线或者是仅仅显示除了管线之外的模型。

1.在模型导入的时候就按照类型(分层的类别标识) 区别开(我这里是按照是否是管线)

这里是new THREE.Object3D();必须的否则会报错,以及后面再控制显隐的时候需要这个对象中的visible去控制哦

      // 加载3D模型
      const loader = new GLTFLoader();
      loader.load('/models/donghua.glb', (gltf) => {
        this.model = gltf.scene;
        this.model.children.forEach(element => {
          if (element.name.includes('Line')) {
            //将是管线的网格对象放在一起
            this.lineListModel.push(element)
          } else {
            //将不是管线的网格对象放在一起
            this.otherListModel.push(element)
          }
        });
        // 分层显示 这里是创建一个3d对象
        this.lineModel = new THREE.Object3D();
        this.otherModel = new THREE.Object3D();
        // 将类型为管网的网格对象添加到object3D对象中
        for (var i = 0; i < this.lineListModel.length; i++) {
          this.lineModel.add(this.lineListModel[i]);
        }
        // 将类型是其他的网格对象添加到object3D对象中
        for (var j = 0; j < this.otherListModel.length; j++) {
          this.otherModel.add(this.otherListModel[j]);
        }
        // 将层级添加到场景中
        this.scene.add(this.lineModel);
        this.scene.add(this.otherModel);

2.在mounted当中去初始化gui控件, 在beforeDestroy中去销毁,否则的话会出现多个gui控件

document.querySelector('.dg')是默认的类名可以直接去修改gui控件的样式

在修改显隐的时候let that = this很重要,之前一直修改不了 打印3D对象一直都是undefined,原来是this的原因

  mounted() {
    // 应用图形界面更改变量
    this.gui = new dat.GUI();
    const controls = {
      "仅显示管线": true,
      "仅显示除管线之外的其他": true,
      "全部显示": true,
    };
    let that = this
    this.gui.add(controls, '仅显示管线').onChange(function (value) {
     that.lineModel.visible=value
    });
    this.gui.add(controls, '仅显示除管线之外的其他').onChange(function (value) {
      that.otherModel.visible=value
    });
    this.gui.add(controls, '全部显示').onChange(function (value) {
      that.lineModel.visible=value
      that.otherModel.visible=value
    });
    const guiDOM = document.querySelector('.dg');
    guiDOM.style.position = 'absolute';
    guiDOM.style.top = '80px';
    guiDOM.style.left = '50px';
    guiDOM.style.zIndex = 9999;
  },
  beforeDestroy() {
    // 销毁GUI实例
    this.gui.destroy();
  }

然后就收工啦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1027813.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础学习笔记3

深度学习实践 深度学习离不开编程 深度学习离不开数学分析&#xff08;高等数学&#xff09;、线性代数、概率论等知识&#xff0c;更离不开以编程为核心的动手实践。 Python编程语言 无论是在机器学习还是深度学习中&#xff0c;Python已经成为主导性的编程语言。而且&…

OJ练习第178题——收集树中金币

收集树中金币 力扣链接&#xff1a;2603. 收集树中金币 题目描述 给你一个 n 个节点的无向无根树&#xff0c;节点编号从 0 到 n - 1 。给你整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间有一条边。再给…

计算机视觉与深度学习-全连接神经网络-训练过程-欠拟合、过拟合和Dropout- [北邮鲁鹏]

目录标题 机器学习的根本问题过拟合overfitting泛化能力差。应对过拟合最优方案次优方案调节模型大小约束模型权重&#xff0c;即权重正则化(常用的有L1、L2正则化)L1 正则化L2 正则化对异常值的敏感性随机失活(Dropout)随机失活的问题 欠拟合 机器学习的根本问题 机器学习的根…

【企业级SpringBoot单体项目模板】 —— 全局配置

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;SpringBoot、模版、企业级☀️每日 一言&#xff1a;你坚持下来了&#xff0c;而别人坚持不下来&#xff0c;这就是你的资本。 文章目录 一、全局异常配置1.1 全局异常处理1.2 处理业务异常类1.3…

如何用ate自动测试设备对DC-DC电源模块负载调整率进行测试?

电源模块负载调整率测试是功能测试之一&#xff0c;是电源模块非常重要的一项指标&#xff0c;它的大小直接影响着电源模块的整体质量。因此使用ate自动测试设备对DC-DC电源模块负载调整率进行测试是制造生产过程中至关重要的一环。 电源模块负载调整率计算公式&#xff1a; 负…

1.测试 —— 答疑篇

什么是软件测试&#xff1a; 软件测试是不是就是找 bug &#xff1f; 软件测试就是证明软件不存在错误的过程 软件测试就是为了证明程序能够正确运行 刚新买来一部手机&#xff0c;我们要干什么&#xff1f; 一场考试 , 做完一遍题目之后 , 进行一遍检查 , 就是在 "…

10个强大的 JavaScript 动画库、直接抄作业

动画&#xff0c;是吸引你客户注意的好方法之一。 在项目开发中&#xff0c;我们可以通过创造有趣的动画来为我们的项目增加视觉感与用户体验&#xff0c;同时&#xff0c;也为我们的网站增添了独特的美感&#xff0c;而且还提高了用户参与度并创造了令人难忘的第一印象。 因…

十几款IDEA开发必备的插件,新手必用

IDEA有很多优秀的插件&#xff0c;使用它们不仅大大增加了开发效率&#xff0c;也能给大家带来更好的coding体验。“工欲善其事必先利其器”&#xff0c;以下插件基本都可以通过 IDEA 自带的插件管理中心安装。 1、CodeGlance 拖动浏览代码更加方便&#xff0c;还有放大镜功能。…

C语言计算2的1024次方

C语言计算2的1024次方 迅雷有这么一道笔试题&#xff0c;编程计算2的1024次方。 所谓2的1024次方&#xff0c;就是有1024个2相乘&#xff0c;于是有些同学顺手就能写出代码&#xff1a; int main() {int reslut 1;for (int i 0; i < 1024; i){result * 2;}printf("…

Nmap(端口扫描工具)在Windows上的安装和使用,so easy

文章目录 一、下载安装图形化指引下载 二、安装使用非常简单参考文档 一、下载安装 Nmap官方下载平台 图形化指引下载 二、安装 什么都不要动&#xff0c;一直下一步 使用非常简单 参考文档 Nmap的安装与使用

搜索技术领域的“奥林匹克”,飞桨支持“第二届百度搜索创新大赛”正式启动!...

秋季&#xff0c;是丰收的季节&#xff0c;以“新搜索新奇点”为主题、由百度搜索携手英伟达联合发起&#xff0c;飞桨AI Studio星河社区支持的第二届百度搜索创新大赛&#xff0c;开赛啦&#xff01;超过60万丰厚奖金&#xff0c;十余套赛事优质课程&#xff0c;优质的竞赛交流…

屏幕分辨率dpi解析(adb 调试查看)

authordaisy.skye的博客_CSDN博客-嵌入式,Qt,Linux领域博主 ro.sf.lcd_density属性指定了这个机型使用的dpi是多少&#xff0c;dpi全称是dots per inch&#xff0c;对角线每英寸的像素点的个数。 密度 ldpi mdpi hdpi xhdpi xxhdpi 分辨率 240x320 320x480 480x800 7…

mysql Your password does not satisfy the current policy requirements

在修改密码时遇到 Your password does not satisfy the current policy requirements 原因&#xff1a;您的密码不符合当前策略要求&#xff0c;最好是把密码设置成复杂的&#xff0c;包括字母大小写、数字、特殊字符。 如果你还是先把数据库密码改简单&#xff0c;比如你本地…

解锁前端Vue3宝藏级资料 第五章 Vue 组件应用 5 (Vue 插件)

想了解Vue插件所以你看了官方文档却看不懂&#xff0c;或者你想知道Vue.use()方法和插件的关系。在本文档中&#xff0c;我们将参照文档讲解插件制作的基础知识&#xff0c;了解基础知识后&#xff0c;我们将制作与更实用的下拉菜单和脚本加载相关的插件。读完之后&#xff0c;…

白捡一个存储型XSS

本文由掌控安全学院 - 杳若 投稿 起因 利用fofa搜索时发现 org"China Education and Research Network Center" && body"/register" 任意用户注册 在找到该CMS的时候发现存在任意用户注册的情况 http://xxxx.edu.cn/student/Register.ashx …

ChatGPT技术原理

Task03 ChatGPT技术原理 目录 阶段一&#xff1a;有监督微调Supervised fine-tuning (SFT)阶段二&#xff1a;训练回报模型&#xff08;Reward Model, RM&#xff09;阶段三&#xff1a;使用强化学习微调 SFT 模型 ChatGPT 是由 GPT-3 迭代来的&#xff0c;原有的 GPT-3 可能…

HTML5+CSS3+JS小实例:鼠标控制飞机的飞行方向

实例:鼠标控制飞机的飞行方向 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" conten…

在Scrapy框架中使用隧道代理

今天我要和大家分享一些实战经验&#xff0c;教你如何在Scrapy框架中使用隧道代理。如果你是一个热爱网络爬虫的开发者&#xff0c;或者对数据抓取和处理感兴趣&#xff0c;那么这篇文章将帮助你走上更高级的爬虫之路。 首先&#xff0c;让我们简单介绍一下Scrapy框架。Scrapy…

Windows服务器设置Nginx实现分布式服务

1.安装Nginx 下载Nginx-1.16.1版本。解压到如下目录&#xff1a; 设置环境变量&#xff1a; 检查版本&#xff1a; 启动nginx.exe&#xff0c;出现黑框一闪而过&#xff0c;进程中出现如下情况代表启动成功&#xff1a; 2.搭建模拟HTTP服务 下载wiremock-standalone-2.25.1.j…

分析key原理

总结&#xff1a; key是虚拟dom对象的标识&#xff0c;当数据发生变化时&#xff0c;vue会根据新数据生成新的虚拟dom&#xff0c;随后vue进行新虚拟dom与旧虚拟dom的差异比较 比较规则&#xff1a; ①旧虚拟dom中找到了与新虚拟dom相同的key 若虚拟dom中的内容没变&#xff0c…