2013-03-04 16 views
7

Während ich an einem WebGL Projekt mit den ausgezeichneten Sim.js und Three.js Bibliotheken arbeite, bin ich auf das nächste Problem gestoßen :TypeError Objekt [Objekt Objekt] hat keine Methode SubSelf, TypeError Objekt [Objekt Objekt] hat keine Methode Schnittpunkte

Irgendwo auf dem Weg, verwendet es den nächsten Konstruktor für THREE.Ray:

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

wo Vektor Vector3 ist,

die die folgenden Fehler triggert:

Typeerror Object [object object] hat keine Methode subSelf.

ich die Dokumentation von den Three.js überprüft, die ich verwende und die Methode auf vector3, die die meisten dieses genähert ist

.sub(v) Vector3 

Ich habe versucht, auf diesen Aufruf dieses und ein neuer Fehler zeigt sich ändernden :

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

die wiederum einen Fehler wirft, weil, wenn ich überprüfen, wird ray kein intersectsPlane Verfahren haben

Antwort

14

ich die Three.js api glauben eine Weile zurück geändert.

Vector3subSelf()is now simply sub(), wie Sie entdeckt haben.

Und RayintersectsPlane()looks like it should be intersectPlane().

Wenn Sie komplexe Szene Kreuzung wollen, you probably want to use Raycaster statt. Docs: http://mrdoob.github.com/three.js/docs/56/#Reference/Core/Raycaster

Three.js Dokumentation ist nicht die beste Sache aller Zeiten ... Jedoch kann eine Menge Einblick aus einfach inspecting the source code gewonnen werden.

+0

eigentlich habe ich es falsch beim ersten Mal, der ursprüngliche Code ist ray.IntersectScene, die nicht existiert und ich ersetzte es mit intersectPlane ist der einzige Schnittpunkt in Ray.js, die einen neuen "kann nicht Punkt Punkt aufrufen von undefine“Fehler – maxandonuts

+0

nach der three.js Migration Wiki, intersectScene nicht mehr existiert, und es empfiehlt intersectObjects (Array), eine Idee, die diese Methode besitzt mit? – maxandonuts

+1

@MaxRodriguezCollada Sie wollen nicht eine 'Ray', tun sie nicht komplex Kollision mehr. 'Ray' ist nun ein rein mathematisches Konstrukt, sondern _casting_ den Strahl nun durch eine neue Klasse namens' Raycaster' erfolgt. https://github.com/mrdoob/three.js/blob/master/src/core/Raycaster.js –

Verwandte Themen