Jump to content

[1.12] Rendering item from .obj not working!


Electric

Recommended Posts

Hello,

I'm attempting to create a mod with blocks and items rendered using .obj files. I have been able to successfully render a block from an .obj file, but rendering an item is proving to be much more difficult, and it relentlessly shows up as the pink and black texture in game. I cannot figure out what I am doing wrong. 

 

Here is my item's class:

public ItemSonicScrewdriver() {
        setRegistryName("itemsonicscrewdriver");
        setUnlocalizedName(OperationBlueBox.MODID + ".itemsonicscrewdriver");
    }

    @SideOnly(Side.CLIENT)
    public void initModel() {
        ModelLoader.setCustomModelResourceLocation(this, 0, new ModelResourceLocation(getRegistryName(), "inventory"));
    }

 

And here's how I've registered it in my ModItems class, which is then used in my ClientProxy:

@GameRegistry.ObjectHolder("operationbluebox:itemsonicscrewdriver")
    public static ItemSonicScrewdriver itemSonicScrewdriver;

    @SideOnly(Side.CLIENT)
    public static void initModels() {
        itemSonicScrewdriver.initModel();
    }

I've also tried using someone's block states file that seemed to work for them:

Spoiler

{
  "forge_marker": 1,
  "defaults": {
    "textures": {
      "#itemsonicscrewdriver": "operationbluebox:items/sonicscrewdrivertexture"
    },
    "model": "operationbluebox:itemsonicscrewdriver.obj"
  },
  "variants": {
    "normal": [{}],
    "inventory": [{
      "transform": {
        "firstperson": {
          "translation": [0.1, 0, -0.3],
          "rotation": [ { "y": 130}, {"x": 0}, {"z": 0} ],
          "scale": 0.2
        },
        "thirdperson": {
          "translation": [0.02, 0.05, -0.05],
          "rotation": [ { "y": 0}, {"x": -92}, {"z": 0} ],
          "scale": 0.07
        },
        "gui": {
          "translation": [0, -0.1, 0],
          "scale": 0.16
        }
      }
    }]
  }
}

 

And I have made sure to place the .obj and .mtl files in my models/block folder. All help is appreciated.

Link to comment
Share on other sites

10 hours ago, Matryoshika said:

You have to call OBJLoader.INSTANCE.addDomain(MODID) before you register you models

I have done so in my ClientProxy, so I'm sure this can't be the issue ... unless I did it wrong somehow.

@Override
    public void preInit(FMLPreInitializationEvent event) {
        super.preInit(event);

        OBJLoader.INSTANCE.addDomain(OperationBlueBox.MODID);
    }

    @SubscribeEvent
    public static void registerModels(ModelRegistryEvent event) {
        ModBlocks.initModels();
        ModItems.initModels();
    }

 

I also find it weird that after running the Minecraft client, this shows in my console, which makes it seem as though it has loaded the .obj model, even though it does not show up in-game:

[FML]: OBJLoader.MaterialLibrary: key 'Ns' (model: 'operationbluebox:models/block/itemsonicscrewdriver.mtl') is not currently supported, skipping
[10:28:08] [main/INFO] [FML]: OBJModel: A color has already been defined for material 'itemsonicscrewdriver' in 'operationbluebox:models/block/itemsonicscrewdriver.mtl'. The color defined by key 'Ks' will not be applied!
[10:28:08] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key 'Ke' (model: 'operationbluebox:models/block/itemsonicscrewdriver.mtl') is not currently supported, skipping
[10:28:08] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key 'Ni' (model: 'operationbluebox:models/block/itemsonicscrewdriver.mtl') is not currently supported, skipping
[10:28:08] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key 'illum' (model: 'operationbluebox:models/block/itemsonicscrewdriver.mtl') is not currently supported, skipping

 

Link to comment
Share on other sites

The errors are fine. It's just extra fanciness that the ObjLoader won't support
Is the item a purple/black cube?
Or is it just "empty"?

Oh, and you should put the OBjLoader#addDomain call inside the registerModels method, before you call ModBlocks.initModels().

Edited by Matryoshika

Also previously known as eAndPi.

"Pi, is there a station coming up where we can board your train of thought?" -Kronnn

Published Mods: Underworld

Handy links: Vic_'s Forge events Own WIP Tutorials.

Link to comment
Share on other sites

Check that the obj file is decorated at some point with the field usemtl itemsonicscrewdriver and that the mtl is decorated with the field newmtl itemsonicscrewdriver and that there is a definition for said material. 

 

To rule out whether it is a problem taking root in the way the JSON file is written or a problem in the obj and mtl files, remove temporarily the application of the texture in the JSON file and try to apply the texture in the mtl file instead by decorating at the end of the material definition (in the mtl file) with map_Kd operationbluebox:items/sonicscrewdrivertexture.

 

Edit: Does your object extends from item or from block? Because the model appears to be loaded from the block models according to the log, but the naming used gives the impression that it is an item. If it is a block, it also needs to be registered as an item as far as I'm concerned. Sometimes, when one fails to register the item form of a block, the texture appears well in the inventory and when in hand, but when the block is placed in the world, the texture is purple and black. And no error appears on the log. That's why I ask.

Edited by ctbe
Link to comment
Share on other sites

So my .obj file was exported from blender, and has the field mtllib itemsonicscrewdriver.mtl which seems to work, since it does give information on the .mtl file in the console log. Section of my .obj file:

Spoiler

# Blender v2.78 (sub 0) OBJ File: ''
# www.blender.org
mtllib itemsonicscrewdriver.mtl
o SonicScrewdriverReal
v 0.125000 5.000000 0.125001
v -0.125000 -0.000000 0.125000

And I already did have the map_Kd operationbluebox:items/sonicscrewdrivertexture in my .mtl file. Is this problematic to have the texture applied in both the .mtl file and the .json blockstate file? I tried running the mod once with only the texture defined in the .json, and once with it only defined in the .mtl, but neither worked. My .mtl file:

Spoiler

# Blender MTL File: 'None'
# Material Count: 1

newmtl itemsonicscrewdriver
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
map_Kd operationbluebox:items/sonicscrewdrivertexture

 

 

And I'm trying to register this model as an item only, but I'm also trying to have it use a blockstate file in order to add rotations and other information to the model. 

 

I'm pretty certain that the model isn't working because I've done something wrong with the .json in the blockstates folder, but I'm not entirely sure.

Link to comment
Share on other sites

Hi there,

 

EDiT:

So, I have to pull back my "having probably the same problem" reply, because I found what was wrong at my side: î 

Thats right. As some might have noticed, my mod may end up with something that starts with "ianus".  And while being sad that nothing worked at my side, I noticed that the blockfile.json for that .obj I created was oddly out of sorting, at the very bottom of its folder, while it should have been somewhere in the middle. 

Turns out, I somehow hit the stargate-key at my keyboard when writing the blockstates filename, so instead of   i   I got an   î  .... now try to spot this with monitors keep on growing and growing. 

 

Anyway, one thing from my original post remains: 

 

Regarding the "no error log", I had a similiar experience, but than one of the veterans from forge pointed out that I do use a forge version where the model problem log output was broken.

At the moment my forge is... 2402. You may try updating, if you haven't, to get some more error output.

 

Now... hoping for helping hands too,

 

Confused Merlin

Edited by ConfusedMerlin
found my problem, and its unlikely to be his too
Link to comment
Share on other sites

  • 7 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.