0

我有 6 个纹理,我想在立方体的 6 个不同面上加载。我正在尝试使用GLGE.TextureCube();. 然后我将所有六个图像加载到应该在立方体上的面孔,就像这样

    mapTex = new GLGE.TextureCube();
    mapTex.setSrcNegX("models/map/negx.jpg"); // they are all 1024x1024
    mapTex.setSrcNegY("models/map/negy.jpg");
    mapTex.setSrcNegZ("models/map/negz.jpg");
    mapTex.setSrcPosX("models/map/posx.jpg");
    mapTex.setSrcPosY("models/map/posy.jpg");
    mapTex.setSrcPosZ("models/map/posz.jpg");

然后我将纹理添加到Wavefront对象。但是,似乎只有 6 个纹理图像中的一个被映射并且它的映射不正确。

我的猜测是,当它从其他 6 个中创建新纹理贴图时,会将它们平铺在一起,因此新纹理贴图的坐标不再对应于我的 obj 文件。

如何正确地将 6 个纹理组合到一张地图以与 GLGE 一起使用?或者有没有办法在网格面上手动加载纹理?

4

2 回答 2

3

立方体贴图有些特殊,因为通常的 UV (ST) 纹理坐标不适用于它们。顾名思义,立方体贴图由 6 个二次纹理组成,排列为立方体的面。纹理坐标不是立方体表面上的绝对位置,而是从立方体中心到远离立方体的方向,以及从给定方向中心发出的光线到达立方体的位置,就是纹理在该特定面上的位置。

如果您应用纹理坐标且第三个坐标为零,如 Wavefront 中的那些,您将只处理立方体面的切片,即与 XY 平面相交的部分。如果您想查看正在运行的立方体贴图,请使用对象的平滑法线作为纹理坐标。

于 2011-09-12T11:53:18.460 回答
0

您需要使用不同的纹理坐标,例如:materialLayer.setMapinput(GLGE.MAP_OBJ) 取决于您想要尝试 GLGE.MAP_OBJ,GLGE.MAP_NORM 或 GLGE.MAP_ENV

于 2011-09-13T10:56:10.653 回答