2017-10-20 34 views
-1

J'ai été bloqué pendant les deux dernières semaines lors de la mise à jour de l'exemple threejs_mousepick.html d'une ancienne version de THREE.js à la version actuelle. Oh, oui, je suis un débutant à la programmation.Impossible de mettre à jour l'ancien code à Three.js 88

J'ai créé un violon, sauter quelqu'un m'aiderait parfois. CANNON.js est une excellente API et il est triste de voir que les exemples sont si vieux/inutilisables avec le fichier THREE.js d'aujourd'hui. Je comprends que c'est beaucoup de travail et j'ai envie de vous aider, mais j'ai besoin d'aide en premier. Donc, si @schteppe vous lisez ceci, contactez-moi: je suis prêt à passer du temps à travailler dessus.

+0

Voici le lien: https://jsfiddle.net/f4j64L91/1/ – Student

+0

Vérifiez la console de connexion, il y a plusieurs messages utiles. Et lisez à propos de ['TROIS.Raycaster()'] (https://threejs.org/docs/index.html#api/core/Raycaster). – prisoner849

+0

Je l'ai fait. Je sais comment utiliser Three.js raycaster, j'ai essayé de remplacer la fonction d'un certain nombre de choses mais je n'ai pas réussi ... encore. Ce code est complexe, imbriqué. Je vais continuer à expérimenter. – Student

Répondre

0

La réponse est aussi large que la question. L'utilisation de THREE.Raycaster() et THREE.Plane() simplifie beaucoup les choses. Il permet de se débarrasser des fonctions telles que projectOntoPlane, findNearestIntersectingObject, getRayCasterFromScreenCoord, et raccourcit la fonction setScreenPerpCenter (son nom est ridicule, mais je l'ai laissé tel quel) à une seule ligne.

jsfiddle exemple R87

enter image description here

gplane est-THREE.Plane():

var gplane = new THREE.Plane(), gplaneNormal = new THREE.Vector3(); 

Comme il écrit dans le commentaire de descripting, nous créons un plan virtuel, que nous déplaçons notre point de joint sur.

function setScreenPerpCenter(point) { 
    gplane.setFromNormalAndCoplanarPoint(gplaneNormal.subVectors(camera.position, point).normalize(), point); 
} 

Ici, nous avons mis notre avion à partir d'une normale et un point coplanaires, où la normale est un vecteur normalisé de soustraction entre la position de la caméra et le point de clic sur le cube, et le point est que point de clic lui-même. Lisez à propos de cette méthode here

+0

Homme, merci. J'ai toujours confondu avec ces fonctions et je ne savais pas comment les utiliser ou non. Je vais passer du temps ce soir pour apprendre de votre code. Merci encore. – Student

+0

De rien. Marquez la réponse comme acceptée, si elle résout votre problème) – prisoner849

+0

Vrai, maintenant c'est fait. – Student