Java 立方体渲染:纹理显示不正确

Java 立方体渲染:纹理显示不正确,java,textures,jmonkeyengine,Java,Textures,Jmonkeyengine,我试图通过创建4个相邻的立方体来渲染墙,当应用纹理时会出现问题-JME3确实渲染立方体并应用纹理,但我看到了立方体的内部。这是我可以改变的某种形式的“观点”吗?如果是,怎么做 下面是代码和我的意思的图像 Box ground = new Box(new Vector3f(1.0f, -1.0f, 1.0f), 5, 0,-5); Geometry groundPlane = new Geometry("GroundPlane", ground); Material gro

我试图通过创建4个相邻的立方体来渲染墙,当应用纹理时会出现问题-JME3确实渲染立方体并应用纹理,但我看到了立方体的内部。这是我可以改变的某种形式的“观点”吗?如果是,怎么做

下面是代码和我的意思的图像

    Box ground = new Box(new Vector3f(1.0f, -1.0f, 1.0f), 5, 0,-5);
    Geometry groundPlane = new Geometry("GroundPlane", ground);
    Material groundMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    groundMat.setColor("Color", ColorRGBA.Brown);
    groundPlane.setMaterial(groundMat);

    for(int i = 1; i < 5; i++)
    {
        Box wall = new Box(new Vector3f(0.0f, -1.0f, 0.0f), new Vector3f((float)i, 0.0f, -1.0f));
        Geometry wallFace = new Geometry("WallMesh", wall);
        Material wallSkin = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        Texture tex_ml = assetManager.loadTexture("Interface/Wall.png");
        wallSkin.setTexture("ColorMap", tex_ml);
        wallFace.setMaterial(wallSkin);
        rootNode.attachChild(wallFace);            
    }

    rootNode.attachChild(groundPlane);      
Box地面=新的Box(新矢量3f(1.0f,-1.0f,1.0f),5,0,-5);
几何图形地平面=新几何图形(“地平面”,地面);
材料基础材料=新材料(资产管理人,“通用/材料定义/杂项/无阴影.j3md”);
地毡。毛色(“颜色”,ColorRGBA。棕色);
地平面。设置材料(地垫);
对于(int i=1;i<5;i++)
{
箱壁=新箱(新矢量3F(0.0f,-1.0f,0.0f),新矢量3F((浮动)i,0.0f,-1.0f));
几何体墙面=新几何体(“墙网格”,墙);
材料墙皮=新材料(资产管理器,“通用/MatDefs/Misc/Unshaded.j3md”);
Texture tex_ml=assetManager.loadTexture(“Interface/Wall.png”);
wallSkin.setTexture(“彩色地图”,tex_ml);
墙面材料(墙皮);
rootNode.attachChild(墙面);
}
rootNode.attachChild(地平面);
问候

艾登·斯特里多姆

完成-最终代码

Vector3f oldVec=Vector3f.ZERO;
向量3f newVec=向量3f.ZERO;
对于(int i=0;i<5;i++)
{
newVec=新向量3f((浮动)i,0.0f,0.0f);
箱壁=新箱(旧箱、新箱);
几何体墙面=新几何体(“墙网格”,墙);
材料墙皮=新材料(资产管理器,“通用/MatDefs/Misc/Unshaded.j3md”);
wallSkin.setTexture(“彩色地图”,tex_ml);
墙面材料(墙皮);
//wallSkin.getAdditionalRenderState().setWireframe(true);
oldVec=新矢量3f((浮动)i,-1.0f,-1.0f);
rootNode.attachChild(墙面);
}
rootNode.attachChild(地平面);

这个
框是您自己的还是由jmonkey提供的


如果是您自己的,您的三角形缠绕顺序将显示为翻转。

看起来您的法线指向相反的方向。检查渲染引擎以查看是否具有“反转法线”功能,或者需要按相反顺序提供顶点

或者试试这个方法

Box wall = new Box(new Vector3f(i, 0.0f, 0.0f), 1.0f, 1.0f, 1.0f);

Melak47-不,这是JME的问题,我仍然是一个新手,可以纠正我自己的错误(我想)Box构造函数的参数是什么?你经常使用-1.0,如果这是缩放,可能会导致你的脸翻转我把你的评论放在心上,只是我在
新矢量3f(0.0f,-1.0f,0.0f)
位置重新启动,并创建一个大小为
新矢量3f((float)i,0.0f,-1.0f)
的框,它将创建一个大小与前一个框相同的框(在上一个框上渲染)再加上1个单位…我必须存储上一个向量的位置-谢谢!
Box wall = new Box(new Vector3f(i, 0.0f, 0.0f), 1.0f, 1.0f, 1.0f);