Three.js: la conversion de la position 3d à la 2d la position de l'écran
J'ai un objet 3D à la position(x,y,z). Comment puis-je calculer la position de l'écran(x,y) de cet objet?
Je recherche pour elle et la seule solution est que je dois trouver la matrice de projection, puis multiplier la position 3D du point par cette matrice pour la projeter sur 2D surface de visualisation (écran d'ordinateur). Mais je n'ai aucune idée de comment trouver cette matrice Three.js.
J'essaie une fonction de conversion comme ça, mais il donne un résultat incorrect
function Point3DToScreen2D(point3D){
var screenX = 0;
var screenY = 0;
var inputX = point3D.x - camera.position.x;
var inputY = point3D.y - camera.position.y;
var inputZ = point3D.z - camera.position.z;
var aspectRatio = renderer.domElement.width / renderer.domElement.height;
screenX = inputX / (-inputZ * Math.tan(camera.fov/2));
screenY = (inputY * aspectRatio) / (-inputZ * Math.tan(camera.fov / 2));
screenX = screenX * renderer.domElement.width;
screenY = renderer.domElement.height * (1-screenY);
return {x: screenX, y: screenY};
}
Remercie à l'avance.
OriginalL'auteur user1533481 | 2012-07-18
Vous devez vous connecter pour publier un commentaire.
- Je le faire faire par le présent code à la dernière:
Remarque: div paramètre = en toile élément du dom.
Pourriez-vous donner plus de détails au sujet de votre cas?
C'est là que j'ai trouvé la réponse: github.com/mrdoob/three.js/issues/78
Merci et voici mon écriture-up: stackoverflow.com/questions/11586527/...
Je crois que vos coordonnées inexactes problème viens d'une mauvaise div (3ème paramètre d'entrée. De toute façon, semble que vous avez trouvé votre réponse. Félicitation!
OriginalL'auteur user1533481
Consultez la source sur la démo:
http://stemkoski.github.com/Three.js/Mouse-Over.html
L'objet que je crois que vous êtes intéressé est TROIS.Projecteur(); vous pouvez l'utiliser, par exemple, pour l'automatisation des calculs de créer des rayons à partir de l'emplacement du curseur de la souris sur l'écran et de le projeter dans la scène.
OriginalL'auteur Lee Stemkoski