1️⃣5️⃣three.js_GUI辅助调试器

15、GUI辅助调试器

  • 3D虚拟工厂在线体验

  • GUI辅助调试器将原本需要修改代码调整参数并刷新页面的操作,简化为直接在GUI中实时调整,实现所见即所得的效果。

  • 导入GUI 库

    //引入GUI辅助调试器
    import { GUI } from 'three/addons/libs/lil-gui.module.min.js'
    
  • 创建GUI辅助调试器对象

    const gui = new GUI() // 实例化一个gui对象
    gui.domElement.style.right = '0px' //靠右
    gui.domElement.style.width = '300px' //宽度
    
  • 修改 JavaScript 对象tempPosition的参数

     const tempPosition = {x: 30,y: 60,z: 50,};// gui界面上增加交互界面,改变tempPosition对应属性gui.add(tempPosition, 'x', 0, 100);gui.add(tempPosition, 'y', 0, 100);gui.add(tempPosition, 'z', 0, 100);
    

    ✅执行结果:
    请添加图片描述

  • 当前修改的tempPosition作为中间变量的方式会同步更新项目中多处引用,这种间接操作不够直观。

  • 我们将改为直接绑定大树。

        //先定位大树1,并克隆、移动、加入场景const tempScene = scene.children.find((t) => t.name == 'Scene')const tempTree = tempScene.children.find((t) => t.name == '树')const tempBigTree = tempTree.children.find((t) => t.name == '大树1')const newTree = tempBigTree.clone()newTree.translateX(100)newTree.translateZ(50)tempTree.add(newTree)// 位置分组const positionFolder = gui.addFolder('位置');positionFolder.add(newTree.position, 'x', -500, 500).name('X坐标');positionFolder.add(newTree.position, 'y', -10, 100).name('Y坐标');positionFolder.add(newTree.position, 'z', -100, 100).name('Z坐标');positionFolder.open(); // 默认展开// 缩放分组const scaleFolder = gui.addFolder('缩放');scaleFolder.add(newTree.scale, 'x', 0.1, 3).name('X轴').step(0.1);scaleFolder.add(newTree.scale, 'y', 0.1, 3).name('Y轴').step(0.1);scaleFolder.add(newTree.scale, 'z', 0.1, 3).name('Z轴').step(0.1);// 颜色控制const colorParams = {color: `#${newTree.children[0].material.color.getHexString()}`};const appearanceFolder = gui.addFolder('外观');appearanceFolder.addColor(colorParams, 'color').name('树叶颜色').onChange((value) => {newTree.children[0].material.color.set(value);});appearanceFolder.add(newTree.children[0].material, 'wireframe').name('线框模式');appearanceFolder.add(newTree.children[0].material, 'transparent').name('透明');appearanceFolder.add(newTree.children[0].material, 'opacity', 0, 1).name('透明度').step(0.1);// 旋转控制const rotationFolder = gui.addFolder('旋转');rotationFolder.add(newTree.rotation, 'y', 0, Math.PI * 2).name('Y轴旋转').step(0.1);// 添加重置按钮const resetControls = {reset: function() {newTree.position.set(0, 0, 0);newTree.scale.set(1, 1, 1);newTree.rotation.set(0, 0, 0);newTree.children[0].material.color.set(0x00ff00); // 默认绿色 gui.updateDisplay();// 更新 GUI 控件}};gui.add(resetControls, 'reset').name('重置所有设置');
    

    ✅执行结果:

    请添加图片描述

  • 这里将参数分为四组:位置、缩放、颜色和旋转。每组包含一个或多个控制,调整这些控制时,大树的形态会实时更新,无需修改代码,直接在 GUI 中即可完成调整。

  • 点击【专栏目录】查看专栏其他内容。

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

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

相关文章

Redis 的指令执行方式:Pipeline、事务与 Lua 脚本的对比

Pipeline 客户端将多条命令打包发送,服务器顺序执行并一次性返回所有结果。可以减少网络往返延迟(RTT)以提升吞吐量。 需要注意的是,Pipeline 中的命令按顺序执行,但中间可能被其他客户端的命令打断。 典型场景&…

Linux下的网络管理配置

一、 IPv4原理 IPv4(Internet Protocol version 4),采用32位地址。IPv4地址通常用点分十进制表示,如 192.168.1.10。 IPv4网络通信基于数据包交换原理,当一台主机要向另一台主机发送数据时,会将数据分割成…

基于Python(Django)+SQLite实现(Web)校园助手

校园助手 本校园助手采用 B/S 架构。并已将其部署到服务器上。在网址上输入 db.uplei.com 即可访问。 使用说明 可使用如下账号体验: 学生界面: 账号1:123 密码1:123 账户2:201805301348 密码2:1 # --------------…

unity动态骨骼架设+常用参数分享(包含部分穿模解决方案)

Unity骨骼物理模拟插件Dynamic Bone Dynamic Bone 可用于对角色的骨骼(bones)或者铰链系统(joints)施加物理效果。 物理效果可以使得游戏角色的头发、衣服、胸部或者是其他的任何部位,都可以以近似真实的状态运动。 …

科技天眼守望农田:珈和卫星遥感监测赋能智慧农业,护航粮食安全新未来

农情监测与粮食安全密切相关,以往农作物的长势、环境、病虫害、灾情等相关数据和图像信息都是靠物联网硬件及县、镇、村等人力来完成,不仅要耗费大量人力、物力,而且数据时效性、准确性较差。珈和科技开发建设农情遥感监测系统,运…

【TeamFlow】4.2 Yew库详细介绍

Yew 是一个用于构建高效、交互式前端 Web 应用程序的现代 Rust 框架,它借鉴了 React 和 Elm 等框架的设计理念,同时充分利用 Rust 的语言特性。 核心特性 基于组件的架构 Yew 采用组件化开发模式,类似于 React: 组件是可重用的 UI 构建块 …

毕设 - 数字孪生智慧农场(vue+高德地图)项目分享

感兴趣的同学可以私信我或者在下方添加我的qq 在线地址: 数字孪生智慧农场

深入理解 VMware 虚拟机网络模式:为虚拟化管理铺平道路

随着云计算和虚拟化技术的快速发展,VMware作为行业领军者,在企业的IT基础设施中扮演着越来越重要的角色。无论是开发、测试还是生产环境,虚拟机(VM)都成为了我们不可或缺的工具。在VMware中,网络是虚拟机能…

安恒安全渗透面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

代码随想录算法训练营第五十三天 | 105.有向图的完全可达性 106.岛屿的周长

105.有向图的完全可达性 题目链接:101. 孤岛的总面积 文章讲解:代码随想录 视频讲解:图论:岛屿问题再出新花样 | 深搜优先搜索 | 卡码网:101.孤岛总面积_哔哩哔哩_bilibili 思路: 1.确认递归函数&…

蓝桥杯 18.分考场

分考场 原题目链接 题目描述 有 n 个人参加某项特殊考试。 为了公平,要求任何两个认识的人不能分在同一个考场。 你的任务是求出最少需要分几个考场才能满足这个条件。 输入描述 第一行:一个整数 n,表示参加考试的人数(1 ≤…

分布式光纤测温技术让森林火灾预警快人一步

2025年春季,多地接连发生森林火灾,累计过火面积超 3万公顷。春季历来是森林草原火灾易发、多发期,加之清明节已到来,生产生活用火活跃,民俗祭祀用火集中,森林火灾风险进一步加大。森林防火,人人…

前端笔记-Vue3(上)

学习参考视频:尚硅谷Vue3入门到实战,最新版vue3TypeScript前端开发教程_哔哩哔哩_bilibili vue3学习目标: VUE 31、Vue3架构与设计理念2、组合式API(Composition API)3、常用API:ref、reactive、watch、c…

如何增加 Elasticsearch 中的 primary shard 数量

作者:来自 Elastic Kofi Bartlett 探索增加 Elasticsearch 中 primary shard 数量的方法。 更多阅读: Elasticsearch:Split index API - 把一个大的索引分拆成更多分片 Elasticsearch:通过 shrink API 减少 shard 数量来缩小 El…

基于SA模拟退火算法的车间调度优化matlab仿真,输出甘特图和优化收敛曲线

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于SA模拟退火算法的车间调度优化matlab仿真,输出甘特图和优化收敛曲线。输出指标包括最小平均流动时间,最大完工时间,最小间隙时间。 2…

Spring_MVC 快速入门指南

Spring_MVC 快速入门指南 一、Spring_MVC 简介 1. 什么是 Spring_MVC? Spring_MVC 是 Spring 框架的一个模块,用于构建 Web 应用程序。它基于 MVC(Model-View-Controller)设计模式,将应用程序分为模型(M…

爬虫获取sku信息需要哪些库

在使用 Python 爬虫获取淘宝商品的 SKU 详细信息时,通常需要以下几种库来完成任务。这些库各有其用途,可以帮助你更高效地实现爬虫功能。 1. requests 用途:用于发送 HTTP 请求,获取网页内容。 安装: bash pip insta…

赛灵思Xilinx FPGa XCKU15P‑2FFVA1156I AMD Kintex UltraScale+

XCKU15P‑2FFVA1156I 是 AMD Kintex UltraScale 系列中的高性能 FPGA,基于 16 nm FinFET UltraScale 架构 制造,兼顾卓越的性能与功耗比,该器件集成 1,143,450 个逻辑单元和 82,329,600 位片上 RAM,配备 1,968 个 DSP 切片&#…

从规则到大模型:知识图谱信息抽取实体NER与关系RE任务近10年演进发展详解

摘要: 本文回顾了关系抽取与实体抽取领域的经典与新兴模型,清晰地梳理了它们的出现时间与核心创新,并给出在 2025 年不同资源与场景下的最佳实践推荐。文章引用了 BiLSTM‑CRF、BiLSTM‑CNN‑CRF、SpanBERT、LUKE、KnowBERT、CasRel、REBEL、UIE,大模型抽取 等模型的原始论…

基于Django实现农业生产可视化系统

基于Django实现农业生产可视化系统 项目截图 登录 注册 首页 农业数据-某一指标表格展示 农业数据-某一指标柱状图展示 农业数据-某一指标饼状图展示 气候数据-平均气温地图展示 气候数据-降水量合并图展示 后台管理 一、系统简介 农业生产可视化系统是一款基于DjangoMVTMyS…