0
前我看了這個問題:three.js所二維X,Y COORDS到3D X,Y,Z COORDS總是在相機
Mouse/Canvas X, Y to Three.js World X, Y, Z
,並已在我的代碼中實現它,則問題在於,我似乎無法像其他人所說的那樣開展工作。
我需要通過X和Y屏幕座標在相機前面放置一個物體,而不一定是通過鼠標。
該對象將位於攝像機前面的指定距離處,既可以來自預定義的最大距離,也可以來自計算的物距。
注:我的相機可以在我的場景中的任何位置和朝向任何方向
這裏是我的代碼:
this.reticlePos.x = 500;
this.reticlePos.y = 300;
this.reticlePos.z = 0.5;
this.projector.unprojectVector(this.reticlePos, this.camera);
//check for collisions, if collisions set distance to collision distance
var distance = this.RETICLE_RADIUS;
var direction = new THREE.Vector3(0, 0, -1);
direction.applyQuaternion(this.camera.quaternion);
this.rayCaster.set(this.camera.position, direction);
var collisionResults = this.rayCaster.intersectObjects(this.sceneController.obstacles);
if(collisionResults.length !== 0) {
// console.log('Ray collides with mesh. Distance :' + collisionResults[0].distance);
distance = collisionResults[0].distance - 20;
}
// set the reticle position
var dir = this.reticlePos.clone().sub(this.camera.position).normalize();
var pos = this.camera.position.clone().add(dir.multiplyScalar(distance));
this.reticleMesh.position.copy(pos);
正如你所看到的是非常相似的鏈接的問題,但我無法在相機前看到物體。
任何對此的深入瞭解將不勝感激。