Non résolu Modèle OBJ complétement sombre au rendu
-
Bonjour,
je me suis récemment mis aux modèles .obj mais j’ai rencontré un problème quant au rendu, je n’arrive pas à comprendre si le problème pourrait venir du .mtl ou alors simplement du système que j’utilise pour afficher mes modèles.
Voici ce que j’ai en jeu:
Et voici mon code:package com.twiguinou.powersfa.client.registry; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.vertex.IVertexBuilder; import com.twiguinou.powersfa.StringID; import com.twiguinou.powersfa.util.client.RendererUtil; import net.minecraft.client.renderer.Atlases; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.model.*; import net.minecraft.client.renderer.texture.NativeImage; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.data.AnimationMetadataSection; import net.minecraft.util.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.data.EmptyModelData; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.client.model.obj.OBJModel; import javax.annotation.Nullable; import java.util.Random; public class AssociativeOBJModel { private final ResourceLocation location; @OnlyIn(Dist.CLIENT) private final OBJModel objModel; public AssociativeOBJModel(String label) { this.location = new ResourceLocation(StringID.ID, "models/customs/obj/" + label); this.objModel = OBJLoader.INSTANCE.loadModel(new OBJModel.ModelSettings(this.location, false, true, true, true, null)); } @OnlyIn(Dist.CLIENT) public void render(MatrixStack matrix, IRenderTypeBuffer buffer, int light) { matrix.push(); IBakedModel bakedModel = this.objModel.bake(new OBJModelConfiguration(this.location), ModelLoader.instance(), (material) -> new DummySprite(), ModelRotation.X0_Y0, null, this.location); IVertexBuilder builder = buffer.getBuffer(Atlases.getSolidBlockType()); for(BakedQuad quad : bakedModel.getQuads(null, null, new Random(), EmptyModelData.INSTANCE)) { float[] colors = RendererUtil.decode(quad.getTintIndex()); builder.addVertexData(matrix.getLast(), quad, colors[0], colors[1], colors[2], colors[3], light, OverlayTexture.NO_OVERLAY, true); } matrix.pop(); } private static class DummySprite extends TextureAtlasSprite { protected DummySprite() { super(null, new Info(OBJModelConfiguration.TEXTURE, 1, 1, AnimationMetadataSection.EMPTY), 0, 1, 1, 0, 0, new NativeImage(1, 1, false)); } @Override public float getInterpolatedU(double u) { return (float) u / 16; } @Override public float getInterpolatedV(double v) { return (float) v / 16; } } private static class OBJModelConfiguration implements IModelConfiguration { private static final ResourceLocation TEXTURE = new ResourceLocation(StringID.ID, "dummy"); private final ResourceLocation modelLocation; public OBJModelConfiguration(ResourceLocation location) { this.modelLocation = location; } @Nullable @Override public IUnbakedModel getOwnerModel() { return null; } @Override public String getModelName() { return modelLocation.toString(); } @Override public boolean isTexturePresent(String name) { return false; } @Override public Material resolveTexture(String name) { return new Material(TEXTURE, TEXTURE); } @Override public boolean isShadedInGui() { return true; } @Override public boolean isSideLit() { return true; } @Override public boolean useSmoothLighting() { return true; } @Override public ItemCameraTransforms getCameraTransforms() { return ItemCameraTransforms.DEFAULT; } @Override public IModelTransform getCombinedTransform() { return ModelRotation.X0_Y0; } } }
-
Bonjour,
Petite question que je trouve importante, le rendu est sombre (mais avec les bonnes textures) ou noir (parce qu’il semble l’être) ?
-
Puisque il est complètement noir je ne peux pas trop déterminer si le rendu est trop sombre ou simplement dépourvu de couleur. En sachant que je n’ai pas de message d’erreur concernant l’accès à la texture que je veux appliquer.