2013-03-04 8 views
7

Podczas pracy nad projektem WebGL przy użyciu doskonałych bibliotek Sim.js i Three.js natknąłem się na następny problem :Obiekt TypeError [obiekt obiektowy] nie ma metody SubSelf, TypeError Obiekt [object object] nie ma żadnej metody przecinającej port

Gdzieś po drodze, to używa następnego konstruktor THREE.Ray:

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

gdzie wektor jest Vector3,

który wyzwala się następujący błąd:

Obiekt TypeError [obiekt obiektu] nie ma podelementu metody.

sprawdziłem dokumentację z Three.js że używam i metodę na Vector3 że zbliżył się najbardziej ten jest

.sub(v) Vector3 

próbowałem zmieniając to i nowy błąd pojawia się na tej rozmowy :

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

który ponownie generuje błąd, ponieważ kiedy sprawdzasz, ray nie ma metody intersectsPlane

Odpowiedz

14

wierzę api Three.js zmieniła jakiś czas temu.

Vector3 's subSelf()is now simply sub(), jak odkryłeś.

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

Jeśli chcesz zamiast tego skomplikowanego skrzyżowania scen, należy użyć you probably want to use Raycaster. Dokumenty: http://mrdoob.github.com/three.js/docs/56/#Reference/Core/Raycaster

Dokumentacja Three.js nie jest najlepszą rzeczą w historii ... Jednak wiele informacji można uzyskać po prostu inspecting the source code.

+0

Właściwie to mam problem za pierwszym razem, oryginalny kod to ray.IntersectScene, który nie istnieje i zastąpiłem go intersectPlane będącym jedynym przecięciem istniejącym w Ray.js, który rozwija nową metodę "nie można wywołać kropka" nieokreślonego "error – maxandonuts

+0

zgodnie z wiki migracji three.js, intersectScene już nie istnieje i zaleca użycie intersectObjects (array), jakiegokolwiek pojęcia, kto jest właścicielem tej metody? – maxandonuts

+1

@MaxRodriguezCollada Nie chcesz "Ray", nie robią już skomplikowanej kolizji. 'Ray' jest teraz konstrukcją czysto matematyczną, ale _casting_ promień jest teraz wykonywany przez nową klasę zwaną' Raycaster'. https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js –

Powiązane problemy