WebGL Multiple Canvas three.js示例

时间:2013-09-26 18:03:59

标签: javascript canvas three.js webgl clipping

所以我正在开发一个项目,该项目使用多个不同的摄像头将场景渲染到不同的画布。基本上我在做这个例子:

http://threejs.org/examples/webgl_multiple_canvases_grid.html

我发现这样做的问题是,不同场景的剪裁平面在边缘处做了奇怪的事情。正如示例所示,使用Big Objects很好,但是有些较小,有些会被边缘修剪掉。我已经举了一个例子来说明下面的问题。

http://tinyurl.com/pjstjjd

我想知道是否还有解决这个问题。我将尝试和探索它的几种不同方式如下:

  • 尝试重叠一点reneders,使剪裁平面更宽。
  • 查看是否有办法关闭剪辑
  • 让自己哭泣。

是否有一些我想念的简单,或者我是否需要深入挖掘。

非常感谢您的时间! 艾萨克

1 个答案:

答案 0 :(得分:3)

问题是你正在创建4个App个对象,并在每个对象中创建不同的随机范围。所以你的4个视图在不同的地方有不同的范围。如果您希望视图匹配,则必须将对象放在每个App中的相同位置。

我在示例

的第129行粘贴了此代码
var randomSeed_ = 0;
var RANDOM_RANGE_ = Math.pow(2, 32);

Math.random = function() {
  return (randomSeed_ =
          (134775813 * randomSeed_ + 1) %
           RANDOM_RANGE_) / RANDOM_RANGE_;
};

这是一个随机函数,它为每个应用程序返回相同的值,因为randomSeed_在每个应用程序中从0开始。

了解您最终要实现的目标会有所帮助。您链接的Three.JS示例旨在展示如何在网格中的4台不同计算机上的多个监视器之间传播渲染。

This one shows if the monitors are different sizes and not in a gridThis one shows if the monitors are in a circle or semi circle。例如Google的Liquid Galaxy

This one shows multiple views in a single canvas虽然在撰写此答案时,看起来需要进行一些更新。

This one shows drawing using one large canvas and place holder elements for where to draw