Skip to content
☆´∀`☆
On this page

three 基础:BufferGeometry 及其子类

BufferGeometry 是面片、线或点几何体的有效表述。包括顶点位置,面片索引、法相量、颜色值、UV 坐标和自定义缓存属性值。

  • 通过 BufferGeometryBufferAttribute 创建自定义几何体
    js
    const geometry = new THREE.BufferGeometry() // 创建一个缓冲几何体
    // 6个顶点坐标
    const vertices = new Float32Array([0, 0, 0, 50, 0, 0, 0, 100, 0, 0, 0, 10, 0, 0, 100, 50, 0, 10])
    // 创建属性缓冲区对象,3个为一组(3个表示一个顶点坐标)
    const attribue = new THREE.BufferAttribute(vertices, 3)
    // 设置几何体attributes属性的位置属性
    geometry.setAttribute('position', attribue)
    • 添加自定义几何体的网格
      js
      const mesh = new THREE.Mesh(
        geometry,
        new THREE.MeshBasicMaterial({
          color: 0xFFFF00,
          side: THREE.DoubleSide // 两面可见
        })
      )
      scene.add(mesh)
    • 添加自定义几何体的点模型
      js
      const points = new THREE.Points(
        geometry,
        new THREE.PointsMaterial({
          color: 0x0000FF,
          size: 10.0
        })
      )
      scene.add(points)
    • 添加自定义几何体的线模型
      js
      const line = new THREE.Line(
        geometry,
        new THREE.LineBasicMaterial({
          color: 0xFF0000
        })
      )
      scene.add(line)
  • .center() 移动几何体的中心(可以使几何体居中)

three 中的几何体

setAttribute 能 set 哪些

  • uv2
    • 复制 uv 坐标,用于 aomap
      js
      floor.geometry.setAttribute('uv2', new THREE.BufferAttribute(floor.geometry.attributes.uv.array, 2))