我可以't从bufferGeometry中获取位置属性

I can't get position attribute off a bufferGeometry

本文关键字:获取 位置 属性 bufferGeometry 我可以      更新时间:2023-09-26

我有一条随机的线"在我的场景中漫步"(某种3D蛇),接下来我想实现的是在它的头上设置一个盒子。线路bufferGeometry由设置

        var positions1 = new Float32Array( MAX_POINTS * 3 ); // 3 vertices per point
        var positions2 = new Float32Array( MAX_POINTS * 3 ); // 3 vertices per point
        buffGeometry1.addAttribute( 'position', new THREE.BufferAttribute( positions1, 3 ) );
        buffGeometry2.addAttribute( 'position', new THREE.BufferAttribute( positions2, 3 ) );

我选择在它周围设置一个立方体(boxGeometry对象),并使用以下代码行尝试实现这一点:

            var positioning = buffGeometry1.getAttribute('position');
            cube.position.x = positioning[0];//(line1.geometry.attributes.position.array[drawCount]);
            cube.position.y = positioning[1];//(line1.geometry.attributes.position.array[drawCount + 1]);
            cube.position.z = positioning[2];

在调试时,我发现我的positioning数组未定义。所以我猜出了问题。

谢谢。

尝试:

console.log(buffGeometry1.getAttribute('position'))

我的THREE.BufferGeometry告诉我垂直线存储在position.array中,所以你应该通过以下方式访问它们:

positioning.array[0]
positioning.array[1]
positioning.array[2]

如果使用BufferGeometry将一个点添加到场景中,您也可以尝试访问如下坐标:

/// X coordinate /////      
console.log(point1.geometry.attributes.position.array[0]); 
/// Y coordinate /////   
console.log(point1.geometry.attributes.position.array[1]);  
/// Z coordinate /////           
console.log(point1.geometry.attributes.position.array[2]);