当前位置: 首页 > 知识库问答 >
问题:

围绕Sphere OpenGL ES Android映射纹理

晏晨朗
2023-03-14

我试图在从Blender导出的球体周围映射一个纹理。该模型在Blender中看起来很棒,但当我在Android应用程序中使用它时,纹理似乎映射到了几乎每一张脸,而不是整个球体。有什么想法吗?我在Android上使用libGDX。

设置代码:

    model = G3dtLoader.loadStillModel(Gdx.files.internal("models/planet.g3dt"), true);

    for(StillSubMesh mesh: model.subMeshes) {
        mesh.mesh.scale(0.1f, 0.1f, 0.1f);
    }

    G3dExporter.export(model, Gdx.files.local("models/planet.g3d"));
    model = G3dLoader.loadStillModel(Gdx.files.local("models/planet.g3d"));

    texture = new Texture(Gdx.files.internal("textures/planet1_pot.png"), true);

    bounds = new BoundingBox();
    model.getBoundingBox(bounds);
    float len = bounds.getDimensions().len();

    cam = new PerspectiveCamera(60, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    cam.position.set(bounds.getCenter().cpy().add(len / 2, len / 2, len / 2));
    cam.lookAt(bounds.getCenter().x, bounds.getCenter().y, bounds.getCenter().z);
    cam.near = 0.1f;
    cam.far = 1000;

    renderer = new ImmediateModeRenderer10();

渲染代码:

    @Override
    public void renderScreen(float delta) {
        Gdx.gl.glClearColor(0, 0, 0, 1.0f);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
        Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);

        cam.update();
        cam.apply(Gdx.gl10);

        if(texture != null) {
            Gdx.gl.glActiveTexture(GL10.GL_TEXTURE);
            Gdx.gl.glEnable(GL10.GL_TEXTURE_2D);
            texture.bind();
        }

        model.render();

        if(texture != null) {
            Gdx.gl.glActiveTexture(GL10.GL_TEXTURE);
            Gdx.gl.glDisable(GL10.GL_TEXTURE_2D);
        }
    }

共有1个答案

涂承运
2023-03-14

我最终解决了这个问题。我在Blender中根据这个链接重新创建了我的模型,这个链接说它已被弃用,没有截图,但它帮助了我。最后我只是把我的模型导出为。obj和纹理现在映射到整个球体。

 类似资料:
  • 我有一个OpenGL程序,我想用地球的位图对球体进行纹理处理。我在搅拌器中准备了网格,并将其导出到OBJ文件。该程序加载适当的网格数据(顶点、uv和法线)和正确的位图-我已经用骨骼位图检查了它的纹理立方体。 我的程序是纹理球体,但不正确(或以我不期望的方式)。这个球体的每个三角形都包括这个位图的变形副本。我检查了位图,uv似乎没问题。我尝试了多种尺寸的位图(2的幂,2的倍数等)。 纹理是这样的:

  • 我已经创建了两个球体,目前正在尝试对它们进行纹理处理。然而,纹理坐标似乎有点偏离。 纹理应用于两个球体的结果(你可以忽略不在正方形周围的黑线,这只是相机-是的,这是AR应用程序): 现在,我使用perl脚本导出球体,我发现它将obj文件转换为顶点和纹理代码列表OBJ2OPENGL。obj文件已转换为2160顶点。 当我渲染球体时:

  • 问题内容: 我正在寻找一种确定范围的方法 。 Golang规范指出以下内容: 未指定地图的迭代顺序,并且不能保证每次迭代之间都相同。如果在迭代过程中删除尚未到达的映射条目,则不会生成相应的迭代值。如果映射条目是在迭代过程中创建的,则该条目可能在迭代过程中产生或可以被跳过。对于创建的每个条目以及从一个迭代到下一个迭代,选择可能有所不同。如果映射为nil,则迭代次数为0。 我在StackOverflo

  • 本文向大家介绍java实现OpenGL ES纹理映射的方法,包括了java实现OpenGL ES纹理映射的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java实现OpenGL ES纹理映射的方法。分享给大家供大家参考。具体如下: 1. GlRenderer.java文件: 2. Square.java文件: 3. Triangle.java文件: 4. Run.java文件: 希望

  • Message Mapping and Command Routing 消息映射机制与命令绕行,活像是米诺托斯的迷宫,是 MFC 最曲折幽深的神秘地带。 你已经从前一章中彻底了解了MFC程序极端重要的Document/View 架构。本章的重点有两个,第一个是修改程序的人机接口,增添选单项目和工具列按钮。这一部分藉Visual C++ 工具之助,非常简单,但是我们往往不知道该在程序的什么地方(哪一

  • 我有一张按天索引的工作班次图