Jump to content
  • Home
  • Files
  • Docs
  • Merch
Topics
  • All Content

  • This Topic
  • This Forum

  • Advanced Search
  • Existing user? Sign In  

    Sign In



    • Not recommended on shared computers


    • Forgot your password?

  • Sign Up
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • OBJ model has default texture
1.13 Update Notes for Mod Creators
Sign in to follow this  
Followers 1
Xumuk

OBJ model has default texture

By Xumuk, August 20, 2018 in Modder Support

  • Reply to this topic
  • Start new topic

Recommended Posts

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 20, 2018 (edited)

 

Hello eweryone!
The loading of the mtl library. More precisely, it works, but the texture of it is not loaded.

The model is loaded, but the texture is not. Forge does not throw an error. Only the notification that the texture I use for my model is not supported and is skipping.

My MC version - 1.12.2

Loading the model like this:

   public static void registerRenderObj(Block block) {
         ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block),0, new ModelResourceLocation(new ResourceLocation(block.getRegistryName().getResourceDomain(), block.getRegistryName().getResourcePath().concat(".obj")),"inventory"));
    }
Spoiler

#this is mtl-lib. appletop.png - basic 16px texture
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 12.08.2018 19:45:17

newmtl 01___Default
    Ns 10.0000
    Ni 1.5000
    d 1.0000
    Tr 0.0000
    Tf 1.0000 1.0000 1.0000 
    illum 2
    Ka 0.5882 0.5882 0.5882
    Kd 0.5882 0.5882 0.5882
    Ks 0.0000 0.0000 0.0000
    Ke 0.0000 0.0000 0.0000
    map_Ka realism:textures\blocks\appletop.png
    map_Kd realism:textures\blocks\appletop.png
 

I export the model like this:

854405302_bandicam2018-08-0400-25-17-518.jpg.8babb0da4d2519c270f4b41e85ec8735.jpg

2018-08-20_17_04_52.thumb.png.55cbdb698f0a8087f30f4352629efa32.png

Edited August 20, 2018 by Xumuk
  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2089

Draco18s

Draco18s    2089

  • Reality Controller
  • Draco18s
  • Members
  • 2089
  • 13986 posts
Posted August 20, 2018

1) Your block isn't at the correct origin. Minecraft block origins are the bottom, north, west corner.

2) Its scale is likely wrong. It needs to fit within a 1x1x1 unit volume within your modeling program.

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 20, 2018 (edited)
19 minutes ago, Draco18s said:

1) Your block isn't at the correct origin. Minecraft block origins are the bottom, north, west corner.

2) Its scale is likely wrong. It needs to fit within a 1x1x1 unit volume within your modeling program.

Your advice didn't help.

The model is now less than one block size, located inside the coordinates 1x1x1, but still has no texture.

2018-08-20_18_38_33.thumb.png.c4aabfec699b79c881ee62b6be220ad1.png

Edited August 20, 2018 by Xumuk
  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2089

Draco18s

Draco18s    2089

  • Reality Controller
  • Draco18s
  • Members
  • 2089
  • 13986 posts
Posted August 20, 2018

There's also a problem with the texture, but yes, those two things are also problems.

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 20, 2018
# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 20.08.2018 18:34:47

newmtl 01___Default
	Ns 10.0000
	Ni 1.5000
	d 1.0000
	Tr 0.0000
	Tf 1.0000 1.0000 1.0000 
	illum 2
	Ka 0.5882 0.5882 0.5882
	Kd 0.5882 0.5882 0.5882
	Ks 0.0000 0.0000 0.0000
	Ke 0.0000 0.0000 0.0000
	map_Ka realism:textures\blocks\appletop.png
	map_Kd realism:textures\blocks\appletop.png

Maybe the wrong way to textures?

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2089

Draco18s

Draco18s    2089

  • Reality Controller
  • Draco18s
  • Members
  • 2089
  • 13986 posts
Posted August 20, 2018

I don't know how the textures work for OBJ models.

  • Quote

Share this post


Link to post
Share on other sites

☀☀☀    0

☀☀☀

☀☀☀    0

  • Tree Puncher
  • ☀☀☀
  • Members
  • 0
  • 2 posts
Posted August 21, 2018
21 hours ago, Xumuk said:

Maybe the wrong way to textures?

 

how_to.png

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 21, 2018

I'm use custom name. But still does not work

38083803_bandicam2018-08-2122-32-14-355.thumb.jpg.0ddbeb0712d2ba1f928b332e90b892aa.jpg31728362_bandicam2018-08-2122-32-01-026.jpg.da7cd07f9480087a68ab23c474f2c394.jpg

  • Quote

Share this post


Link to post
Share on other sites

☀☀☀    0

☀☀☀

☀☀☀    0

  • Tree Puncher
  • ☀☀☀
  • Members
  • 0
  • 2 posts
Posted August 21, 2018
7 minutes ago, Xumuk said:

I'm use custom name. But still does not work

38083803_bandicam2018-08-2122-32-14-355.thumb.jpg.0ddbeb0712d2ba1f928b332e90b892aa.jpg31728362_bandicam2018-08-2122-32-01-026.jpg.da7cd07f9480087a68ab23c474f2c394.jpg

map_Kd realism:textures\blocks\appletop             should be without ".png"

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 21, 2018
1 hour ago, ☀☀☀ said:

map_Kd realism:textures\blocks\appletop             should be without ".png"

It didn't help me :(

image.thumb.png.be2e42874cdce8ce042f66f4d6a9ca96.png

  • Quote

Share this post


Link to post
Share on other sites

DouYanC    0

DouYanC

DouYanC    0

  • Tree Puncher
  • DouYanC
  • Members
  • 0
  • 16 posts
Posted August 22, 2018 (edited)

You try it out setBlockBounds(0.0F, 0.0F, 0.0F, 5.0F, 5.0F, 5.0F);

Edited August 22, 2018 by DouYanC
  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2089

Draco18s

Draco18s    2089

  • Reality Controller
  • Draco18s
  • Members
  • 2089
  • 13986 posts
Posted August 22, 2018
8 hours ago, DouYanC said:

You try it out setBlockBounds(0.0F, 0.0F, 0.0F, 5.0F, 5.0F, 5.0F);

No. This won't work. This will never work, I don't even know how you think this would even solve the problem at hand.

Block bounds are not allowed to exceed 1 block wide and 1.5 blocks tall.

  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 27, 2018 (edited)

Your texture is in the wrong place. Here's an example of one of my mtl files

 

# Blender MTL File: 'engine.blend'
# Material Count: 14

newmtl Material
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 explosivesplus:items/engine_tank

newmtl Material.001
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 explosivesplus:items/engine_nozzle

 

You'll note I don't specify the "textures" folder at all; that's automatic. My textures are in assets/explosivesplus/textures/items. But the "texture" line is just implied

 

Also, you can just load the model in your blockstates file. 

				"model": "explosivesplus:silo.obj",

 

You'll also want to put 

	@SubscribeEvent
	public static void registerModels(ModelRegistryEvent event) {
		
        OBJLoader.INSTANCE.addDomain(ExplosivesPlus.MOD_ID);
	}

 

somewhere in your ClientProxy file. 

Edited August 27, 2018 by Pheenixm
  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 27, 2018
On 8/20/2018 at 11:18 AM, Draco18s said:

1) Your block isn't at the correct origin. Minecraft block origins are the bottom, north, west corner.

 2) Its scale is likely wrong. It needs to fit within a 1x1x1 unit volume within your modeling program.

Think you're wrong on 2. Obj files can be as large as you want them to be; you'll run into some errors with frustrum though. 

  • Quote

Share this post


Link to post
Share on other sites

Draco18s    2089

Draco18s

Draco18s    2089

  • Reality Controller
  • Draco18s
  • Members
  • 2089
  • 13986 posts
Posted August 27, 2018
13 minutes ago, Pheenixm said:

Think you're wrong on 2. Obj files can be as large as you want them to be; you'll run into some errors with frustrum though. 

Oh, it can be larger, but you'll run into all kinds of issues...like frustum culling, being able to place blocks inside it, being unable to collide with it, unable to prevent mobs moving through it, and so on.

  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 27, 2018
Just now, Draco18s said:

Oh, it can be larger, but you'll run into all kinds of issues...like frustum culling, being able to place blocks inside it, being unable to collide with it, unable to prevent mobs moving through it, and so on.

Oh, definitely. I've been using invisible blocks with large .obj models in my multiblock setup, and it has been a pain to get the frustrum culling to stop. I'm having to use 

 

	@Override
    public boolean isGlobalRenderer(TileEntitySilo tile)
    {
        return true;
    }

 

in my TESR just to ward off the frustrum culling issues. Fortunately, I don't expect a lot of my multiblocks to ever be built (350 block composition), so it shouldn't be too much of a problem. 

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 27, 2018 (edited)

@Pheenixm

I did everything you said, but the white color just got a little darker. And texture my still there is no😄

My mtl file now:

# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 20.08.2018 18:34:47

newmtl mymtl
	Ns 96.078431
Ni 1.000000
d 1.000000
	Tr 0.0000
	Tf 1.0000 1.0000 1.0000 
	illum 2
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
	map_Ka realism:blocks\appletop
	map_Kd realism:blocks\appletop

What's that ? There are no such values in your mtl file.

	Tr 0.0000
	Tf 1.0000 1.0000 1.0000 


2018-08-27_20_15_32.png.46287c25a034652f847daded20623b4f.png

Edited August 27, 2018 by Xumuk
  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 27, 2018
3 minutes ago, Xumuk said:

@Pheenixm

I did everything you said, but the white color just got a little darker. And texture my still there is no))

 My mtl file now:


# 3ds Max Wavefront OBJ Exporter v0.97b - (c)2007 guruware
# File Created: 20.08.2018 18:34:47

newmtl mymtl
	Ns 96.078431
Ni 1.000000
d 1.000000
	Tr 0.0000
	Tf 1.0000 1.0000 1.0000 
	illum 2
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
	map_Ka realism:blocks\appletop
	map_Kd realism:blocks\appletop

 What's that ? There are no such values in your mtl file.


	Tr 0.0000
	Tf 1.0000 1.0000 1.0000 


 

Show me your blockstate.json for the block. I don't know what those values are, most of the values in mtl's are essentially unnecessary, beyond the most basic map_Kd or map_Ka calls. For instance, look at Immersive Engineering. Also, a picture of your folder structure would be ideal.

 

What rendering software are you using? 

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 27, 2018

3ds Max
~~~
I haven't created blockstate for this model since I don't know what it should look like for .obj

  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 27, 2018 (edited)

You don't need this

 

 ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block),0, new ModelResourceLocation(new ResourceLocation(block.getRegistryName().getResourceDomain(), block.getRegistryName().getResourcePath().concat(".obj")),"inventory"))

 

Use a blockstate.json file, like I do here

 

https://bitbucket.org/Pheenixm/explosivesplus/src/master/Explosives%2B/src/main/resources/assets/explosivesplus/blockstates/concrete.json

Edited August 27, 2018 by Pheenixm
  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 28, 2018

If you do as you said, in the end it will simply be loaded default model specified in the blockstate. OBJ model is not loaded at all...  :(

{
	"forge_marker": 1,
	"defaults": {
		"model": "realism:beton"
	},
	"variants": {
		"normal": [
			{
				
			}
		],
		"inventory": [
			{
				
			}
		],
		"multi": {
			"invalid": {
				"model": "realism:beton"
			},
			"center":{},
			"render": {
				"custom": {
					"flip-v": true
				},
				"model": "realism:testobj.obj",
				"transform": {
					"scale": [
						1,
						1,
						1
					],
					"translation": [
						0.5,
						0,
						0.5
					]
				}
			},
			"structure": {
				
			}
		}
	}
}

 

  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 28, 2018
10 hours ago, Xumuk said:

If you do as you said, in the end it will simply be loaded default model specified in the blockstate. OBJ model is not loaded at all...  :(


{
	"forge_marker": 1,
	"defaults": {
		"model": "realism:beton"
	},
	"variants": {
		"normal": [
			{
				
			}
		],
		"inventory": [
			{
				
			}
		],
		"multi": {
			"invalid": {
				"model": "realism:beton"
			},
			"center":{},
			"render": {
				"custom": {
					"flip-v": true
				},
				"model": "realism:testobj.obj",
				"transform": {
					"scale": [
						1,
						1,
						1
					],
					"translation": [
						0.5,
						0,
						0.5
					]
				}
			},
			"structure": {
				
			}
		}
	}
}

 

I didn't mean copy my code exactly. That code is specific to my block, not yours. If you don't understand the fields in blockstate.json files, I suggest you go learn them independently. What you need to know is that you have to have the custom tag, because flip-v has to be specified as true, and ALL of your model references need to end in .obj when you're referring to .obj files. 

  • Quote

Share this post


Link to post
Share on other sites

Xumuk    0

Xumuk

Xumuk    0

  • Tree Puncher
  • Xumuk
  • Members
  • 0
  • 36 posts
Posted August 31, 2018 (edited)

I understood. If I do this:

{
    "forge_marker": 1,
    "variants": {
        "normal": { "model": "realism:testobj.obj","flip-v": true}
    }
}

But the texture is still missing, only gray. Gray, but not white default, because to the loader writed , that it takes the color from the material. But the texture is still present. If mtl insert row "map_Ke realism:blocks\appletop", nothing will change :(
Console writed:

[13:36:16] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key '' (model: 'realism:models/block/testobj.mtl') is not currently supported, skipping
[13:36:16] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key 'Ni' (model: 'realism:models/block/testobj.mtl') is not currently supported, skipping
[13:36:16] [main/INFO] [FML]: OBJModel: A color has already been defined for material 'mylib' in 'realism:models/block/testobj.mtl'. The color defined by key 'Ks' will not be applied!
[13:36:16] [main/INFO] [FML]: OBJLoader.MaterialLibrary: key 'Ke' (model: 'realism:models/block/testobj.mtl') is not currently supported, skipping
[13:36:16] [main/INFO] [FML]: OBJLoader.Parser: command 's' (model: 'realism:models/block/testobj.obj') is not currently supported, skipping. Line: 37 's 2'

 

File testobj with "s 2" line

mtllib testobj.mtl

#
# object Box001
#

v  0.1500 -0.0000 0.8500
v  0.1500 -0.0000 0.1500
v  0.8500 -0.0000 0.1500
v  0.8500 -0.0000 0.8500
v  0.1500 0.7000 0.8500
v  0.8500 0.7000 0.8500
v  0.8500 0.7000 0.1500
v  0.1500 0.7000 0.1500
# 8 vertices

vn 0.0000 -1.0000 -0.0000
vn 0.0000 1.0000 -0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 -0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 -0.0000
# 6 vertex normals

vt 1.0000 0.0000 0.0000
vt 1.0000 1.0000 0.0000
vt 0.0000 1.0000 0.0000
vt 0.0000 0.0000 0.0000
# 4 texture coords

o Box001
g Box001
usemtl mylib
s 2
f 1/1/1 2/2/1 3/3/1 
f 3/3/1 4/4/1 1/1/1 
s 4
f 5/4/2 6/1/2 7/2/2 
f 7/2/2 8/3/2 5/4/2 
s 8
f 1/4/3 4/1/3 6/2/3 
f 6/2/3 5/3/3 1/4/3 
s 16
f 4/4/4 3/1/4 7/2/4 
f 7/2/4 6/3/4 4/4/4 
s 32
f 3/4/5 2/1/5 8/2/5 
f 8/2/5 7/3/5 3/4/5 
s 64
f 2/4/6 1/1/6 5/2/6 
f 5/2/6 8/3/6 2/4/6 
# 12 faces

 

Edited August 31, 2018 by Xumuk
  • Quote

Share this post


Link to post
Share on other sites

Pheenixm    10

Pheenixm

Pheenixm    10

  • Stone Miner
  • Pheenixm
  • Forge Modder
  • 10
  • 56 posts
Posted August 31, 2018 (edited)

 

 

 

Looks like you're the not the first person to have trouble with 3DSMax. I'd switch to blender while I was still early on, it actually works. 

 

That said, try removing all 's' references you can find; it probably won't do anything, but it's worth a shot. Finally, I'd try reimporting your model, because I've thought about it further; your texture is DEFINITELY loading, otherwise, you'd have the purple and black checkers that Forge applies by default to missing texture objects. Try changing your texture files (appletop) to neon yellow, then see if the render of the block in-game changes at all. If it does, you're likely dealing with UV errors, and again, I'd recommend you just go learn blender. 

Edited August 31, 2018 by Pheenixm
  • Quote

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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.

  • Insert image from URL
×
  • Desktop
  • Tablet
  • Phone
Sign in to follow this  
Followers 1
Go To Topic Listing



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • jgfarrell
      I'm having trouble with Java on !MAC!

      By jgfarrell · Posted 3 minutes ago

      Sorry Junior.   I thought I was going to be a hero!   Good luck.
    • diesieben07
      [1.14.4] [Solved] Trouble With Packets

      By diesieben07 · Posted 45 minutes ago

      If you do this, then there is no point having the capability. Just store it in the stack's NBT tag directly at that point...
    • Cerandior
      [1.14.4] [Solved] Trouble With Packets

      By Cerandior · Posted 52 minutes ago

      Yeah, I registered the entity and everything is fine now.
    • Cerandior
      [1.14.4] [Solved] Trouble With Packets

      By Cerandior · Posted 1 hour ago

      I have no idea man. I tried setting the breakpoints at different parts of the class because intelliJ displays a tree of all the methods called at that point and I never found any of the shareTags methods where I expected them to be. And I know, what I did doesn't really make too much sense because the stack should call the readShareTag and getShareTag automatically (I did look into a lot of methods related to itemstacks), but for some reason nothing was working as expected for me. I just tried that and everything works fine now, if I get rid of that line of code nothing works again.   As for the entity, that is probably caused by the "unique" type of zombie that my staff spawns. I forgot to register that in my registry events. I am surprised the entity was spawning considering I haven't registered them actually. I will register them right now, and check if the error will persist. Thank you for your help.
    • diesieben07
      on/off button for custom furnace

      By diesieben07 · Posted 1 hour ago

      Any GUI that has a button on it. MainMenuScreen for example.
  • Topics

    • Junior240
      4
      I'm having trouble with Java on !MAC!

      By Junior240
      Started November 9

    • Cerandior
      10
      [1.14.4] [Solved] Trouble With Packets

      By Cerandior
      Started 23 hours ago

    • plugsmustard
      18
      on/off button for custom furnace

      By plugsmustard
      Started 23 hours ago

    • AkosM
      3
      Increase target's damage via usable item

      By AkosM
      Started 17 hours ago

    • leesj
      3
      How to Give potion effect to entity

      By leesj
      Started 23 hours ago

  • Who's Online (See full list)

    • diesieben07
    • desht
    • plugsmustard
    • Eonasdan
    • Cerandior
    • Maraea21
    • Zimphire
  • All Activity
  • Home
  • Mod Developer Central
  • Modder Support
  • OBJ model has default texture
  • Theme
  • Contact Us
  • Discord

Copyright © 2019 ForgeDevelopment LLC · Ads by Curse Powered by Invision Community