1
\$\begingroup\$

My model must support transfer textures but I can't do this using mesh + modelBuilder.part

Opacity is tested correctly on only half of the model.

BlendingAttribute blendingAttribute = new BlendingAttribute();
        blendingAttribute.opacity = 1.0f;
        
        modelBuilder = new ModelBuilder();
        modelBuilder.begin(); 
        modelBuilder.part("minecraft:loading_model", mesh, 4, new Material(TextureAttribute.createDiffuse(atlas), blendingAttribute));
        modelInstance = new ModelInstance(modelBuilder.end());
\$\endgroup\$
  • 1
    \$\begingroup\$ It looks like you should show us the relevant code to reproduce this problem. \$\endgroup\$ – DMGregory Jun 22 at 20:44
  • \$\begingroup\$ Really .. sorry I went down \$\endgroup\$ – Yuu Jun 22 at 21:42
  • \$\begingroup\$ Looks like you're using alpha blending, without disabling z writes. You more likely want to use alpha testing, so that you abort the transparent fragments before they write to the depth buffer and block the next quad from drawing there. \$\endgroup\$ – DMGregory Jun 22 at 21:45
  • \$\begingroup\$ Yes, the minecraft oak tree should be composed of two planes with transparent pixels \$\endgroup\$ – Yuu Jun 22 at 21:49
  • \$\begingroup\$ I found the solution in a badlogic forum. modelInstance.materials.get(0).set(FloatAttribute.createAlphaTest(0.95f)); \$\endgroup\$ – Yuu Jun 23 at 2:42
1
\$\begingroup\$

I found the solution in a badlogic forum.

This:

modelBuilder.part("minecraft:loading_model", mesh, 4, new Material(TextureAttribute.createDiffuse(atlas), blendingAttribute, FloatAttribute.createAlphaTest(0.95f)));

Or this:

modelInstance.materials.get(0).set(FloatAttribute.createAlphaTest(0.95f));

enter image description here

| improve this answer | |
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.