Threejs入门之十八:GUI调试器的使用

这篇具有很好参考价值的文章主要介绍了Threejs入门之十八:GUI调试器的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

GUI是图形用户界面(Graphical User Interface)的简写,为了方便我们在编写代码时对相机、灯光等对象的参数进行实时调节,Threejs为我们提供了GUI库,使用它,可以快速创建控制三维场景的UI交互界面;threejs三维空间的很多参数都需要通过GUI的方式调试出来。这里我们仍然以上一节中的代码为例来详细了解下GUI库
要使用GUI库,我们首先需要引入GUI库
1.引用GUI库

// 引入GUI
import { GUI } from 'three/addons/libs/lil-gui.module.min.js'

2.创建GUI对象

// 实例化一个gui对象
const gui = new GUI()

这样就在页面上创建了一个GUI控件,我们在上一节课的基础上创建GUI后,发现在页面右上角出现了一个Controls控件
threejs的gui,ThreeJS,javascript,html5,前端,3d
为了后面观察方便,这里我们给上一节中的聚光灯添加聚光灯的辅助类

const spotLightHelper = new THREE.SpotLightHelper(sportLight)
scene.add(spotLightHelper)

threejs的gui,ThreeJS,javascript,html5,前端,3d
.add()方法
.add()方法用于向GUI中添加要控制的对象及其属性,它有四个参数
.add(控制对象,对象具体属性,属性参数最小值,属性参数最大值)
比如我们要通过GUI实时控制聚光灯的angle属性,添加如下代码

gui.add(sportLight, 'angle', 0,  Math.PI / 2);

添加上述代码后,在右上角的Controls中会出现一个angle属性的控制条,可以通过调节右面滑块或直接在输入框中输入数字或滚动滚轮在调节聚光灯的光线散射角度。
threejs的gui,ThreeJS,javascript,html5,前端,3d
.onChange方法
.onChange方法用于监听控件的改变,它接收一个回调函数作为参数,在回调函数中可以接收改变的值,并处理相关的业务逻辑
上面我们添加add方法后,我们在浏览器刷新页面后控制angle的滑块来改变聚光灯的光线散射角度,我们发现,聚光灯的散射角度是改变了,但是我们添加的聚光灯辅助类没有跟着变化,这时,我们就需要在onChange方法的回调函数中调用聚光灯辅助类的.update()方法来更新它

gui.onChange(function(val){
  console.log(val);
  spotLightHelper.update()
})

添加上述代码后,在刷新浏览器,控制滑块发现聚光灯的散射角度变化时,聚光灯辅助类也会跟着变化
我们可以将上面的add方法和onChange方法以链式编程的方式编写,

// gui增加交互界面,用来改变sportLight的 angle的属性
gui.add(sportLight, 'angle', 0,  Math.PI / 2).onChange(function(val){
  console.log(val);
  spotLightHelper.update()
})

使用同样的方法,我们可以添加sportLight的position属性来控制其在x,y,z轴上的坐标

gui.add(sportLight.position,'x',-300,0)
gui.add(sportLight.position,'y',0,350)
gui.add(sportLight.position,'z',0,300)

.step()方法
.step()方法可以设置交互界面每次改变时属性值的间隔是多少,

gui.add(sportLight.position,'x',-300,0).step(1)

.addColor()方法
.addColor()方法生成颜色值改变的交互界面,它接收两个参数,一个是控制对象,一个是颜色属性

gui.addColor(sportLight,'color')

刷新浏览器,修改聚光灯颜色为红色
threejs的gui,ThreeJS,javascript,html5,前端,3d
.name()方法
.name()方法可以给控制对象的属性重命名,方便我们更好的理解要改变对象的属性

gui.add(sportLight, 'angle', 0,  Math.PI / 2).onChange(function(val){
  console.log(val);
  spotLightHelper.update()
}).name('聚光灯散射角度')

threejs的gui,ThreeJS,javascript,html5,前端,3d
.addFolder()方法
.addFolder()方法创建一个分组,我们可以将同一对象的属性通过.addFolder()方法创建在同一个分组中
通过const sportLightFolder = gui.addFolder(‘聚光灯’)创建一个分组,然后将上面所有的属性都通过sportLightFolder .add()或.addColor()方法添加

sportLightFolder.add(sportLight, 'angle', 0,  Math.PI / 2).onChange(function(val){
  console.log(val);
  spotLightHelper.update()
}).name('聚光灯散射角度')
sportLightFolder.add(sportLight.position,'x',-300,0).step(1)
sportLightFolder.add(sportLight.position,'y',0,350)
sportLightFolder.add(sportLight.position,'z',0,300)

sportLightFolder.addColor(sportLight,'color')

这样就将同一个控制对象的属性放在了同一个子菜单下
threejs的gui,ThreeJS,javascript,html5,前端,3d
addFolder()方法是可以嵌套的,比如上面的x、y、z实际上都是position的分量,我们就可以继续使用addFolder()方法来将x、y、z放在一个子菜单中

const sportLightFolder = gui.addFolder('聚光灯')

sportLightFolder.add(sportLight, 'angle', 0,  Math.PI / 2).onChange(function(val){
  console.log(val);
  spotLightHelper.update()
}).name('聚光灯散射角度')
const positionFolder = sportLightFolder.addFolder('坐标')
positionFolder.add(sportLight.position,'x',-300,0).step(1)
positionFolder.add(sportLight.position,'y',0,350)
positionFolder.add(sportLight.position,'z',0,300)

sportLightFolder.addColor(sportLight,'color')

再次刷新浏览器查看,我们发现x、y、z放在了“坐标”子菜单下
threejs的gui,ThreeJS,javascript,html5,前端,3d
.close()和.open()方法
默认情况下,GUI创建的所有菜单都是打开的,我们可以通过.close()方法控制其关闭,通过.open()方法控制其打开

//控制Coltrols菜单关闭
gui.close()
// 聚光灯子菜单关闭
const sportLightFolder = gui.addFolder('聚光灯').close()
// 坐标子菜单关闭
const positionFolder = sportLightFolder.addFolder('坐标').close()

看效果
threejs的gui,ThreeJS,javascript,html5,前端,3d
这里只是以聚光灯为例来说明GUI调试器的使用,它可以监视任何控制对象,比如相机,比如物体等,更多使用方法,还需要我们不断摸索和实践。
今天就到这里,喜欢的点赞关注哦文章来源地址https://www.toymoban.com/news/detail-704221.html

到了这里,关于Threejs入门之十八:GUI调试器的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】调试器:gdb 的基本使用

    gdb 全称 GNU symbolic debugger,是 Linux 下常用的程序调试器。 调试器的核心工作,主要是为了定位问题。废话不多说。 gdb 的安装 另外: gcc、g++ 默认形成的版本是 release,不是 debug 版本!所以想要在 Linux 下调试程序,需要在 Makefile 文件 中,添加 -g 选项 指定以 dubug 方式编译程

    2024年02月16日
    浏览(46)
  • 手把手教你使用gdb调试器

    所谓调试,指的是对编好的程序用各种手段进进行查错和排非错的过程。进行这种查错处理时,下面将讲解如何使用gdb进行程序的调试。  gdb 简介 gdb是一个功能强大的调试工具,可以用来调试C程序或C++程序。在使用这个工具进行程序调试时,主要涉及下面四个方面的操作。

    2024年02月16日
    浏览(50)
  • 【Linux】Linux下调试器gdb的使用

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux 如果无聊的话,就来逛逛 我的博客栈

    2024年02月19日
    浏览(41)
  • python学习-代码调试器pdb的使用教程

    大家平时是怎么调试代码的呢?我平时是这两种 使用print打印变量,发布时再注释掉 使用日志,设置控制台为DEBUG模式,发布时设置控制台为更严重级别,就不用一个个注释print 第一个方式需要侵入代码,且调试后需要注释,有的时候忘记注释了一个print,比较繁琐。第二个

    2024年02月01日
    浏览(44)
  • Linux:gdb调试器的解析+使用(超详细版)

    程序的发布方式有两种,debug模式和release模式 debug模式:可以被调试; release模式:不可以被调试。 为什么需要debuy和release这两个模式呢? 答:程序员在开发的时候需要去调试代码,所以需要debuy模式,而用户一般不懂这些代码的调试不需要debuy模式,只需要快速的下载和安

    2024年02月05日
    浏览(50)
  • Linux之基础开发工具gdb调试器的使用(三)

    📘北尘_ :个人主页 🌎个人专栏 :《Linux操作系统》《经典算法试题 》《C++》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 yum install -y gdb 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式,release模式下无法调试 要使用gd

    2024年02月05日
    浏览(50)
  • stlink下载调试器使用说明(STM32采用stlink下载程序)

    stlink能干什么?  最基本的功能:下载程序。  一般STM32支持ISP串口下载,也支持stlink、jlink等下载器下载 。 使用stlink、jlink下载要比串口方便很多,在keil里直接点击下载就行了,不需要去选择hex文件,速度上要快很多,主要一点,jlink、stlink能实现硬件仿真调试,程序出问

    2024年02月02日
    浏览(51)
  • 【Linux】编译器-gcc/g++与调试器-gdb的使用

    👀 樊梓慕: 个人主页  🎥 个人专栏: 《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》 🌝 每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.gcc/g++语法 2.gcc的使用及编译器是如何\\\"翻译\\\"代码的? (1)预处理 (2)编译 (3)汇编

    2024年02月04日
    浏览(58)
  • 【Linux】编译器gcc和g++与调试器gdb的使用

    我们知道,一个程序被运行起来之后需要经历四个阶段然后才变成一个可执行的程序,他们分别为:预处理,编译,汇编和链接。下面我们将介绍这四个阶段的操作,测试代码如下: 1.1 预处理 预处理也叫预编译,程序在预处理阶段会完成如下操作: 展开头文件,将头文件中

    2024年02月07日
    浏览(44)
  • 《Linux从练气到飞升》No.09 Linux调试器-gdb使用

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 当我们在 vscode 等 IDE 上编写代码出错时,通常会

    2024年02月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包