Android 基于libgdx的pan三维模型
我正在尝试平移3d对象,但它似乎不起作用。我做了一个左右滑动的手势,沿着x轴平移对象。我添加了一个Android 基于libgdx的pan三维模型,android,libgdx,pan,Android,Libgdx,Pan,我正在尝试平移3d对象,但它似乎不起作用。我做了一个左右滑动的手势,沿着x轴平移对象。我添加了一个Log语句,它清楚地显示了logcat中的pan值,但对象仍然没有移动 这是我的密码 public class 3DTest implements ApplicationListener, GestureListener { public ModelBatch modelBatch; public Model model; public ModelInstance instance; public
Log
语句,它清楚地显示了logcat中的pan值,但对象仍然没有移动
这是我的密码
public class 3DTest implements ApplicationListener, GestureListener {
public ModelBatch modelBatch;
public Model model;
public ModelInstance instance;
public Environment environment;
public OrthographicCamera camera;
public CameraInputController camController;
public PerspectiveCamera cam;
public ModelLoader loader;
@Override
public void create() {
// TODO Auto-generated method stub
InputMultiplexer im = new InputMultiplexer();
modelBatch = new ModelBatch();
environment = new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
environment.add(new DirectionalLight().set(0.8f, 0.8f, 0.8f, -1f, -0.8f, -0.2f));
camera = new OrthographicCamera(1280, 720);
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(1f, 1f, 1f);
cam.lookAt(0,0,0);
cam.near = 0.1f;
cam.far = 300f;
cam.update();
camController = new CameraInputController(cam);
loader = new ObjLoader();
model = loader.loadModel(Gdx.files.internal("data/cube.obj"));
instance = new ModelInstance(model);
im.addProcessor(new GestureDetector(this));
im.addProcessor(camController);
Gdx.input.setInputProcessor(im);
}
@Override
public void dispose() {
// TODO Auto-generated method stub
modelBatch.dispose();
model.dispose();
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void render() {
// TODO Auto-generated method stub
camController.update();
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
modelBatch.begin(cam);
modelBatch.render(instance, environment);
modelBatch.end();
}
@Override
public void resize(int arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public boolean fling(float arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean longPress(float arg0, float arg1) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean pan(float arg0, float arg1, float arg2, float arg3) {
// TODO Auto-generated method stub
Log.i("App","pan" +arg2);
camera.translate(arg2, 0);
camera.update();
return false;
}
@Override
public boolean panStop(float arg0, float arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean pinch(Vector2 arg0, Vector2 arg1, Vector2 arg2, Vector2 arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean tap(float arg0, float arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean touchDown(float arg0, float arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean zoom(float arg0, float arg1) {
// TODO Auto-generated method stub
return false;
}
}
更改cam
中的“z”(第三个参数)
工作正常。您正在平移正交摄影机,但正在使用透视摄影机渲染modelbatch。这就解释了为什么您的视图没有改变。我也尝试过使用同一台摄影机进行平移和渲染,但对象仍然不移动:(你为什么要说,你想平移3D对象,但你要平移相机?@TheWhiteLlama:这是错误的,我知道,但我尝试了所有可能的方法。我的主要任务是平移3D对象,但我不知道如何做。我应该用相机做些什么吗?或者我应该用平移方法做些什么……请帮助我是libgd新手席在平底锅里加了一句话……我应该写什么?@ ParthDoshi在CeTead()中只需改变你的线凸轮。位置。设定(1F,1F,1F);到凸轮。位置。设置(1F,1F,-10F);替换什么?我替换凸轮。位置。…我现在是否需要更改pan方法中的任何内容?pan方法中的代码如何?我是否需要更改该行或其余代码中的任何其他行。请帮助!谢谢!但目前它正在X方向平移摄影机..可以吗?`cam.translate(arg2,0,0)?
cam.position.set(1f, 1f, -10f);