【Threejs】从零开始(六)--GUI调试开发3D效果

server/2024/12/24 3:10:01/

请先完成前置步骤再进行下面操作:【Threejs】从零开始(一)--创建threejs应用-CSDN博客

一.GUI界面概述

GUI(Graphical User Interface)指的是图形化用户界面,广泛用在各种程序的上位机,能够通过简单的操作和按钮就可以调用底层代码,方便我们使用和展示结果。写好了底层的代码后我们就可以制作一个GUI界面来打包和展示。

简单来说就是功能的一个集合模块。

二.GUI的简单使用

1.导入GUI

javascript">import {GUI} from 'three/examples/jsm/libs/lil-gui.module.min.js'  // 导入GUI

2.创建GUI

javascript">const gui = new GUI();

3.控制立方体位置的控制器

gui.add(cube.position, 'x', 最小值,最大值, 步数).name('立方体X位置');

onFinishChange是当你滑动结束时执行一次函数,可以输出滑动的结果。

onChange是数值改变时执行一次函数,可以输出滑动的结果。

javascript">//控制立方体位置
gui.add(cube.position, 'x', -5, 5, 1).name('立方体X位置');
gui.add(cube.position, 'y', -5, 5, 1).name('立方体Y位置').onFinishChange((val) => {console.log('立方体Y位置',val)
})
;
gui.add(cube.position, 'z', -5, 5, 1).name('立方体Z位置').onChange((val) => {console.log('立方体Z位置',val)
})
;

4.添加文件夹(归类)

通过addFolder()方法可以将同一类型的放到同一个文件下,方便管理。

javascript">//创建文件夹
let folder = gui.addFolder('立方体位置');
//控制立方体位置
folder.add(cube.position, 'x', -5, 5, 1).name('立方体X位置');
folder.add(cube.position, 'y', -5, 5, 1).name('立方体Y位置').onFinishChange((val) => {console.log('立方体Y位置',val)
});
folder.add(cube.position, 'z', -5, 5, 1).name('立方体Z位置').onChange((val) => {console.log('立方体Z位置',val)
});

5.调用方法

比如想实现全屏展示和退出全屏。

先创建个数组:

javascript">let eventObject = {fullscreen:function(){document.body.requestFullscreen()},exitFullscreen:function(){document.exitFullscreen()},
}

调用:

javascript">// 创建gui
const gui = new GUI();
gui.add(eventObject,'fullscreen').name('全屏')
gui.add(eventObject,'exitFullscreen').name('退出全屏')

比如控制立方体颜色:

javascript">//控制立方体颜色
let colorParms = {color: 0x00ff00
}
folder.addColor(colorParms, 'color').name('立方体颜色').onChange((val) => {cube.material.color.set(val)
})

控制立方体材质:

javascript">//控制立方体材质
folder.add(parentMaterial,'wireframe' ).name('父元素立方体材质');


http://www.ppmy.cn/server/152649.html

相关文章

手写Redis分布式锁+RedisUtil二次封装

文章目录 1.手写Redis分布式锁1.RedisShareLockUtil2.使用方式 2.RedisUtil二次封装1.RedisUtil2.使用案例 1.手写Redis分布式锁 1.RedisShareLockUtil package com.sunxiansheng.redis.util;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springfra…

【全栈实战】基于 Vue3 + Wot Design Uni 动手封装组件

😊你好,我是小航,一个正在变秃、变强的文艺倾年。 😊好久没有更新有关前端实战教程了,本文主要讲解【全栈实战】基于 Vue3 Wot Design Uni 动手封装组件! 😊这个教程你将会学到技术正确的选型、…

项目搭建+删除(单/批)

一 : 删除没有单独的页面,在列表页面写 二 : 删除在列表的页面 1.删除(单/双)的按钮 ① : 在列表文档就绪函数的ajax里面,成功回调函数追加数据里写删除按钮 注意点 : 删除/修改/回显都是根据id来的,记得传id ② : 批删给批删按钮,定义批删的方法 one : 示例(单删) : //循环追…

POD 存储、PV、PVC

目录 容器如何持久化存储? PV和PVC 为什么不能直接在 Pod 或容器中存储数据? 什么是 PV和 PVC? 可以使用本地磁盘空间创建PV吗? 如何让客户端通过ftp上传到远端服务器的POD里面? 另一个POD想访问ftp的POD里面的…

spring mvc | servlet :serviceImpl无法自动装配 UserMapper

纯注解SSM整合 解决办法: 在MybatisConfig添加 Configuration MapperScan("mapper")

网络安全怎么学习

当我们谈论网络安全时,我们正在讨论的是保护我们的在线空间,这是我们所有人的共享责任。网络安全涉及保护我们的信息,防止被未经授权的人访问、披露、破坏或修改。 一、网络安全的基本概念 网络安全是一种保护:它涉及保护我们的设…

在 Ubuntu 上安装 Muduo 网络库的详细指南

在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样,安装到2%一定会卡住,如果你不幸用了这个那真是遭老罪了 环境&#xf…

RK3588 , mpp硬编码yuv, 保存MP4视频文件.

RK3588 , mpp硬编码yuv, 保存MP4视频文件. ⚡️ 传送 ➡️ Ubuntu x64 架构, 交叉编译aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGBRk3588 FFmpeg 拉流 RTSP, 硬解码转RGBRK3588 , mpp硬编码yuv, 保存MP4视频文件.