Я работаю над 3D-моделированием путешествий по пространству с объектами в нем. 3D-объекты, которые визуализируются, кажутся «прозрачными»: 3D-объекты видны друг другу в libGDX
Шары одинакового размера. большой впереди. Цвет модели НЕ установлен в прозрачный. Я предположил, что порядок рендеринга может привести к его (как в 2D), и сделал объекты сопоставимыми и отсортировал их до рендеринга. Это не решило проблему.
Вот код:
public void render(float delta) {
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
//We clear the screen
camera.update();
this._game_.modelBatch.begin(camera);
ModelInstance inst;
Orb closestOrb = null;
float minDistance = Float.MAX_VALUE;
for (Orb orb : this._game_.orbsList)
{
if (orb.getZ()< _game_.player.getPosition().z)
{
inst = new ModelInstance(this._game_.orbModel);
inst.transform.setToTranslation(orb.getX(),orb.getY(),orb.getZ());
this._game_.modelBatch.render(inst, this._game_.environment);
if (minDistance > Physics.getDistacne(_game_.player.getPosition(),orb.getPosition()))
{
minDistance = Physics.getDistacne(_game_.player.getPosition(), orb.getPosition());
closestOrb = orb;
}
}
}
this._game_.modelBatch.end();
здесь код модели в игре:
modelBatch = new ModelBatch();//the screen uses this
modelBuilder = new ModelBuilder();
Material orbMaterial = new Material(ColorAttribute.createDiffuse(0.5f, 0.5f, 1f,1f));
//createDiffuse(Color.MAGENTA));
long orbAttributes = Usage.Position | Usage.Normal;
orbModel = modelBuilder.createSphere(Orb.STANDARD_ORB_SIZE,Orb.STANDARD_ORB_SIZE, Orb.STANDARD_ORB_SIZE,30,30, orbMaterial, orbAttributes);
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));
orbsList = new ArrayList<Orb>();
for (int i = 0; i < SimGame.NUM_OF_ORBS; i++)
{
Orb orb = Orb.generateOrb(-SimGame.WORLD_SIZE,SimGame.WORLD_SIZE, Orb.STANDARD_ORB_SIZE);
orbsList.add(orb);
}
Collections.sort(orbsList);
В каком направлении вы их отсортировали? Ближе всего? Вы пытались изменить порядок и попробовать сделать так? – Paddyd
yes Я пробовал в обоих направлениях –