7

在使用出色的 Sim.js 和 Three.js 库处理 WebGL 项目时,我偶然发现了下一个问题:

在此过程中,它使用了 THREE.Ray 的下一个构造函数:

var ray = new THREE.Ray( this.camera.position, vector.subSelf( this.camera.position ).normalize() );

其中向量是向量3,

这会触发以下错误:

TypeError Object[object object] 没有方法 subSelf。

我检查了我正在使用的 Three.js 的文档以及 vector3 上最接近这个的方法

.sub( v ) Vector3

我尝试更改此设置,并在此调用中显示一个新错误:

var intersects = ray.intersectScene( this.scene );

这再次引发错误,因为当我检查时,ray 没有 intersectsPlane 方法

4

1 回答 1

14

我相信 THREE.js api 不久前发生了变化。

Vector3正如您所发现的,subSelf() 现在很简单。sub()

看起来应该Ray是这样。intersectsPlane() intersectPlane()

如果你想要复杂的场景交叉点,你可能想要使用它Raycaster。文档: http: //mrdoob.github.com/three.js/docs/56/#Reference/Core/Raycaster

Three.js 文档并不是有史以来最好的东西......但是,只需检查源代码就可以收集到很多见解。

于 2013-03-04T21:22:06.073 回答