Threejs 笔记

最近在学习 three.js ,把相关的比较好的博客专门归纳一下吧,感觉 three.js 学习的中文资料比较少,可能用的还没有那么多。

关于相机 position、up、lookAt 的理解

关于这个 up 熟悉,第一次没有理解,看了一下这个博主的绘图,就明白了,这里面的这个三元组不是当坐标来用的,而是一个方向向量,表示相机向上的方向。

Three.js 基础

这个教程写的非常好,特别是还直接把在线的代码编辑器嵌进去了,有意思的是教程动画的写法很有意思,按照迭代来写的:

  function render(time) {
    time *= 0.001;

    if (resizeRendererToDisplaySize(renderer)) {
      const canvas = renderer.domElement;
      camera.aspect = canvas.clientWidth / canvas.clientHeight;
      camera.updateProjectionMatrix();
    }

    objects.forEach((obj) => {
      obj.rotation.y = time;
    });

    renderer.render(scene, camera);

    requestAnimationFrame(render);
  }

  requestAnimationFrame(render);

这个 requestAnimationFrame 是浏览器提供的方法,time 和显示器刷新的频率有关系,60Hz 的屏幕刷新时间就是 1000ms / 60 = 16.7ms 执行一次,然后这里的 time 是从加载到”此时此刻“的时间。所以实际上每一时刻的渲染都是以最初的那个 obj 为基础的,而不是以上一次渲染的 obj。

requestAnimationFrame 相关的博客:你知道的 requestAnimationFrame

BufferGeometry 属性讲解

Three.js 自定义缓冲几何体

BufferGeometry 基础讲解(position、normal、color、index)

万能的 BufferGeometry

Three.js 几何体顶点纹理坐标 UV

教程这一块讲 BufferGeometry 的属性,属于讲了但没完全讲清楚,文档也找不到详细的解释,但是结合几个博客内容就很容易理解了。