three.js-结合dat.gui实现界面可视化修改及调试详解

 更新时间:2023年02月12日 14:51:40   作者:桃小瑞  
这篇文章主要为大家介绍了three.js-结合dat.gui实现界面可视化修改及调试详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

gitee 地址

gitee地址: gittee地址

本篇目标

  • 结合dat.gui实现界面可视化修改及调试

下载 dat.gui

pnpm i dat.gui

引入及创建

引入

import * as Dat from "dat.gui";

创建

/// 创建 dat
const dat = new Dat.GUI();

使用

这里我是装在一个函数里的,但不影响

/// 添加菜单
function addMenuItem () {
    // x 轴坐标
    dat
    .add(cube.position, 'x')
    .max(10)
    .min(0)
    .step(0.01)
    .name('移动x轴')
    .onChange(value => {
        console.log('我是当前正在移动的x轴', value);
    })
    .onFinishChange(value => {
        console.log('我是当前移动结束的x轴', value);
    })
}
// 添加菜单
addMenuItem ()

效果图

这样我们设置和退出画布全屏的这个功能就做好了。

完整代码

import * as THREE from "three"
// 目标:使用 dat.gui 进行 可视化调试
import * as Dat from "dat.gui";
/// 创建场景
const scene = new THREE.Scene()
/// 创建 dat
const dat = new Dat.GUI();
/// 创建相机
/*
    PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )
        fov — 摄像机视锥体垂直视野角度
        aspect — 摄像机视锥体长宽比
        near — 摄像机视锥体近端面
        far — 摄像机视锥体远端面
*/
/// 透视相机
const camera = new THREE.PerspectiveCamera(
    75, // 摄像机视锥体垂直视野角度,从视图的底部到顶部,以角度来表示。默认值是50。
    window.innerWidth / window.innerHeight, // 摄像机视锥体的长宽比,通常是使用画布的宽/画布的高。默认值是1(正方形画布)。
    0.1, // 摄像机的近端面,默认值是0.1。
    1000 // 摄像机的远端面,默认值 2000
)
/// 创建渲染器
const renderer = new THREE.WebGLRenderer();
/// 设置大小
renderer.setSize(
    1000, // 宽度
    500 // 高度
);
/// 挂载到页面
document.body.appendChild(renderer.domElement)
/// 添加物体
/*
    width:立方体x轴的长度,
    height:立方体y轴的长度,
    depth:立方体z轴的长度也是深度
*/
let geometry = new THREE.BoxGeometry(10, 10, 10);
/// 添加材质
// const material = new THREE.MeshBasicMaterial({ color: 0xffff0000 });
/// 添加材质
const materials = []
for(let i = 0; i < 6; i++){
    materials.push(new THREE.MeshBasicMaterial({ color: Math.random() * 0x00ff0000 }))
}
/// 添加网格
const cube = new THREE.Mesh( geometry, materials );
scene.add( cube );
// 设置相机位置
camera.position.z = 50;
// 修改场景背景颜色
scene.background = new THREE.Color(0xffffcc99)
/// 添加 三色坐标轴
const axesHelper = new THREE.AxesHelper(20)
scene.add( axesHelper )
/// 渲染
function animate() {
    // 使用 requestAnimationFrame 执行动画
    requestAnimationFrame(animate)
    // 修改其旋转的度数,让其每次渲染增加0.01的弧段进行渲染
    cube.rotation.x += 0.01;
	cube.rotation.y += 0.01;
    //scene:前面定义的场景,camera:前面定义的相机
    //renderTarget:渲染的目标默认是是渲染到前面定义的render变量中
    //forceClear:每次绘制之前都将画布的内容给清除,即使自动清除标志autoClear为false,也会清除
    renderer.render(scene, camera)
}    
/// 添加菜单
function addMenuItem () {
    // x 轴坐标
    dat
    .add(cube.position, 'x')
    .max(10)
    .min(0)
    .step(0.01)
    .name('移动x轴')
    .onChange(value => {
        console.log('我是当前正在移动的x轴', value);
    })
    .onFinishChange(value => {
        console.log('我是当前移动结束的x轴', value);
    })
}
// 渲染
animate()
// 添加菜单
addMenuItem ()

以上就是three.js-结合dat.gui实现界面可视化修改及调试详解的详细内容,后续会讲解根据 BufferGeometry 设置的顶点创建几何矩形,更多关于three.js dat.gui界面可视化的资料请关注脚本之家其它相关文章!

相关文章

  • 基于JavaScript获取base64图片大小

    基于JavaScript获取base64图片大小

    这篇文章主要介绍了基于JavaScript获取base64图片大小,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 微信小程序 跳转方式总结

    微信小程序 跳转方式总结

    这篇文章主要介绍了微信小程序 跳转方式总结的相关资料,需要的朋友可以参考下
    2017-04-04
  • JavaScript严格模式use strict的介绍

    JavaScript严格模式use strict的介绍

    这篇文章主要介绍了JavaScript严格模式use strict,严格模式是JavaScript中的一种限制性更强的变种方式。严格模式并不是JavaScript中的子集,它在语义上与正常的代码有明显的差异,下面我们就一起来学习该内容吧,需要的朋友也可以参考一下
    2021-12-12
  • 微信小程序 火车票查询实例讲解

    微信小程序 火车票查询实例讲解

    这篇文章主要介绍了微信小程序 火车票查询实例讲解的相关资料,这里提供了简单实例来说明微信小程序的框架及如何开发,需要的朋友可以参考下
    2016-10-10
  • sockjs前端WebSocket二次封装示例详解

    sockjs前端WebSocket二次封装示例详解

    这篇文章主要为大家介绍了sockjs前端WebSocket二次封装示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 打包非 JavaScript 静态资源详情

    打包非 JavaScript 静态资源详情

    这篇文章主要介绍了打包非 JavaScript 静态资源,打包工具中的自定义导入,种常见的方法是利用已有的静态导入语法。有些打包工具可能会通过文件扩展名来自动检测格式,而有些其他打包工具则允许插件使用自定义的 URL Scheme,下面具体内举例说明,需要的朋友可以参考一下
    2021-10-10
  • 微信小程序实现多个按钮toggle功能的实例

    微信小程序实现多个按钮toggle功能的实例

    这篇文章主要介绍了微信小程序实现多个按钮toggle功能的实例的相关资料,需要的朋友可以参考下
    2017-06-06
  • autojs使用intent发送邮件带附件实现示例

    autojs使用intent发送邮件带附件实现示例

    这篇文章主要为大家介绍了autojs使用intent发送邮件带附件实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 美化下拉列表

    美化下拉列表

    美化下拉列表...
    2006-06-06
  • JSON与JS对象的区别与对比

    JSON与JS对象的区别与对比

    JSON是什么?JSON是JS的一种简单数据格式,JSON是JavaScript原生格式,它是一种严格的js对象的格式,JSON的属性名必须有双引号,如果值是字符串,也必须是双引号
    2017-03-03

最新评论