Я пытаюсь показать HTML контент в 3D наряду с режимом Forge, используя Three JS CSS3dRenderer (https://threejs.org/docs/#examples / en / renderers / CSS3DRenderer ).
Пример функциональности: http://learningthreejs.com/data/2013-04-30-closing-the-gap-between-html-and-webgl/index.html
В чисто нормальном контексте Three JS необходимо выполнить следующие шаги:
- Создать Three JS сцена № 1 для содержимого DOM.
- Создание еще одной сцены № 2 для содержимого 3D.
- Добавление объектов CSS3DObjects с содержимым HTML в сцену № 1
- Добавьте соответствующий 3D элемент в сцену # 2 с включенным смешиванием. Это позволяет контенту HTML закрывать объекты в сцене № 2.
- Добавлять другие 3D-объекты в сцену № 2.
- Визуализировать # 1 с помощью CSS3DRenderer и # 2 с обычным WebGLRenderer .
В контекстной программе просмотра Forge # 2 заменяется наложенной сценой.
Я применил описанные здесь приемы https://forge.autodesk.com/blog/transparent-background-viewer-long-last, чтобы сделать CSS сцена, видимая через сцену зрителя, и это работает нормально, за исключением странного эффекта, когда при включении альфа-рендерера элементы в сцене наложения воспроизводятся только при окклюзии модели Forge.
Проблема I ' m имеет точку 4. В случае двух обычных сцен Three JS положение, вращение и масштаб объекта CSS3DObject в сцене # 1 могут быть просто скопированы в объект в сцене # 2, и они идеально совпадают. Между сценой Three JS и оверлейной сценой зрителя это не так, поскольку единицы не совпадают. (Или я так рассуждал.)
Есть ли какой-нибудь способ, которым я могу преобразовать эти единицы?