Java Can';使用3D时不要使用ShaperedNeer
让我解释一下我在这里尝试的是什么: 我的应用程序将在大部分情况下使用3d渲染,但对于开发和调试,我将尝试使用ShaperEnder进行绘制路径、调试碰撞等操作 但我无法在屏幕上显示任何东西,我迷路了。我怀疑摄像机有问题,但请提出建议和解决方案。以下是我正在做的: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
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方法中(当然是在进行形状渲染之前),这是有效的!你想回答这个问题吗?