当场景旋转时,EdgesHelper失去网格

时间:2015-06-14 12:49:52

标签: three.js

我画了一个带有edgehelper的网格。 当我使用鼠标旋转场景时,边缘的反应速度似乎是网格的两倍。 结果是边缘不适合"当场景旋转时,网格周围再次出现。

我做错了什么?

<html>
  <body onmousemove="bmousemove(event);">
    <script src="three.min.js"></script>
    <script>
      var prevX = 0, prevY = 0;
      var scene = new THREE.Scene();
      var camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight, 1,10000);
      var renderer = new THREE.WebGLRenderer();

      renderer.setSize(window.innerWidth, window.innerHeight);
      document.body.appendChild(renderer.domElement);

      geometry = new THREE.BoxGeometry( 10, 20, 40, 1, 1, 1 );
      material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );
      object = new THREE.Mesh( geometry, material );

      edges = new THREE.EdgesHelper( object, 0xffffff );

      camera.position.z = 100;

      scene.add( object );
      scene.add( edges );
      render();

      function render()
      {
        requestAnimationFrame(render);
        renderer.render(scene, camera);
      }

      function bmousemove(e)
      {
        if (prevX == 0) 
        {
          prevX = e.clientX;
          prevY = e.clientY;
        }

        scene.rotation.y += (e.clientX - prevX) / 100;
        scene.rotation.x += (e.clientY - prevY) / 100;

        prevX = e.clientX;
        prevY = e.clientY;
      }
    </script>
  </body>
</html>

我在Windows 7下使用版本r71

1 个答案:

答案 0 :(得分:0)

是的,这是EdgesHelper(以及其他一些帮助者)实施方式的结果。

如果您想使用EdgesHelper,则必须遵守两条规则:

  1. EdgesHelper必须直接添加到场景中。

  2. scene无法应用变换(例如,可以旋转)。

  3. 因此,您必须旋转网格。

    three.js r.71