三.js,如何让 CSS3DObject 显示出来? 我究竟做错了什么

问题描述

我在我的 HTML 文档中设置了一个 CSS3DRenderer、一个场景、一个相机,我有一个我想将其转换为 CSS3dobject 的元素,并且我的 CSS3DRenderer 在游戏循环中使用 .render。我创建了一个 CSS3D 对象,将 HTML 元素作为参数,将其添加到我的场景中,但什么也没发生。我必须补充一点,我确实有一个使用相同相机和不同场景的 WebGL 渲染器,该渲染器工作正常。 这是我的导入语句:

import * as THREE from 'https://threejs.org/build/three.module.js';
import { GLTFLoader } from 'https://threejs.org/examples/jsm/loaders/GLTFLoader.js';
import { CSS3DRenderer } from 'https://threejs.org/examples/jsm/renderers/CSS3DRenderer.js';
import { CSS3dobject } from 'https://threejs.org/examples/jsm/renderers/CSS3DRenderer.js';

这是我初始化渲染器的方式:

const renderer = new THREE.Webglrenderer({canvas: document.querySelector('#bg')});
const cssRenderer = new CSS3DRenderer();

这是我试图将 CSS 渲染器置于 WEBGL 渲染器之前:

renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth,window.innerHeight);
cssRenderer.setSize(window.innerWidth,window.innerHeight);
cssRenderer.domElement.style.position = 'fixed';
cssRenderer.domElement.style.top = 0;
renderer.domElement.style.zIndex = 0;
cssRenderer.domElement.style.zIndex = 1;
renderer.domElement.style.position = 'fixed';
renderer.domElement.style.top = 0;

最后,这就是我初始化 CSS3dobject 的方式(planeMesh 只是我试图放置 CSS3dobject 的网格):

var embed = document.querySelector(".embed");
var embed3D = new CSS3dobject(embed);
embed3D.position.set(planeMesh.position);
embed3D.rotation.set(planeMesh.rotation);
cssScene.add(embed3D);

我已经确认我的程序正在正确读取 HTML 元素,但除此之外的所有内容都让我感到困惑,任何帮助将不胜感激。 (对于任何可能明显的不良做法,我很抱歉,我对 javascript 还很陌生)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)