2013-03-04 24 views
7

Mükemmel Sim.js ve Three.js kitaplıklarını kullanarak bir WebGL projesinde çalışırken, bir sonraki sorunla karşılaştım : bir şekilde TypeError Nesnesi [object object] hiçbir yöntemi yoktur SubSelf, TypeError Nesnesi [object object] hiçbir yöntemin bulunmadığı intersectsPlane

, bu THREE.Ray için aşağıdaki kurucu kullanır:

var ray = new THREE.Ray(this.camera.position, vector.subSelf(this.camera.position).normalize()); 
vektör vector3 olan

, aşağıdaki hata tetikler

:

TypeError Object [object nesnesi] subSelf yöntemine sahip değil.

ben kullanıyorum Three.js'ye belgelere ve yaklaştı vector3 üzerinde yöntemini kontrol çoğu bu bir

.sub(v) Vector3 

ben bu değişen çalıştı ve yeni bir hata bu çağrı üzerinde gösterir i kontrol ederken, ışın ben Three.js api bir süre önce değişti inandığınız bir intersectsPlane yöntemi

cevap

14

yoktur, çünkü tekrar bir hata atar

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

. Keşfettiğiniz gibi, is now simply sub().

ve Ray 's intersectsPlane()looks like it should be intersectPlane().

Karmaşık sahne kavşaklarını isterseniz, bunun yerine . Dokümanlar: http://mrdoob.github.com/three.js/docs/56/#Reference/Core/Raycaster

Three.js belgeleri bugüne kadarki en iyi şey değil ... Ancak, çok fazla fikir, yalnızca inspecting the source code'dan alınabilir.

+0

aslında ilk kez yanlış var, orijinal kod ray.IntersectScene, var olmayan ve ben yeni bir "sprint" Ray.js içinde var olan kesiştiği intersectPlane ile yerini alır. undefine "hatası – maxandonuts

+0

, üçüncüsü geçiş wiki'sine göre, intersectScene artık mevcut değil ve intersectObjects (array) kullanılmasını önerir, bu yöntemin sahibi olan herhangi bir fikir nedir? – maxandonuts

+1

@MaxRodriguezCollada Bir Ray istemiyorsunuz, artık karmaşık bir çarpışma yapmıyorlar. Ray 'şimdi tamamen matematiksel bir yapıdır, ancak _casting_ ışını şimdi' Raycaster 'adında yeni bir sınıf tarafından yapılmaktadır. https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js –

İlgili konular