在使用优秀的Sim.js和Three.js库进行WebGL项目时,我偶然发现了下一个问题:
在某个地方,它使用THREE.Ray的下一个构造函数:
var ray = new THREE.Ray( this.camera.position,vector.subSelf( this.camera.position ).normalize() );
vector是Vector3,
这会触发以下错误:
TypeError Object [object object]没有方法subSelf.
我检查了我正在使用的Three.js的文档和vector3上接近最多这个的方法
.sub( v ) Vector3
var intersects = ray.intersectScene( this.scene );
解决方法
我相信THREE.js api改变了一段时间.
正如您所发现的,Vector3的subSelf()is now simply sub()
.
和Ray的相交于平面()looks like it should be intersectPlane()
.
如果你想要复杂的场景交集,请改用you probably want to use Raycaster
.文件:http://mrdoob.github.com/three.js/docs/56/#Reference/Core/Raycaster
Three.js文档并不是最好的东西……然而,从inspecting the source code开始就可以获得很多见解.