Three.js中的动态反射

时间:2016-01-04 11:35:53

标签: javascript three.js

我正在使用JavaScript编写第一步并使用Three.js进行编码

我使用着色器和环境贴图(http://jsfiddle.net/gnazoa/3hxrky6k/1/

进行了此实验

然后,借助Three.js网站的示例。我学会了如何使用cubeCamera(http://jsfiddle.net/gnazoa/z3frkb6m/1/

来实现几何之间的反射

现在,问题在于我无法找到一种方法来同时在两个几何体之间进行反射和textureCube的反射。

我知道当我定义我的制服时,我可以这样写:

envMap: {
  type: "t",
  value: cubeCamera.renderTarget
},

或者这个:

envMap: {
  type: "t",
  value: textureCube
},

但这不起作用:

envMap: {
  type: "t",
  value: textureCube, cubeCamera.renderTarget
},

你有一些推荐吗?谢谢

2 个答案:

答案 0 :(得分:0)

不完全确定,但是你不需要两个不同的env地图来反映场景中的多个项目吗?即为每个想要单独选择的项目创建一个反射贴图。

值得注意的是,在更新反射贴图之前(在动画循环期间)必须从场景中移除要对其进行反射的项目,否则它最终会成为没有反射的暗物体。

答案 1 :(得分:0)

我认为我找到了一个解决方案:https://jsfiddle.net/1aoq3n4g/

我用反射透明层重复每个几何体。像这样:

material = new THREE.MeshBasicMaterial( { envMap: textureCube, color: 0xffffff, transparent: true, opacity: 0.2, blending: THREE.AdditiveBlending} );