0

首先,我在 android 上使用 OpenGL ES 2.0。

表面和高度纹理由具有 Simplex 噪声算法的线程 CPU 生成。我画了一个球体,我想根据与观察者的距离(LOD)来映射纹理。我精确地认为贴图生成器渲染 2D 纹理(基于 3D 噪波),并使用所需的球形变形进行精细贴图。

仅映射一个纹理(票价距离)效果很好。现在,我想根据眼睛到球体中心向量映射(并生成)纹理。想象一下球体中间的一个正方形(我的纹理),每当我旋转球体或移动球体时,该正方形必须始终位于观察者面前的中心。只是内容有所改变。

从哪儿开始 ?

我只能让它与偏航旋转一起工作。如果我修改其他人(俯仰,滚动),一切都会被打破。

我正在研究另一种(最好的)方法吗?

我用于纹理映射的实际着色器代码(仅适用于偏航):

vec4 S = INVERTED_VIEW_MATRIX * vec4(sphere.nadir, 1.0);
vec4 d = normalize(WORLD_POSITION - S);

d = TEXTURE_ROTATE_MATRIX * d;

float u = 0.5 - (atan(d.z, d.x) / (2.0 * PI));
float v = 0.5 - (2.0 * (asin(d.y) / (2.0 * PI)));

谢谢你,对不起我糟糕的英语。

4

0 回答 0