首页 > 解决方案 > 如何将 InstancedBufferGeometry 与 threejs 一起使用

问题描述

当我使用 InstancedBufferGeometry 时不显示。(当下面的代码删除注释时,显示了多边形。)但是,当显示多边形时,我使用了 BufferGeometry。

为什么下面的代码不起作用。

请教我。

const createGeometry = () => {
    // const geometry = new THREE.BufferGeometry();
    const geometry = new THREE.InstancedBufferGeometry();
    const positions = new THREE.BufferAttribute(new Float32Array(4 * 3), 3);
    const uvs = new THREE.BufferAttribute(new Float32Array(4 * 2), 2);

    positions.setXYZ(0, -0.5, 0.5, 1.0);
    positions.setXYZ(1, 0.5, 0.5, 1.0);
    positions.setXYZ(2, -0.5, -0.5, 1.0);
    positions.setXYZ(3, 0.5, -0.5, 1.0);
    uvs.setXYZ(0, 0.0, 0.0);
    uvs.setXYZ(1, 1.0, 0.0);
    uvs.setXYZ(2, 0.0, 1.0);
    uvs.setXYZ(3, 1.0, 1.0);
    geometry.setAttribute("position", positions);
    geometry.setAttribute("uv", uvs);

    geometry.setIndex(
      new THREE.BufferAttribute(new Uint16Array([0, 2, 1, 2, 3, 1]), 1)
    );

    return geometry;
  };

当使用 BufferGeometry 时。

在此处输入图像描述

标签: javascriptthree.js

解决方案


不支持使用InstancedBufferGeometry没有至少一个的 a InstancedBufferAttribute

这种用法甚至没有意义,因为您希望拥有一个或多个属性来定义每个实例的变化。


推荐阅读