2016-02-20 3 views
0

J'avais implémenté un globe similaire à this one Mais en essayant d'aller chercher les pays visibles à la scène dans Three.js quand le globe est en position stationnaire je suis coincé dans un numéro. Je peux récupérer le code couleur du pays quand je souris sur/cliquez sur un pays spécifique en utilisant readPixels et obtenir le code de couleur appropriée du pixel comme indiqué ci-dessousThree.js/WebGL - Sphère - scènes pays/couleurs visibles

var gl = renderer.context; 
 
var mx = (mouseX + renderer.context.canvas.width/2);//(mouseX + renderer.context.canvas.width/2) * 0.25; 
 
var my = (-mouseY + renderer.context.canvas.height/2);//(-mouseY + renderer.context.canvas.height/2) * 0.25; 
 
mx = Math.floor(mx); 
 
my = Math.floor(my); 
 
var buf = new Uint8Array(4); \t \t  \t 
 
gl.readPixels(mx, my, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf);

Mais quand le monde arrêté de tourner alors j'ai besoin d'obtenir la liste des pays visibles de l'utilisateur de la scène, j'ai essayé d'utiliser Raycaster pour obtenir le maillage et balayer tous les pixels et obtenir le code pays, mais semble être un succès de performance pour nous

Apprécier mangé si quelqu'un peut donner son point de vue

Répondre

0

Vous pouvez rendre la scène à une texture (même avec différents shaders/uniformes). Il y a des exemples sur le site officiel, comme celui-ci: http://threejs.org/examples/webgl_rtt.html

Par exemple, vous pourriez avoir une scène où la texture du globe est codé selon le pays, et lorsque l'utilisateur clique, vous rendre cette scène dans une texture et lire seul pixel de cette texture.

Attention, lors du rendu de textures, vous devez parfois forcer la mise à jour de vos textures en réglant needsUpdate sur true.

J'espère avoir aidé.