【three.js学习笔记】04 dat.gui 组件使用

dat.gui组件使用

dat gui组件可以方便地改变某些值,并快速预览这些值的改变所产生的变化
github项目位置
https://github.com/dataarts/dat.gui

在加入这个script之后 对这个进行初始化,这样我们才能知道需要更改哪些变量:

//创建一个需要进行改变的控制变量对象
var guiControl = new function(){
	this.rotationSpeed = 0.02;
	this.circleSpeed = 0.02;
	this.upDownSpeed = 0.02;
}

将这个对象传递给gui对象,让它的数值变成可以控制的:

	var gui = new dat.GUI();//新建gui控制组件
	gui.add(guiControl, 'rotationSpeed', 0, 1);//添加旋转的速度数值控制 数值大小在0-1之间
	gui.add(guiControl, 'circleSpeed', 0, 1);//绕点旋转速度
	gui.add(guiControl, 'upDownSpeed', 0, 1);//上下活塞运动速度

更改了一小部分的代码旋转物体的函数代码,要三个速度太麻烦了干脆改成了一个

	//旋转物体的函数
	function rotate(obj,speed){
		obj.rotation.x += speed;
		obj.rotation.y += speed;
		obj.rotation.z += speed;
	}

更改animate函数,让其对控制器的数值产生反应

	function animate(){
		requestAnimationFrame(animate);
		rotate(cube,guiControl.rotationSpeed);
		goesRound(sphere,guiControl.circleSpeed);
		upAndDown(cylinder,guiControl.upDownSpeed);
		renderer.render(scene,camera);
		controls.update();
		stats.update();
	}

完成 运行代码:
dat gui的使用

这个时候就能通过调整右边控制面板上面的 数值来对动画的速度进行实时地观察了

添加浏览器自适应

添加浏览器窗口大小的自适应事件,可以让浏览器大小发生改变的时候,不会有地方留出空白

//浏览器大小时改变相机与渲染器函数
function onResize(){
	camera.aspect = window.innerWidth/window.innerHeight;//改变相机的长宽比
	camera.updateProjectionMatrix();//更新相机投影矩阵 如果没有这个那么在改变窗口大小的时候就会拉伸变形
	renderer.setSize(window.innerWidth,window.innerHeight);//更新渲染器大小
}

同时需要添加一个监听事件,让浏览器页面大小发生改变的时候触发该事件:

window.addEventListener('resize', onResize, false);

将变量camera/renderer/scene定义都移动到init函数外面,让onResize()函数可以访问得到变量;

var scene,camera,renderer;
function onResize(){
	……
}
function init(){
	……
}
window.addEventListener('resize', onResize, false);

这个时候改变相机大小 ,中心点的位置不会改变了
完成效果:
three.js 使用dat.gui
请自行查看源码开放

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值