我的github
THREE.PlaneGeometry 是 Three.js 库中用于创建平面几何体的类,其构造函数 new THREE.PlaneGeometry(width, height, widthSegments, heightSegments) 的四个参数含义如下:
  1. width
    平面在 X 轴方向的宽度(大小),默认值为 1
  2. height
    平面在 Y 轴方向的高度(大小),默认值为 1
  3. widthSegments
    平面在 X 方向上的分段数(细分数量),即横向的网格数量。默认值为 1,必须是整数。
    • 分段数越多,平面被分割成的小网格(三角形)就越多,几何体的顶点数也会增加(顶点数 = (widthSegments + 1) * (heightSegments + 1))。
    • 更高的分段数允许更复杂的变形(如应用波浪动画)或曲面细分。
  4. heightSegments
    平面在 Y 方向上的分段数(细分数量),即纵向的网格数量。默认值为 1,必须是整数。
    • 同样,分段数越多,几何体越精细,但性能开销也会增加。

示例与可视化理解

假设创建一个 width=4height=2 的平面:
  • 当 widthSegments=1 且 heightSegments=1 时
    平面由 1 个矩形(2 个三角形) 组成,共 4 个顶点(排列为 2×2 的网格)。
  • 当 widthSegments=3 且 heightSegments=1 时
    平面被分为 3 个横向分段、1 个纵向分段,共 4 个矩形(8 个三角形) 和 8 个顶点(排列为 4×2 的网格)。

应用场景

  • 低分段数(如 1x1)适合简单的静态平面(如地面、墙壁)。
  • 高分段数(如 32x32)适合需要复杂变形的场景(如布料模拟、地形生成)。
若代码中使用 width - 1 和 height - 1 作为分段数,需确保 width 和 height 是大于等于 2 的整数,否则可能导致分段数为 0 或负数,引发错误。
例子:
const width = 100,height=100;
const geometry = new THREE.PlaneGeometry(width, height, width - 1, height - 1);

问:geometry的position属性长度大小?

答:一共有100*100=1万个点。一个点的坐标包含x,y,z三个值。所以长度为3万。

posted on 2025-06-27 15:26  XiaoNiuFeiTian  阅读(33)  评论(0)    收藏  举报