Three.js+Vue3+Vite应用lil-GUI调试开发3D效果(三)
前期文章中我们完成了创建第一个场景、添加轨道控制器的功能,接下来我们继续阐述其他的功能,本篇文章中主要讲述如何应用lil-GUI调试开发3D效果,在开始具体流程和步骤之前,请先查看之前的内容,因为该功能必须在前期内容的基础上才可完成。
目录
一、GUI界面概述
二、GUI使用
1.导入GUI
2.创建一个对象
3.创建GUI
4.应用GUI
5.控制立方体位置
(1)直接显示法
(2)最大值、最小值法
(3)添加folder法
(4)添加change事件

一、GUI界面概述
GUI,全称Graphical User Interface,即图形化用户界面,它是众多程序,特别是上位机软件中不可或缺的一部分。通过GUI,用户只需进行简单的点击和操作,就能轻松调用底层的复杂代码,极大地提升了使用的便捷性和结果的直观展示性。
当我们完成了底层代码的开发后,接下来就可以着手构建一个GUI界面了。这个界面就像是一个精美的包装,它能够将我们的程序功能以更加友好、直观的方式呈现给用户。用户通过GUI,可以轻松地与程序进行交互,无需深入了解底层的复杂逻辑。
二、GUI使用
本章中只阐述GUI的相关内容,之前的代码就不在进行书写,接下来我们在代码中使用GUI
1.导入GUI
//导入lil.gui
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min'
2.创建一个对象
这里我们应用显示全屏和退出全屏的案例来展示如何使用改功能
//创建显示全屏和退出全屏对象
const eventObj = ref({//显示全屏showFullScreen: function () {document.body.requestFullscreen()},//退出全屏exitFullScreen: function () {document.exitFullscreen()}
})
3.创建GUI
//创建guiconst gui = new GUI()
4.应用GUI
这里使用刚刚创建的显示全屏,退出全屏为例
//添加控制器--显示全屏gui.add(eventObj.value, 'showFullScreen').name('全屏')//添加控制器--退出全屏gui.add(eventObj.value, 'exitFullScreen').name('退出全屏')
以下是实现效果,我们可以看见右上角有个controls控制按钮

5.控制立方体位置
在上面代码的基础上我们继续添加,这里拿控制立方体为例,我们具体的写法分了几种,下面一一介绍
(1)直接显示法
//控制立方体的位置---(-20,20)是范围--第一种写法// gui.add(cube.position, 'x', -20, 20).name('立方体x轴')
(2)最大值、最小值法
//第二种写法---移动范围最小值是-20,最大值是20,步长为1// gui.add(cube.position, 'x').min(-20).max(20).step(1).name('立方体x轴')
(3)添加folder法
添加folder写法可以将其作为一个文件夹,能添加多个控制器
//添加folder写法const foldder = gui.addFolder('立方体')foldder.add(cube.position, 'x').min(-20).max(20).step(1).name('x轴')//y轴位置foldder.add(cube.position, 'y').min(-20).max(20).step(1).name('y轴')//z轴位置foldder.add(cube.position, 'z').min(-20).max(20).step(1).name('z轴')
(4)添加change事件
这里还可以继续在后面添加change事件,以便于实时更新立方体位置
//x轴位置---onChange事件是立即更新的,onFinishChange事件是鼠标松开更新的foldder.add(cube.position, 'x').min(-20).max(20).step(1).name('x轴').onChange(val => {console.log('立方体x轴位置改变', val)})//y轴位置foldder.add(cube.position, 'y').min(-20).max(20).step(1).name('y轴').onFinishChange(val => {console.log('立方体y轴位置改变', val)})//z轴位置foldder.add(cube.position, 'z').min(-20).max(20).step(1).name('z轴')

(5)调节立方体颜色
根据上述的方法,我们这里在做个能通过GUI面板快速调节立方体颜色的小功能,首先我们先设置父元素材质为线框模式
//设置父元素材质为线框模式parentMaterial.wireframe = true
然后利用gui改变改变父元素材质
//改变父元素材质--判断是布尔值gui.add(parentMaterial, 'wireframe').name('父元素材质')
如果也想要改变子元素的材质,先定义一个颜色对象
//改变子元素材质let colorParams = {cubeColor: '#0x00ff00'}
然后也是同样的利用GUI
//给立方体添加颜色gui.addColor(colorParams, 'cubeColor').name('立方体颜色').onChange(val => {console.log(val, 'vvvv')//点击颜色修改cube的颜色cube.material.color.set(val)})
相关文章:
Three.js+Vue3+Vite应用lil-GUI调试开发3D效果(三)
前期文章中我们完成了创建第一个场景、添加轨道控制器的功能,接下来我们继续阐述其他的功能,本篇文章中主要讲述如何应用lil-GUI调试开发3D效果,在开始具体流程和步骤之前,请先查看之前的内容,因为该功能必须在前期内容…...
K8S集群常用命令
1,查看pod kubectl get pods -A 查看所有的pod kubectl get pods 这个只查看namespace为default下的pod,也就是只查看默认命名空间下的pod kubectl get pod -A -o wide 查看所有的pod,并且放出的信息更全(包含了pod的ip࿰…...
【优先算法】滑动窗口--(结合例题讲解解题思路)(C++)
目录 1. 例题1:最大连续1的个数 1.1 解题思路 1.2代码实现 1.3 错误示范如下:我最开始写了一种,但是解答错误,请看,给大家做个参考 2. 将 x 减到 0 的最小操作数 2.1解题思路 2.2代码实现 1. 例题1ÿ…...
mayavi -> python 3D可视化工具Mayavi的安装
前言 Mayavi是一个基于VTK(Visualization Toolkit)的科学计算和可视化工具,主要用于数据可视化和科学计算领域。 它提供了一系列的高级可视化工具,包括2D和3D图形、表面和体积渲染、流场可视化等。Mayavi可以通过Python脚本进行调…...
【C++】B2112 石头剪子布
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目描述游戏规则:输入格式:输出格式:输入输出样例:解题分析与实现 💯我的做法实现逻辑优点与不足 💯…...
【Vue】vue3 video 保存视频进度,每次进入加载上次的视频进度
使用 localStorage 存储每个视频的播放进度在组件加载时恢复上次的播放进度在视频播放过程中实时保存进度在组件卸载前保存最终进度使用 timeupdate 事件来监听视频播放进度的变化 在模板中为视频元素添加事件监听: <videoloopautoplaycontrols:id"video_…...
C# 25Dpoint
C# 25Dpoint ,做一个备份 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace _25Dpoint {public partial cl…...
如何制作一个高质量的 Dockerfile 镜像:从入门到实践
Docker 是一种轻量级的容器化技术,能够将应用程序及其依赖打包到一个可移植的容器中。Dockerfile 是构建 Docker 镜像的核心文件,它定义了镜像的构建步骤和配置。通过编写 Dockerfile,我们可以自动化地构建镜像,确保应用程序在不同…...
Linux 机器学习
Linux 机器学习是指在 Linux 操作系统环境下进行机器学习相关的开发、训练和应用。 具体步骤 环境搭建: 选择合适的 Linux 发行版:如 Ubuntu、Fedora、Arch Linux 等。Ubuntu 因其易用性和丰富的软件包管理系统,适合初学者;Fed…...
青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据
青少年编程与数学 02-006 前端开发框架VUE 25课题、UI数据 一、UI数据二、Element Plus处理响应式数据三、Vuetify处理响应式数据 课题摘要:本文探讨了UI数据在用户界面中的重要性和处理方法。UI数据包括展示数据、用户输入、状态数据等,对用户体验和应用交互性有直…...
css实现响应式详解
一、媒体查询(Media Queries) 基本概念 媒体查询是 CSS3 中用于根据不同的设备特性(如屏幕宽度、高度、设备类型等)应用不同样式规则的技术。它允许你为特定的媒体类型(如屏幕、打印、手持设备等)和条件&a…...
python-应用自动化操作方法集合
python-PC应用自动化操作 pywinauto:适合Windows系统的软件(GUI),通过遍历窗口(对话框)和窗口里的UI控件进行定位操作,也可以控制鼠标和键盘输入等 https://geekdaxue.co/read/pywinauto-doc-zh…...
mac地址是用来做什么的
MAC 地址(Media Access Control Address)是一个唯一的硬件地址,用于在网络中标识设备。每个网络接口卡(NIC)都有一个唯一的 MAC 地址。MAC 地址是数据链路层(OSI模型的第二层)使用的地址&#x…...
【Compose multiplatform教程】05 IOS环境编译
了解如何使现有的 Android 应用程序跨平台,以便它在 Android 和 iOS 上都能运行。您将能够在一个位置编写代码并针对 Android 和 iOS 进行测试一次。 本教程使用一个示例 Android 应用程序,其中包含用于输入用户名和密码的单个屏幕。凭证经过验证并保存…...
3D滤波器处理遥感tif图像
import cv2 import numpy as np from osgeo import gdal# 定义 Gabor 滤波器的参数 kSize 31 # 滤波器核的大小 g_sigma 3.0 # 高斯包络的标准差 g_theta np.pi / 4 # Gabor 函数的方向 g_lambda 10.0 # 正弦波的波长 g_gamma 0.5 # 空间纵横比 g_psi np.pi / 2 # …...
fisco bcosV3 Table智能合约开发
环境 : fisco bcos 3.11.0 webase-front : 3.1.1 console 3.8.0 table合约【3.2.0版本后的】 前言 最近在做毕设,数据的存储方式考虑使用fisco-bcos的table表存储,经过这几天的研究,发现对于fisco2和 fisco3版本的table表合约功能…...
leetcode刷题记录(四十八)——128. 最长连续序列
(一)问题描述 128. 最长连续序列 - 力扣(LeetCode)128. 最长连续序列 - 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复…...
HTML中如何保留字符串的空白符和换行符号的效果
有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} , HTML中想要保留 \n的换行效果的有下面3种方法: 1、style 中 设置 white-space: pre-lin…...
Linux入门——环境基础开发(上)
Linux 软件包管理器 yum 什么是软件包 在Linux操作系统中,安装软件的方式通常较为复杂,其基本流程涉及下载程序源代码并通过编译得到可执行程序。然而,这种方法需要开发者具备一定的编程知识和环境配置能力,对于许多用户而言&am…...
c++类和对象---下
文章目录 一、类的静态成员 1.1.静态成员变量:所有对象共享的成员变量。 1.2.静态成员函数:可以访问静态成员变量,但不能访问非静态成员变量。 二、类的继承 2.1.继承:子类继承父类的成员变量和成员函数。 2.2.多态:基…...
MCP Server生产级配置:Playwright与LLM集成的避坑指南
1. 这不是又一个“Playwright入门教程”,而是一份能直接塞进CI流水线的MCP Server生产级配置实录你有没有遇到过这样的场景:团队刚决定用AI驱动自动化测试,技术选型会上大家一致看好Playwright MCP(Model Context Protocol&#…...
手把手教你为WCH CH582移植CherryUSB主机栈(基于RT-Thread,含中断优化)
基于RT-Thread的WCH CH582 USB主机协议栈深度移植指南在嵌入式开发领域,USB主机功能的实现往往意味着设备能够直接连接各类USB外设,从简单的键盘鼠标到复杂的存储设备。对于使用WCH CH582这类RISC-V内核MCU的开发者而言,原厂SDK提供的USB主机…...
基于ESP8266与MQTT的家庭水压自动控制系统设计与实现
1. 项目概述与核心需求解析家里水压不稳、供水时断时续,这大概是很多朋友都遇到过的烦心事。我所在的城市供水情况就很不理想,为了解决这个问题,我不得不自己动手,搭建了一套基于ESP8266微控制器的家庭水压增压与储水自动控制系统…...
Graphin高级应用:结合GISDK构建配置化图分析模块的完整指南
Graphin高级应用:结合GISDK构建配置化图分析模块的完整指南 【免费下载链接】Graphin 🌌 A React toolkit for graph visualization based on G6. 项目地址: https://gitcode.com/gh_mirrors/gr/Graphin 在当今数据驱动的时代,图可视化…...
如何用HsMod解锁炉石传说60+项隐藏功能:终极优化指南
如何用HsMod解锁炉石传说60项隐藏功能:终极优化指南 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx开发的炉石传说功能增强插件,为玩家提供…...
Windows Cleaner:终极免费系统清理工具,彻底解决C盘空间不足问题
Windows Cleaner:终极免费系统清理工具,彻底解决C盘空间不足问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘爆红、…...
万星easy-vibe:描述需求即发布 零基础无需学语法
开源Easy-Vibe是一套开源AI编程学习方案,把学习顺序从先学语法再做项目翻转为直接做项目。文章拆解了项目驱动、提示词编写、AI编辑器和多Agent协作的完整流程,解释了为什么想法比语法更重要。 github上datawhalechina/easy-vibe:它在GitHub…...
AutoWall终极指南:如何在Windows上轻松设置炫酷动态壁纸
AutoWall终极指南:如何在Windows上轻松设置炫酷动态壁纸 【免费下载链接】AutoWall 🌌 Live wallpapers on Windows 7/8/10/11 using open-source wallpaper engine 项目地址: https://gitcode.com/gh_mirrors/au/AutoWall 厌倦了千篇一律的静态桌…...
对比不同模型在创意生成任务中的效果与token消耗差异
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比不同模型在创意生成任务中的效果与token消耗差异 在为一场创意大赛准备素材时,我们面临一个常见的选择:…...
WarcraftHelper:让经典魔兽争霸3完美适配现代电脑的终极解决方案
WarcraftHelper:让经典魔兽争霸3完美适配现代电脑的终极解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为魔兽争霸3在现代操…...
