我的threejs学习笔记(二)——dat.gui使用
来源:互联网 发布:sqlserver集群 编辑:程序博客网 时间:2024/06/14 00:16
写在前面
dat.gui可以方便地向场景中添加控制条,随时调整参数。
用法
<script src="../../lib/dat.gui-master/build/dat.gui.js"></script> <link rel="stylesheet" href="../../lib/dat.gui-master/build/dat.gui.css">
引入js文件和css文件
var controls=new function(){ this.ctrl_1=0; this.ctrl_2=0;}var gui=new dat.GUI();gui.add(controls,"ctrl_1",0,10);gui.add(controls,"ctrl_2",-3,3);cube.rotation.x+=controls.ctrl_1;cube.position.x=controls.ctrl_2;
首先声明controls控制器,并向其中添加需要控制的变量(并初始化)。
然后定义gui,并设置参数的最小值和最大值。
实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>threejs demo_3</title> <script src="../three.js-master/build/three.min.js"></script> <script src="../jquery/jquery.js"></script> <script src="../../lib/dat.gui-master/build/dat.gui.js"></script> <link rel="stylesheet" href="../../lib/dat.gui-master/build/dat.gui.css"> <style> body{ margin:0; /*让背景颜色充满窗口,否则会有白边*/ overflow: hidden; /*防止滚动条电的产生*/ } canvas{ } </style></head><body><script> $(document).ready(function () { //定义控制器 var controls=new function () { this.speed=0.02; this.posX=0; this.posY=0; this.posZ=3; this.cube_posX=0; this.cube_posY=0; this.cube_posZ=0; this.camera_posX=0; this.camera_posY=0; this.camera_posZ=2; this.camera_rotation=0; }; //生成gui并添加参数 var gui=new dat.GUI(); gui.add(controls,"speed",0,0.5); gui.add(controls,"posX",0,5); gui.add(controls,"posY",0,5); gui.add(controls,"posZ",0,5); gui.add(controls,"cube_posX",-3,3); gui.add(controls,"cube_posY",-3,3); gui.add(controls,"cube_posZ",-3,3); gui.add(controls,"camera_posX",-2,2); gui.add(controls,"camera_posY",-2,2); gui.add(controls,"camera_posZ",-2,2); gui.add(controls,"camera_rotation",-2,2); var scene=new THREE.Scene(); var camera=new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,0.1,1000); var renderer=new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth,window.innerHeight); renderer.setClearColor("#907770"); document.body.appendChild(renderer.domElement); var cubeGeo=new THREE.CubeGeometry(1,1,1); var cubeMaterial=new THREE.MeshLambertMaterial({color:0xff88aa}); var cube=new THREE.Mesh(cubeGeo,cubeMaterial); scene.add(cube); var pointLight=new THREE.PointLight(0xffffff); scene.add(pointLight); var render=function () { requestAnimationFrame(render); camera.position.set(controls.camera_posX,controls.camera_posY,controls.camera_posZ); camera.rotation.x=controls.camera_rotation; pointLight.position.set(controls.posX,controls.posY,controls.posZ); cube.rotation.x+=controls.speed; cube.rotation.y+=controls.speed*0.5; cube.position.set(controls.cube_posX,controls.cube_posY,controls.cube_posZ); renderer.render(scene,camera); }; render(); });</script></body></html>
以上是可以控制物体坐标,光源坐标和相机坐标的例子。
0 0
- 我的threejs学习笔记(二)——dat.gui使用
- 我的threejs学习笔记(四)——dat.gui函数
- 我的threejs学习笔记(七)——spotLight
- 我的threejs学习笔记(一)
- 我的threejs学习笔记(三)——相机旋转
- 我的threejs学习笔记(五)——点光源属性控制
- 我的threejs学习笔记(六)——3D弹性球
- 我的threejs学习笔记(八)——向场景添加颜色监听
- 我的threejs学习笔记(九)---平行光
- Dat.gui 使用教程
- ThreeJS学习笔记(7)- 程序的性能
- OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt
- three.js学习笔记 dat.gui.js和stats.js
- 使用threejs点云秀出酷炫的图片效果(二)
- 【threejs学习随记(二)】——up属性与lookAt方法解析
- 我的MYSQL学习笔记(二)——数据类型
- ThreeJS学习笔记(1)-基本了解
- ThreeJS学习笔记(2)-场景创建
- 正则表达式
- 最大子段和1
- L2-005. 集合相似度
- 求解一元二次方程
- 二维数组中的查找
- 我的threejs学习笔记(二)——dat.gui使用
- 【Codeforces Gym 100187A】
- list set map 简述
- CMake Tutorial(6)——Building an Installer
- (转)Android
- 第一个cmake,实例学习,项目管理
- myeclipse中的快捷键
- jQuery中scrollTop()方法解析
- CentOS 7 安装 Elasticsearch5.2.2