[关闭]
@heqinglin 2019-04-18T13:28:04.000000Z 字数 1422 阅读 62

THREE中的辅助工具

WebGL


Detector.js webgl兼容性检测

  1. if(!Detector.webgl){
  2. Detector.addGetWebGLMessage()
  3. }else{
  4. console.log('浏览器支持');
  5. }

stats.js 检测动画帧频

设置一个容器

  1. <div id="Stats-output"></div>

初始化统计对象

  1. function initStats(){
  2. var stats = new Stats();
  3. stats.setMode(0); // 0: fps, 1: ms渲染一帧的时间
  4. stats.domElement.style.position = 'absolute';
  5. stats.domElement.style.left = '0px';
  6. stats.domElement.style.top = '0px';
  7. document.getElementById("Stats-output").appendChild(stats.domElement);
  8. return stats;
  9. }

在render()函数里调用

  1. function render() {
  2. stats.update();
  3. requestAnimationFrame(render);

dat.gui.js GUI图形界面

定义控件对象

  1. var controls = new function(){
  2. this.rotationSpeed = 0.02; //数值
  3. this.perspective = "Perspective" //函数改变属性
  4. this.switchCamra = function(){
  5. if(){
  6. this.perspective = ""
  7. }
  8. }
  9. };
  10. var gui = new dat.GUI();
  11. gui.add(controls, 'rotationSpeed', 0,0.5);
  12. gui.add(controls, 'switchCamera');
  13. gui.add(controls,'perspective').listen();

在这个对象里,定义两个属性及他们的默认值,接下来我们把这个对象传递给dat.GUI对象,并定义这两个属性的取值范围,也可以定义一个函数,点击的时候会执行此函数改变属性,.listen() 可以把改变更新到GUI控件里。

在render()函数里调用

  1. function render() {
  2. cube.rotation.x += controls.rotationSpeed;
  3. ···

辅助坐标轴

  1. var axes = new THREE.AxesHelper(20);
  2. scene.add(axes);

辅助网格

  1. var gridHelper = new THREE.GridHelper( size, divisions, colorCenterLine, colorGrid );
  2. scene.add(gridHelper);

4个参数分别是:网格宽度、等分数、中心线颜色,网格线颜色
默认分别是10,10,0x444444,0x888888

相机辅助线

  1. var cameraHelper = new THREE.CameraHelper( camera );
  2. scene.add( cameraHelper );

聚灯光辅助线

demo

  1. var lightHelper = new THREE.SpotLightHelper( spotLight );
  2. scene.add( lightHelper );
  3. function render() {
  4. lightHelper.update(); // required
  5. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注