【发布时间】:2012-10-21 22:34:57
【问题描述】:
我正在做简单的碰撞检测,虽然我可以使用 THREE.ray 轻松检测上/下物体,但当它们旋转时,我很难找到相机(或任何物体)前后的物体?我尝试用投影仪投射光线,并使用辅助箭头显示该光线是如何射出的。一旦我开始围绕 Y 轴旋转相机,光线会指向相反的方向,或者只是表现得很奇怪......
ray = new THREE.Ray();
projector = new THREE.Projector();
vector = projector.projectVector( coll.getObject().matrix.getPosition().clone(), camera );
ray.direction = vector.normalize();
ray.origin = coll.getObject().matrix.getPosition().clone();
helper.setDirection(ray.direction.clone());
helper.position = ray.origin.clone();
【问题讨论】:
-
这有点好,但它仍然取决于我的相机是否在接近 (0, 0, 0) 的坐标,不知道发生了什么:
var localVertex = coll.getObject().position.clone(); var globalVertex = coll.getObject().matrix.multiplyVector3(localVertex); var directionVector = globalVertex.subSelf( coll.getObject().position.clone()); ray = new THREE.Ray( coll.getObject().position.clone(), directionVector.clone().normalize() ); //ray.origin.addSelf(ax.clone().multiplyScalar(rad / 2)); helper.setDirection(ray.direction.clone()); helper.position = ray.origin.clone();
标签: vector camera three.js collision direction