我想要在立方体的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一起使用?或者有没有办法在Mesh的面上手动加载纹理?
答案 0 :(得分:3)
立方体贴图有点特殊,因为通常的UV(ST)纹理坐标对它们不起作用。名称暗示的立方体贴图由6个二次纹理组成,排列为立方体的面。纹理坐标不是立方体面上的绝对位置,而是来自立方体中心的方向,以及来自给定方向中心的光线照射立方体的位置,是那个特定脸上的纹理。
如果应用第三个坐标为零的纹理坐标(如Wavefront中的那些坐标),则只会处理立方体面的切片,即与XY平面相交的部分。如果要查看正在运行的立方体贴图,请使用对象的 smooth 法线作为纹理坐标。
答案 1 :(得分:0)
您需要使用不同的纹理坐标,例如: materialLayer.setMapinput(GLGE.MAP_OBJ) 取决于你想要的尝试GLGE.MAP_OBJ,GLGE.MAP_NORM或GLGE.MAP_ENV