LIbgdx 3d world coordiantes to screen coordinates returns wrong values

I have a simple project to render a 3D model (simple cube) using Perspective camera in android. The model is rendered fine but I need to get its coordinates on the device screen. Using project() method of the perspective camera returns the wrong values which are out of bounds of the viewport and screen device (2048*1536). The snippet below is the code I’ve used to get screen coordinates in render() method. How can I achieve the right x,y screen coordinate from 3d model?

Vector3 red_cube;
private void loadModel() {

	ModelInstance m1 = new ModelInstance(createPointModel(Color.RED));
	red_cube = new Vector3(516326, 423652, 1200);
	m1.transform.setToTranslation(node2);
	
	modelInstances.add(m1);
}

Vector3 loc = new new Vector3(516340, 423635, 1200);
Vector3 dir = new float[]{220, -80, 0};

@Override
public void render() {

	if (!isLoaded) {
		loadModel();
		isLoaded = true;
	}
	Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
	Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
	
	Vector3 v = camera.project(red_cube);
	Log.d("red_cube:", v.x + ", " + v.y);

	Vector3 pointing = OrientationSensorFusion.getDirection(dir);
	camera.position.set(loc);
	camera.direction.set(pointing);
	camera.update();
	
	modelBatch.begin(camera);
	modelBatch.render(modelInstances, environment);
	modelBatch.end();
	
}