Извлеките часть сцены как текстуру в THREE.JS - PullRequest
0 голосов
/ 26 февраля 2019

Я хотел бы визуализировать текстуру прямоугольной части моей сцены, как в примере с frame.ffffer Three.js Официальная документация .Я смотрю на код, и есть кое-что, чего я не понимаю,

// calculate start position for copying data

            vector.x = ( window.innerWidth * dpr / 2 ) - ( textureSize / 2 );
            vector.y = ( window.innerHeight * dpr / 2 ) - ( textureSize / 2 );

            renderer.copyFramebufferToTexture( vector, texture );

Первый параметр copyFrameBufferToTexture - это Vector2, который является начальной позицией для копирования данных.

Что делаетэта формула означает?

Это мировая позиция или позиция на экране?

Моя цель - вставить элемент DIV в DOM, тогда я получу все данные пикселей, которые находятся внутри моего элемента DIV.

1 Ответ

0 голосов
/ 27 февраля 2019

РЕШЕНИЕ

Глядя на исходный код copyFramebufferToTexture, я увидел, что он использует copyTexImage2D, где (x, y) - нижний левый угол (0,0) вашего окна.

Итак, чтобы ответить на мой вопрос, формула выше - это окно координат, которое начинается слева внизу.

Тогда, если кто-то захочет извлечь часть сцены, разделив ее элементом div, яиспользовали следующие формулы:

vector.x = divElement.offsetLeft;
vector.y = webglRenderer.getSize().height - divElement.offsetTop - textureHeight;
...