2016-02-20 58 views
0

我已經實現了一個類似於this one 的地球儀但是,當試圖獲取Three.js中場景可見的國家,當地球靜止時,卡住了在一個問題。我可以檢索全國的顏色代碼時,我鼠標/點擊使用readPixels一個特定國家,並得到像素的相應的顏色代碼如下所示Three.js/WebGL - 球體 - 場景可見國家/顏色

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);

但是,當全球停止旋轉然後我需要從現場得到用戶可查看國家的列表,我試圖使用Raycaster來獲取網格和掃描所有像素,並獲得國家代碼,但似乎是我們的性能打擊

更加感激吃,如果有人可以提供他們的意見

回答

0

您可以渲染場景紋理(即使使用不同的着色器/制服)。有官方網站的例子,如:http://threejs.org/examples/webgl_rtt.html

例如,你可以有一個場景是質地地球是國家編碼,當用戶點擊,您渲染場景到紋理和閱讀來自該紋理的單個像素。

在渲染到紋理時要小心,有時您必須通過將needsUpdate設置爲true來強制更新紋理。

希望我幫了忙。