java - 在 libgdx 中导入扩展名为 md2 的对象

标签 java eclipse libgdx

我是java游戏编程新手,我想导入一个md2对象,我使用了这个tuto http://code.google.com/p/libgdx-users/wiki/MD2_Keyframe_Animation 但问题是我无法实例化 KeyframedModelViewer 类的实例,这是我的代码

package com.ELISA.ELISAgame.Screens;
import com.ELISA.ELISAgame.ELISA;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.assets.AssetManager;
import com.badlogic.gdx.assets.loaders.ModelLoader;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.graphics.g3d.Material;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.ModelBatch;
import com.badlogic.gdx.graphics.g3d.ModelInstance;
/*import com.badlogic.gdx.graphics.g3d.attributes.TextureAttribute;*/
import com.badlogic.gdx.graphics.g3d.loader.ObjLoader;
import com.badlogic.gdx.graphics.g3d.utils.CameraInputController;


public class Game implements ApplicationListener, Screen {


ELISA game;
PerspectiveCamera cam;
CameraInputController camController;
ModelBatch modelBatch;
ModelLoader loader;
AssetManager assets;
Model model;
Material material;
ModelInstance instance;

public Game(ELISA game) {
    this.game = game;


}

public void create() {


}

@Override
public void render(float delta) {
    camController.update();
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
    modelBatch.begin(cam);
    modelBatch.render(instance);

    modelBatch.end();

}

@Override
public void resize(int width, int height) {


}

@Override
public void show() {

    //new JoglApplication(new KeyframedModelViewer("data/antigene.md2", "data/antigene.png"), "KeframedModel Viewer", 800, 480, false);
    modelBatch = new ModelBatch();
    cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    cam.position.set(0f, 6f, 11.5f);
    cam.lookAt(0, 0, 0);
    cam.near = 0.8f;
    cam.far = 300f;
    cam.update();

    loader = new ObjLoader();
     //model = loader.loadModel(Gdx.files.internal("data/labo.obj"));
     instance = new ModelInstance(model);
     Material material = new Material("material", new TextureAttribute(texture, 0, "s_tex"));
     model.setMaterial(material);
    camController = new CameraInputController(cam);
    Gdx.input.setInputProcessor(camController);

}

@Override
public void hide() {


}

@Override
public void pause() {


}

@Override
public void resume() {


}

@Override
public void dispose() {
    modelBatch.dispose();
    model.dispose();


}

}

最佳答案

那个 wiki“libgdx-users”已经非常过时了。目前不支持 MD2,这是现在处理 3D 动画的方式:

https://github.com/libgdx/libgdx/wiki/3D-animations-and-skinning

“当使用 fbx-conv https://github.com/libgdx/fbx-conv 将模型从 FBX 转换为 G3DB/G3DJ 时,动画会随之自动转换。就像 FBX 一样,G3DB/G3DJ 文件可以在单个文件中包含多个动画以及其他模型数据。应用于源 FBX 文件中不存在的节点的动画将不会被转换。因此,在导出到 FBX 时,请确保选择所有节点和动画。”

关于java - 在 libgdx 中导入扩展名为 md2 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20359630/

相关文章:

java - Jboss7 OSGI 上的 hibernate (无 EJB)

java - 从自定义类中创建数组?

java - 如何从 eclipse 项目(包括库)制作 jar 文件?

audio - LibGDX - 如何防止声音在重叠时播放得太大声?

java - 如何将按钮添加到 libgdx 中的 ApplicationAdapter?

java - android 共享首选项和 map

java - 不变性和可读性

java - 如何将当前功能传递给单个测试

eclipse - MercurialEclipse - 显示历史记录不起作用

java - Libgdx - Mtx 纹理未显示在屏幕上