three.js从cubecamera创建纹理

时间:2015-12-30 21:29:11

标签: three.js

使用立方体相机时,通常会将材质的envMap设置为cubeCamera.renderTarget,例如:

var myMaterial = new THREE.MeshBasicMaterial({color:0xffffff, 
        envMap: myCubeCamera.renderTarget,
        side: THREE.DoubleSide});

这适用于旨在反映或折射立方相机所看到的内容的网格。但是,我想简单地创建一个纹理并将其应用到我的网格中。换句话说,我不希望我的对象反射或折射。我希望忽略面部法线。

我尝试使用THREE.WebGLRenderTarget,但它不会处理立方相机。使用带有WebGLRenderTarget的单个perpspective相机显然不会给我360纹理。

最后,简单地将cubeCamera.renderTarget指定给材质的“map”属性也不起作用。

有可能做我想做的事吗?

R73。

2 个答案:

答案 0 :(得分:1)

编辑:这不是问题的作者所寻求的,我会在下面为其他人保留我的答案

您的envmap已经是一个纹理,因此无需将其应用为地图。此外,立方体贴图和纹理在结构上是不同的,因此无法交换它们,或者如果您成功完成,结果不是您可能期望的结果。

我理解你要求你想要一个静态envmap而不是在每一帧更新,如果是这样的话,就不要在你的渲染函数中运行myCubeCamera.updateCubeMap()。而是将其放置在场景初始化时,使用所需的立方体相机位置,envmap将仅显示该帧。

见下面的例子:

答案 1 :(得分:0)

答案是:将材质上的refractionRatio设置为1.0。然后忽略面法线,因为没有发生折射。

在多维数据集相机与网格处于同一场景的正常情况下,这将毫无意义,因为网格将是不可见的。但是,如果多维数据集相机正在查看不同的场景,那么这是一个有用的功能。