Obj рендер

Версия Minecraft
1.12.2
214
11
59
Этот вопрос уже наверняка задавался, но у меня не получилось никаким запросом найти ответ на него =\

Нужно зарендерить LayerRenderer на игроке с .obj моделью. Сейчас код выглядит примерно так:
Java:
public class LayerAccessory implements LayerRenderer<AbstractClientPlayer> {

    private RenderLivingBase<AbstractClientPlayer> render;
    private IBakedModel model;

    public LayerAccessory(RenderLivingBase<AbstractClientPlayer> render) {
        this.render = render;
        try {
            model = OBJLoader.INSTANCE.loadModel(new ResourceLocation(XlvsMainMod.MOD_ID, "models/test.obj"))
                    .bake(TRSRTransformation.identity(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void doRenderLayer(AbstractClientPlayer entitlingIn, float limbSwing, float limbSwingAmount, float partialTicks,
                              float ageInTicks, float netHeadYaw, float headPitch, float scale) {
        Player player = XlvsMainMod.INSTANCE.getPlayerManager().getPlayerByName(entitlingIn.getName());
        if(player != null) {
            AppearanceElement appearanceElement = player.accessory;
            if(appearanceElement != null && appearanceElement.getModel() != null
                    && appearanceElement.getResourceLocation() != null) {
                ResourceLocation resourceLocation = appearanceElement.getResourceLocation();
                GL11.glPushMatrix();
                ((ModelBiped) render.getMainModel()).bipedHead.postRender(0.0625F);
                Minecraft.getMinecraft().getTextureManager().bindTexture(resourceLocation);
                float scl = appearanceElement.getScale();
                GL11.glScalef(scl, scl, scl);
                GL11.glScalef(5, 5, 5);
                Tessellator tessellator = Tessellator.getInstance();
                BufferBuilder worldrenderer = tessellator.getBuffer();
                worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.ITEM);
                for (BakedQuad bakedquad : this.model.getQuads(null, null, 0)) {
                    worldrenderer.addVertexData(bakedquad.getVertexData());
                }
                tessellator.draw();

                GL11.glPopMatrix();
            }
        }
    }

    @Override
    public boolean shouldCombineTextures() {
        return false;
    }
}
Конкретно этот код крашит клиент на переборе this.model.getQuads.
Java:
> java.lang.NullPointerException: null
     at ru.xlv.wh40k_races.render.layer.LayerAccessory.doRenderLayer(LayerAccessory.java:68) ~[LayerAccessory.class:?]
     at ru.xlv.wh40k_races.render.layer.LayerAccessory.func_177141_a(LayerAccessory.java:25) ~[LayerAccessory.class:?]
     at net.minecraft.client.renderer.entity.RenderLivingBase.func_177093_a(RenderLivingBase.java:439) ~[caa.class:?]
     at net.minecraft.client.renderer.entity.RenderLivingBase.func_76986_a(RenderLivingBase.java:186) [caa.class:?]
     at net.minecraft.client.renderer.entity.RenderPlayer.func_76986_a(RenderPlayer.java:71) [cct.class:?]
     at net.minecraft.client.renderer.entity.RenderPlayer.func_76986_a(RenderPlayer.java:28) [cct.class:?]
     at net.minecraft.client.renderer.entity.RenderManager.func_188391_a(RenderManager.java:384) [bzf.class:?]
     at ru.xlv.wh40k_races.gui.GuiRaceSelection.drawEntityOnScreen(GuiRaceSelection.java:296) [GuiRaceSelection.class:?]
     at ru.xlv.wh40k_races.gui.GuiRaceSelection.func_73863_a(GuiRaceSelection.java:127) [GuiRaceSelection.class:?]
     at net.minecraftforge.client.ForgeHooksClient.drawScreen(ForgeHooksClient.java:396) [ForgeHooksClient.class:?]
     at net.minecraft.client.renderer.EntityRenderer.func_181560_a(EntityRenderer.java:1124) [buq.class:?]
     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1119) [bib.class:?]
     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) [bib.class:?]
     at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
     at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
[18:02:56] [Client thread/FATAL] [minecraft/Minecraft]: Unreported exception thrown!
java.lang.IllegalStateException: Already building!
     at net.minecraft.client.renderer.BufferBuilder.func_181668_a(BufferBuilder.java:187) ~[buk.class:?]
     at net.minecraft.client.shader.Framebuffer.func_178038_a(Framebuffer.java:264) ~[bvd.class:?]
     at net.minecraft.client.shader.Framebuffer.func_147615_c(Framebuffer.java:229) ~[bvd.class:?]
     at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1147) ~[bib.class:?]
     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:398) [bib.class:?]
     at net.minecraft.client.main.Main.main(SourceFile:123) [Main.class:?]
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_211]
     at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_211]
     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
     at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
Мог бы кто поделиться решением ?
 
Последнее редактирование:
3,005
192
592
214
11
59
@Doc Ага, заметил такое на загрузке модели
Java:
> [19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Error loading model previously: wh40k_races:models/test.obj
[QUOTE] [19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraftforge.client.model.obj.OBJLoader.loadModel(OBJLoader.java:114)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at ru.xlv.wh40k_races.render.layer.LayerAccessory.<init>(LayerAccessory.java:33)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at ru.xlv.wh40k_races.asm.XlvsHooks.init(XlvsHooks.java:41)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.renderer.entity.RenderPlayer.<init>(RenderPlayer.java:50)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.renderer.entity.RenderPlayer.<init>(RenderPlayer.java:35)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.renderer.entity.RenderManager.<init>(RenderManager.java:227)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:518)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.main.Main.main(SourceFile:123)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at java.lang.reflect.Method.invoke(Unknown Source)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[19:15:42] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]: Caused by: java.io.FileNotFoundException: wh40k_races:models/test.mtl
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraft.client.resources.FallbackResourceManager.func_110536_a(FallbackResourceManager.java:69)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraft.client.resources.SimpleReloadableResourceManager.func_110536_a(SimpleReloadableResourceManager.java:65)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJModel$MaterialLibrary.parseMaterials(OBJModel.java:507)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJModel$Parser.parse(OBJModel.java:250)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJLoader.loadModel(OBJLoader.java:97)
[19:15:42] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     ... 14 more
[/QUOTE]
Обязательно кормить ему еще и .mtl ?
 
3,005
192
592
На сколько я знаю, если .mtl юзается, тогда ему нужно.
С .obj сильно не работал.
 
214
11
59
добавил .mtl. Ошибка при загрузке модели преобразовалась :)
Java:
> [16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Error loading model previously: wh40k_races:models/test.obj
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraftforge.client.model.obj.OBJLoader.loadModel(OBJLoader.java:114)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at ru.xlv.wh40k_races.render.layer.LayerAccessory.<init>(LayerAccessory.java:33)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at ru.xlv.wh40k_races.asm.XlvsHooks.init(XlvsHooks.java:41)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.renderer.entity.RenderPlayer.<init>(RenderPlayer.java:50)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.renderer.entity.RenderManager.<init>(RenderManager.java:229)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.Minecraft.func_71384_a(Minecraft.java:518)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:378)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.client.main.Main.main(SourceFile:123)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at java.lang.reflect.Method.invoke(Unknown Source)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.launchwrapper.Launch.launch(Launch.java:135)
[16:24:45] [Client thread/INFO] [STDERR]: [ru.xlv.wh40k_races.render.layer.LayerAccessory:<init>:37]:     at net.minecraft.launchwrapper.Launch.main(Launch.java:28)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]: Caused by: java.lang.RuntimeException: OBJLoader.Parser: Exception parsing line #30: [ICODE]vt 1.05859375 0.99609375[/ICODE]
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJModel$Parser.parse(OBJModel.java:376)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJLoader.loadModel(OBJLoader.java:97)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at ru.xlv.wh40k_races.render.layer.LayerAccessory.<init>(LayerAccessory.java:33)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at ru.xlv.wh40k_races.asm.XlvsHooks.init(XlvsHooks.java:41)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraft.client.renderer.entity.RenderPlayer.<init>(RenderPlayer.java:50)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraft.client.renderer.entity.RenderPlayer.<init>(RenderPlayer.java:35)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraft.client.renderer.entity.RenderManager.<init>(RenderManager.java:227)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     ... 9 more
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]: Caused by: net.minecraftforge.client.model.obj.OBJModel$UVsOutOfBoundsException: Model 'wh40k_races:models/test.obj' has UVs ('vt') out of bounds 0-1! The missing model will be used instead. Support for UV processing will be added to the OBJ loader in the future.
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     at net.minecraftforge.client.model.obj.OBJModel$Parser.parse(OBJModel.java:281)
[16:24:45] [Client thread/INFO] [STDERR]: [java.lang.Throwable:printStackTrace:-1]:     ... 15 more
 
3,005
192
592
Сверху