【问题标题】:Three.js / WebGL - Sphere - scene visible countries / colorsThree.js / WebGL - Sphere - 场景可见国家/颜色
【发布时间】:2016-02-21 22:13:38
【问题描述】:

我实现了一个类似于this one 的地球仪 但是,当地球处于静止位置时,在尝试获取 Three.js 中场景可见的国家/地区时,遇到了一个问题。当我使用 readPixels 将鼠标悬停在/单击特定国家/地区时,我可以检索国家/地区颜色代码并获取像素的适当颜色代码,如下所示

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 );		    	
gl.readPixels( mx, my, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, buf );

但是当地球停止旋转时,我需要从场景中获取用户可见国家的列表,我尝试使用 Raycaster 获取网格并扫描所有像素并获取国家代码,但似乎是一种表现为我们打球

如果有人可以提供他们的意见,请欣赏

【问题讨论】:

    标签: javascript three.js


    【解决方案1】:

    您可以将场景渲染为纹理(即使使用不同的着色器/制服)。官网有例子,像这样:http://threejs.org/examples/webgl_rtt.html

    例如,您可能有一个场景,其中地球的纹理是国家/地区编码的,当用户单击时,您将该场景渲染为纹理并从该纹理中读取单个像素。

    请注意,在渲染纹理时,有时必须通过将 needsUpdate 设置为 true 来强制更新纹理。

    希望我能帮上忙。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 2015-03-02
      • 1970-01-01
      • 2015-02-22
      相关资源
      最近更新 更多