Java Can';使用3D时不要使用ShaperedNeer

Java Can';使用3D时不要使用ShaperedNeer,java,libgdx,Java,Libgdx,让我解释一下我在这里尝试的是什么: 我的应用程序将在大部分情况下使用3d渲染,但对于开发和调试,我将尝试使用ShaperEnder进行绘制路径、调试碰撞等操作 但我无法在屏幕上显示任何东西,我迷路了。我怀疑摄像机有问题,但请提出建议和解决方案。以下是我正在做的: public void create () { assets = new AssetManager(); assets.load("button.g3db", Model.class); camera = new Pers

让我解释一下我在这里尝试的是什么: 我的应用程序将在大部分情况下使用3d渲染,但对于开发和调试,我将尝试使用ShaperEnder进行绘制路径、调试碰撞等操作

但我无法在屏幕上显示任何东西,我迷路了。我怀疑摄像机有问题,但请提出建议和解决方案。以下是我正在做的:

public void create () {
  assets = new AssetManager();
  assets.load("button.g3db", Model.class);

  camera = new PerspectiveCamera(75, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
  camera.position.set(0f, 0f, 5f);
  camera.lookAt(0f,0f,0f);
  camera.near = 1f;
  camera.far = 100.0f;

  shapeRenderer = new ShapeRenderer();
  shapeRenderer.setProjectionMatrix(camera.combined);

  modelBatch = new ModelBatch();

  //some Bezier curve to draw for debuging
  Bezier<Vector3> points = ButtonUtils.getButtonEscapePath();
  int k = 100;
  pointsArray = new Vector3[k];
  for(int i = 0; i < k; ++i)
  {
    pointsArray[i] = new Vector3();
    points.valueAt(pointsArray[i], ((float)i)/((float)k-1));
  }

  environment = new Environment();
  DirectionalLight light = new DirectionalLight();
  light.set(0.8f, 0.8f, 0.8f, new Vector3(-1f, -0.8f, -0.2f));
  environment.set(new ColorAttribute(ColorAttribute.AmbientLight, 0.4f, 0.4f, 0.4f, 1f));
  environment.add(light);
}

public void render () {
  Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
  Gdx.gl.glClearColor(0, 0, 0, 1);
  Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
  camera.update();

  modelBatch.begin(camera);
  modelBatch.render(button, environment);
  modelBatch.end();

  //drawing debug circles around 3D object
  shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
  shapeRenderer.setColor(Color.WHITE);
  shapeRenderer.circle(button.getPosition().x, button.getPosition().y, 50f, 50);
  shapeRenderer.end();

  //drawing Bezier curve
  int k = 100;
  shapeRenderer.begin(ShapeRenderer.ShapeType.Line);
  for(int i = 0; i < k-1; ++i)
  {
    shapeRenderer.line(pointsArray[i], pointsArray[i+1]);
  }
  shapeRenderer.end();
}
public void create(){
资产=新资产管理器();
assets.load(“button.g3db”,Model.class);
camera=new PerspectiveCamera(75,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
摄像机位置设置(0f、0f、5f);
摄像机。注视(0f,0f,0f);
摄像机近距离=1f;
相机远距=100.0f;
ShaperEnder=新的ShaperEnder();
setProjectionMatrix(camera.combined);
modelBatch=新modelBatch();
//一些贝塞尔曲线绘制调试
Bezier points=ButtonUtils.GetButtonCapepath();
int k=100;
pointsArray=新矢量3[k];
对于(int i=0;i

编辑:微小的修正,我可以在屏幕上看到一些东西,我的意思是3d模型显示得很好,ShaperEnder的东西不会显示。

也许可以放ShaperEnder.setProjectionMatrix(camera.combined);在“在摄影机.update()之后的渲染方法中”(当然,在进行形状渲染之前)中,该方法起作用!你想让它成为一个答案吗?也许把shaperender.setProjectionMatrix(camera.combined)放进去;在camera.update()之后的render方法中(当然是在进行形状渲染之前),这是有效的!你想回答这个问题吗?