Jump to content
  • Advertisement
Sign in to follow this  
Ahl

OpenGL From Wavefront .mtl file to Opengl?

This topic is 2560 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I'm rewriting my Wavefront .obj loader and am finally implementing the .mtl loader with it. My question is what information in the MTL file is actually usable by OpenGL?

The following is a simple breakdown of the information available in an .MTL:

Ns = Phong specular component. Ranges from 0 to 1000. (I've seen various statements about this range (see below))
Kd = Diffuse color weighted by the diffuse coefficient.
Ka = Ambient color weighted by the ambient coefficient.
Ks = Specular color weighted by the specular coefficient.
d = Dissolve factor (pseudo-transparency). Values are from 0-1. 0 is completely transparent, 1 is opaque.
Ni = Refraction index. Values range from 1 upwards. A value of 1 will cause no refraction. A higher value implies refraction.
illum = (0, 1, or 2) 0 to disable lighting, 1 for ambient & diffuse only (specular color set to black), 2 for full lighting (see below)
sharpness = ? (see below)
map_Kd = Diffuse color texture map.
map_Ks = Specular color texture map.
map_Ka = Ambient color texture map.
map_Bump = Bump texture map.
map_d = Opacity texture map.
refl = reflection type and filename

Ambient, Diffuse and Specular numbers I understand as well their related color texture and bump texture maps. But Phong specular component? Dissolve factor, refraction index?, etc. ? Are these just numbers used only by modeling programs or are they usable in OpenGL as well?

Thanks in advance.

Share this post


Link to post
Share on other sites
Advertisement
You could probably write a shader and use it although, I'm not exactly sure what their purpose is. It is a proprietary format (not a open source format) so you should ask the company who created it.
Why don't you use a more well known format like DirectX .x or just role out your own?

Share this post


Link to post
Share on other sites
I started with .obj because it's an easy format to use for someone like me with no artistic ability what so ever. Simple models, simple loading. I'll cover more formats eventually.

Share this post


Link to post
Share on other sites
Do you really need those stuff?
Everything is "usable" in openGL, whatever that means... You can control pretty much anything you want. Obviously, you have to code stuff...

Just because a format supports a lot of stuff doesn't mean you have to deal with all those stuff if you don't want to. Unless you want to write a 3D modelling software. Is that your goal?

I don't really understand the question to be honest...

Share this post


Link to post
Share on other sites
If you write a shader that implements their lighting/material equations, then of course all of those numbers will be usable by it wink.gif

Share this post


Link to post
Share on other sites
Those stuff aren't implemented in openGL by default, they are not part of the fixed function pipeline's API. You have to write shaders on your own to deal with them (well, these statements are imprecise at best, but you get the idea).

If that's what you are asking. If you are just interested in those stuff, I'm pretty sure a google search would suffice.

Share this post


Link to post
Share on other sites
These "material" values are tied up with lighting model and renderer used. I don't know how exactly Wavefront's rendering works, but some things are more or less common:
Phong specular component is used in Phong per-pixel lighting to calculate specular color (e.g. "shiny spots" on metal). It's analogous to shininess exponent used by OpenGL's fixed pipeline.
Dissolve factor is pretty much explained, you can use it for e.g. alpha blending to make object semi-transparent.
Refraction index - well, that's a question about material modeling and ray-tracing. Basically, refraction is a property of material to change the direction of light that passes through it. Imagine modeling a thick window glass or a windshield. While good quality glass would only displace objects a little bit, through poor quality glass you'd perceive outside objects (severely) distorted. Refreaction is a basis of optical tools as well.
Illum - judging from description, it just controls the exact lighting model Wavefront's tools need to use for this material. E.g. for matte objects it's useless to calculate specular highlights, hence lighting model may be simplified and/or optimized.
Sharpness - can't tell for sure in this case, but my guess is it controls sharpness of specular highlights. While specular exponent controls overall "focus" of the highlights (i.e. how big they are), sharpness is sometimes used to vary their "blurriness". Imagine two metallic spheres, one of which is polished, surrounded by several light sources. Not only the highlights on the polished one will be smaller, they will also be "crispier".

Overall, as has been mentioned, what values from this pool to use depends on your desired lighting model. If you don't use your specific model and stick with OpenGL's fixed pipeline, you're left with Gouraud shading at most, but specular component and dissolve factor are still applicable to it.

EDIT: overquoting Edited by capricorn

Share this post


Link to post
Share on other sites
compare this: if you ahve a model fro obj file like soccer ball, without mtl file it is only one color soccerball but with mtl file you see black and white shapes :P

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!