我有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一起使用?或者有没有办法在网格的面上手动加载纹理?
发布于 2011-09-12 19:53:18
立方体贴图有些特殊,因为通常的UV (ST)纹理坐标对它们不起作用。立方体贴图,顾名思义,由6个二次纹理组成,排列为立方体的面。纹理坐标不是立方体表面上的绝对位置,而是远离立方体中心的方向,并且给定方向上从中心发出的光线击中立方体的位置是该特定面上纹理的位置。
如果在第三个坐标为零的情况下应用纹理坐标,就像在Wavefront中那样,您将只处理立方体表面的一部分,即与XY平面相交的部分。如果要查看工作立方体贴图的实际效果,请使用对象的平滑法线作为纹理坐标。
发布于 2011-09-13 18:56:11
您需要使用不同的纹理坐标,例如: materialLayer.setMapinput( GLGE.MAP_OBJ ),这取决于您想要什么,请尝试GLGE.MAP_OBJ、GLGE.MAP_NORM或GLGE.MAP_ENV
https://stackoverflow.com/questions/7386952
复制相似问题