He creado una geometría de caja como se muestra a continuación,
const hand1geo = new THREE.BoxGeometry(2, 0.01, 0.2); const material_sidehand = new THREE.MeshBasicMaterial({ color: 0x3cc1b7 }); const sidehand = new THREE.Mesh(hand1geo, material_sidehand);Lo que quiero hacer es extraer vértices de este cuadro y uso esto,
this.sidehand.attributes.position.arrayY lo que obtuve es lo siguiente, la imagen del resultado . Realmente no entiendo por qué solo abarcó 72 elementos (24 vectores) con el mismo valor. ¿Por qué hay 24 vectores aquí y dónde se han definido? Porque quiero usar Raycaster para hacer la detección de colisiones más adelante. Traté de usar this.sidehand.vertices pero no funciona.
Traté de usar this.sidehand.vertices pero no funciona.
No sé qué referencias usaste, pero Mesh nunca tuvo una propiedad llamada vertices . Probablemente te refieras a la antigua clase de Geometry que de hecho tenía esta propiedad. Sin embargo, esta clase ha quedado obsoleta y ahora se usa BufferGeometry en su lugar.
Realmente no entiendo por qué solo abarcó 72 elementos (24 vectores) con el mismo valor.
Los valores no son idénticos. BoxGeometry define todos los vértices del cuadro en el espacio local en una matriz plana para que la API de WebGL pueda usar los datos directamente (lo cual es bueno para el rendimiento).
Hay 24 vectores porque la geometría define para cada lado de la caja cuatro vértices. Cada lado está compuesto por dos triángulos. Esto se hace para que sea posible generar coordenadas normales y de textura adecuadas.
Le sugiero que reconsidere el uso de datos de geometría sin procesar para la detección de colisiones. Obtendrá un rendimiento mucho mejor si trabaja con volúmenes delimitadores.