Как объединить three.js рендеринг с другими элементами HTML?

#html #three.js #html5-canvas

#HTML #three.js #html5-холст

Вопрос:

Я очень новичок в программировании, stackoverflow и всем здесь в целом. Поэтому, пожалуйста, потерпите меня.

Я создал простые сцены, используя Three.js и некоторые эффекты, использующие HTML Canvas отдельно. Я хотел бы знать, есть ли возможность объединить эти два или, в общем, как объединить Three.js отрисовщик холста с другими элементами HTML.

Мой текущий код включает в себя что-то вроде :

 var renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
renderer.domElement.id = 'WebGLCanvas';
document.body.appendChild(renderer.domElement);
  

Ответ №1:

Бесшовная интеграция содержимого WebGL и элементов HTML невозможна. Вы можете расположить HTML-элементы поверх элемента canvas средства визуализации, или вы можете сделать это наоборот. Установив alpha флаг THREE.WebGLRenderer to true , вы можете разместить холст средства визуализации поверх другого содержимого HTML.

Однако следует иметь в виду, что содержимое WebGL всегда отображается отдельно. Невозможно объединить 3D-объекты, такие как сетки, линии или облака точек, с элементами HTML, чтобы они сортировались и отображались вместе.

Использование THREE.CSS3DRenderer в сочетании с THREE.WebGLRenderer является хорошим примером правильного использования. Посмотрите следующую демонстрацию, в которой показаны оба средства рендеринга, интегрированные в простое приложение.

https://threejs.org/examples/css3d_orthographic.html

Комментарии:

1. Аааа, спасибо… но THREE.CSS3DRenderer все еще рендерит 3D-объекты, да? Я бы хотел, чтобы 3D-модель была интегрирована на обычной веб-странице. Например, здесь есть 3D-модель на синем фоне и текст рядом с ней в том же пространстве. Что-то настолько простое , как это, должно быть как-то возможно, нет?

2. Термин «рендеринг» в контексте THREE.CSS3DRenderer несколько вводит в заблуждение, поскольку он просто преобразует элементы HTML в соответствии с преобразованием 3D-объектов. В любом случае, то, что sketchfab делает на своей начальной странице, — это интеграция элемента canvas в обычный веб-сайт. Конечно, в этом нет ничего особенного, и это легко сделать. Я имел в виду более сложные сценарии 😉

3. Ааа … тогда не могли бы вы предложить какой-нибудь учебник, объясняющий, как добиться результата sketchfab? Я подчеркнул так просто, потому что знаю, что это может быть вопрос новичка, но почему-то я просто не могу в этом разобраться….

4. Может быть, так: jsfiddle.net/ztjLfsm0 . Как вы можете видеть, вы можете поместить элемент canvas на обычный веб-сайт, а затем использовать его в качестве поверхности для рисования THREE.WebGLRenderer .

5. Пожалуйста, примите ответ, если он был вам полезен 😉