Итак, я закончил использование отдельного холста, в котором я загружаю текстуру изображения, переведю координаты three.js в холст и прочитал пиксель. Что-то вроде этого:
// point is a THREE.Vector3
var getColor = function(point, callback) {
var img = new Image();
img.src = 'assets/img/myImage.png';
img.onload = function() {
// get the xy coords from the point
var xyCoords = convertVector3ToXY(point);
// create a canvas to manipulate the image
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);
// get the pixel data and callback
var pixelData = canvas.getContext('2d').getImageData(x, y, 1, 1).data;
callback(pixelData);
}
};
Благодаря
Вы хотите, чтобы прочитать цвет столкновения тестирования? Существует нет backbuffer, как это было для openGL. Я мог бы помочь вам с проверкой столкновений, но не для чтения цвета из пикселя текстуры. – mat
Тестовый луч пересечения со всеми треугольниками в сцене, и вы получите точку пересечения. Затем вы можете получить барицентрические координаты из этого треугольника и использовать их для поиска интерполированных UVs для вашей точки пересечения. После того, как у вас есть УЛЬТРАФИОЛЕТОВЫЕ УЛЬТРАФИОЛЕТОВЫ, попробуйте текстуру с помощью gl.readPixels. Это вам подходит? –
Вариант использования прост: получите цвет, на который пользователь нажал. Пользователь должен щелкнуть по сетке с изображением в виде текстуры (мирового мира). И поскольку на сцене есть другие вещи (траектории полета), gl.readPixels принесет незыблемые результаты, если вы нажмете путь, а не фактическую страну. –