跳至主要內容

gui.js库

Mr.He小于 1 分钟

gui.js库

threejs三维空间的很多参数,不是心算出来的,往往需要可视化的方式调试出来

GUI引入使用

// 引入dat.gui.js的一个类GUI
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';

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

// 通过GUI改变mesh.position对象的xyz属性
gui.add(ambient, 'intensity', 0, 2.0);

// gui改变threejs模型位置测试
gui.add(mesh.position, 'z', 0, 180);

设置名称、步长及事件

const obj = {
    x: 30,
};
// 当obj的x属性变化的时候,就把此时obj.x的值value赋值给mesh的x坐标
gui.add(obj, 'x', 0, 180).name('物体位置').step(10).onChange(function(value){
    mesh.position.x = value;
});

颜色值改变

const obj = {
    color:0x00ffff,
};
// .addColor()生成颜色值改变的交互界面
gui.addColor(obj, 'color').onChange(function(value){
    mesh.material.color = value; // 此行代码待验证
});

.addFolder分组

.addFolder()创建的对象,同样也具有.addFolder()属性,可以继续嵌套子菜单

// 平行光子菜单
const dirFolder = gui.addFolder('平行光');
dirFolder.close();//关闭菜单
// 平行光强度
dirFolder.add(directionalLight, 'intensity',0,2);
const dirFolder2 = dirFolder.addFolder('位置');//子菜单的子菜单
dirFolder2.close();//关闭菜单
// 平行光位置
dirFolder2.add(directionalLight.position, 'x',-400,400);
dirFolder2.add(directionalLight.position, 'y',-400,400);
dirFolder2.add(directionalLight.position, 'z',-400,400);