ThreeJS 中的“海洋”示例非常好,因为太阳反射在水面上,看起来很逼真。我正在尝试复制这个,但我仍然需要理解代码的一部分。
海洋示例构造了一个 Water 对象和一个 Sky 对象。然后,它构造一个 CubeCamera 并使用这个相机的渲染目标作为场景的背景。至此,一目了然。代码看起来像这样,其中隐藏了很多细节(由我):
scene = new Scene();
water = new Water();
sky = new Sky();
scene.add( water );
cubeCamera = new CubeCamera();
scene.background = cubeCamera.renderTarget;
cubeCamera.update( renderer, sky );
除了最后一行,我可以理解所有内容: cubeCamera.update( renderer, sky );
在 ThreeJS docs 中,它说 CubeCamera.update() 的最后一个参数必须是场景,而不是天空。我完全不明白为什么这个示例有效,因为 Sky 的方法与 Scene 的方法不同。
然而,这行代码似乎真的很重要,因为当我删除它时,就没有太阳了。
有人可以启发我并告诉我它为什么有效吗?
慕田峪7331174
相关分类