【发布时间】:2016-08-13 03:16:36
【问题描述】:
我已经搜索了很多地方,所以如果有类似的问题,请原谅我,但我就是找不到。
将我正在尝试做的事情放在上下文中:我想创建一个无限生成的星星场,当它们离开屏幕时消失并重新出现在相机移动的屏幕边缘。我正在使用自上而下的视图,所以实现这一点一定很简单,但可惜我不知道。
我正在使用下面的代码来确定一颗星星是否已经离开屏幕然后替换它:
//update camera frustum
camera.projScreenMatrix.multiplyMatrices(
camera.projectionMatrix,
camera.matrixWorldInverse
);
camera.frustum.setFromMatrix(camera.projScreenMatrix);
//loop through stars
var stars=scene.stars.geometry.vertices;
for(var i=0;i<stars.length;i++) {
if(!camera.frustum.containsPoint(stars[i])) {
stars[i]=new THREE.Vector3(
// fill in the blank
);
scene.stars.geometry.verticesNeedUpdate=true;
}
}
由于我使用的是透视相机,我知道我需要以某种方式考虑camera.fov 和其他透视元素,但正如你所知,我不是三维方面的专家。
假设我有一个角度或归一化向量告诉我视图平移的方向,我将如何沿着屏幕边缘创建一个顶点,而不管其 Z 位置如何?
如果我不够清楚,我很乐意澄清。谢谢。
【问题讨论】:
标签: three.js