I load 1 3D model from gltf file, I am trying to detect collision between camera and wall through Raycaster. But it doesn’t seem to work.
// Make Camera
var cubeGeometry = new THREE.BoxBufferGeometry(2, 20, 2, 1, 1, 1);
var wireMaterial = new THREE.MeshPhongMaterial({ color: 0xff0000 }); //, opacity: 0, transparent: true
this._makeCamera = new THREE.Mesh(cubeGeometry, wireMaterial);
this._makeCamera.position.set(this._camera.position.x, this._camera.position.y, this._camera.position.z);
this._scene.add(this._makeCamera);
const originPoint = this._makeCamera.geometry.getAttribute('position');
const localVertex = new THREE.Vector3();
const globalVertex = new THREE.Vector3();
for (var vertexIndex = 0; vertexIndex < originPoint.length; vertexIndex++) {
localVertex.fromBufferAttribute(originPoint, vertexIndex);
globalVertex.copy(localVertex).applyMatrix4(this._makeCamera.matrixWorld);
}
console.log("localVertex", localVertex);
console.log("globalVertex", globalVertex);
const directionVector = globalVertex.sub(this._makeCamera.position);
var ray = new THREE.Raycaster(this._makeCamera.position, directionVector.normalize());
var collisionResults = ray.intersectObjects(this._sceneMeshes);
if (collisionResults.length > 0 && collisionResults[0].distance < directionVector.length()) {
console.log("Collision");
}
=> localVertex and globalVertex return null + undefined