- Home /
Imported model is missing a lot of details
Hey guys, I'm hoping you guys can help me with something.
For an assignment, I am tasked with importing a 3D model into Unity. Sounds easy enough, right? That's what I thought, unfortunatly it didn't quite turn out the way I wanted.
The model looks good in 3DS Max, nice detail, glass and all that. But a lot of these things go missing when I import it into Unity. The quality is downgraded a LOT. The model becomes bland; I'm missing certain things, like the glass, completely.
Now I think that the problem is that the model uses shaders that aren't supported by Unity3D, but I'm wondering if anyone else has dealt with this before. If so, how did you deal with this problem?
The model is made in 3DS Max. But unfortunatly I'm not the one that made the model. It was delivered to me by some company that my client hired. The model uses a huge amount of different texture and it's pretty much impossible to define which one the company used. Any advice would be appreciated, my guess is that it would be the fact that a number of shaders used in Max aren't supported in Unity. Currently, I'm using Unity version 3.5.1f2.
If I find anything that works, I'll edit this post. Untill then I hope you guys can help me out here. Thanks in advance!
Answer by Arvank · Sep 06, 2012 at 01:27 PM
Thanks for the reply!
Yeah, the model has more than 300 different materials on it apparently, and counting out every single one is quite a hell of a chore. I'm not sure if it imports every single material. Like I said, there's just such a huge range of materials and textures that's gone into it that it's almost impossible to distinguish. The fact that they're all called "material #2013" and all look the same, doesn't really help this, I'm afraid.
I'm still doubting that it's got anything to do with Unity not importing the materials, though. Might it be possible that the guys that created the model used shaders that aren't compatible with Unity? The materials that ARE imported and show up are usually really bland compared to when you have it opened in 3DS Max.
So is it possible there is no solution to this, other than to completely rebuild the model? Of course this time using more basic shaders and such. Is there a list to be found somewhere where I can find which shaders do and which don't work well with Unity? I haven't really checked it out yet, but if I have to make the model again, it'd be nice to have.
Thanks for the advice so far, though! I hope someone else knows a fix for this kind of thing.
Cheers.
This is not an answer to the question, it should be a comment to Screenhog's answer.
300 $$anonymous$$aterials?! I think whoever created this model has no idea what the requirements are for realtime objects. Every $$anonymous$$aterial is an additional Draw Call, so with 300 materials, this object will be rendered 300 times. Probably the polycount is also excessive...
$$anonymous$$aterials in $$anonymous$$ax can not be translated into Unity $$anonymous$$aterials accurately. Some information are saved, when exporting the model and might be imported correctly, but Unity is probably using unsuitable Shaders.
What I would do is open the model in $$anonymous$$ax and divide it into two objects; one for the opaque parts, one for the transparent parts (because transparent polygons are much heavier to render, so this saves ressources). Then make 1 material for each and create the different surface-properties with textures (diffuse, specular), of course you have to create usable UV coordinates first. Also, if the polycount really is excessive, it would be best to create a lowpoly object and bake the details into a normal map (you can then also bake a diffuse and specular map from the 300 materials on the source object).
Piflik already said it, but so will I... 300 materials?! That model was not made for game purposes. I'm guessing the polygon count is too high as well.
Wait... for some reason I've been assu$$anonymous$$g up until now that this was a character. Is it a scene that you're importing? If so, is each material on a different object, or is it all combined into one mesh? If it's on different objects, that's O$$anonymous$$. As one mesh, it's not.
Unity has a page of advice for making optimized characters, and much of that advice applies well to scenery too. http://docs.unity3d.com/Documentation/$$anonymous$$anual/$$anonymous$$odelingOptimizedCharacters.html
Oh man, I completely forgot to mention what the model looks like at all. $$anonymous$$y bad! It's a 3D scale model of a soccer arena. The arena is supposed to be the stage on which to showcase animations. It's quite huge and detailed on inside and out, although only the inside of the arena will be needed. This is kind of why I'm looking for an alternative to completely reassigning the materials. Judging from the feedback so far, I'm guessing that can't be helped.
I agree on your suspicion that the guys who made the model had no idea that it was supposed to be used in this way, though. The way the materials and such are grouped is an absolute clutter as well.
But if I understand correctly my best course of action would be to edit the model in $$anonymous$$ax and seperating all the materials, then after that mapping all the UV's in an order that lets me make a texture map for the seperate parts. Is this correct? I have to say I'm not the most experienced modeller around so I'm still having a bit of difficulty understanding differences between materials and meshes, for example. Nothing that a bit of Googling won't clear up, though.
Thanks for the advice so far guys, at least now I kind of have an idea of what I'm dealing with here. Any more ideas and advice would be appreciated of course!
Cheers
EDIT: Found out the difference. Of course the mesh is the collection of vertices and edges that shape the model. The materials are the textures that are drawn on top. Right?
Yupp. Vertices edges and polygons define the $$anonymous$$esh, the $$anonymous$$aterial adds surface properties.
For an entire environment, it might not be too bad, but having it all one model is.
Divide the model in sub-meshes, but don't overdo it.
Example: one mesh for all the seats is bad, because even if only a section of the seats are seen, the whole model would be calculated. One mesh for one seat, that is put in the scene thousands of times, is also bad, because each new model is a new draw call, and although the polycount doesn't change, the drawcalls will generate a bit of an overhead (and placing thousands of seats in Unity accurately will not be fun). So divide the seats into a couple of groups (I'd say 6-10, depending on how big the arena is and how close the seats will be looked at - the closer the camera gets to the seats, the more groups you should have). Similarly for the rest of the arena.
Try to not have multiple materials in one model, but keep in $$anonymous$$d that the smaller the parts of the arena are, the more work will you have assembling it in Unity. Try also to keep it as modular as possible (If you have big chunks of the arena, that repeat themselves, export them once and duplicate them in the Unity viewport), while factoring in the above.
Hey guys, late reply here but thanks for all the advice so far. I decided on redoing most of the texturing of the arena because it was just such a clutter.
I guess I'll just label my "answer" as correct, maybe someone else might have similiar questions in the future.
Thanks!
Answer by Screenhog · Sep 05, 2012 at 04:40 PM
Does the model have multiple materials on it? If so, when you import it into Unity, check to make sure that the model still has the correct number of materials. I seem to remember an issue of importing a model and only having the first material show up. This may be what's happening to your glass.
Your suspicion that Unity doesn't support all of the same shaders as 3DS Max is correct, by the way. Programs like 3DS Max have the luxury of taking as long as they want to render a single frame, so they can do things with shaders that Unity can't. Unity's a game engine... a lot of things (like realtime reflections) have to be cleverly faked.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Import 3D model into unity Issue 1 Answer
No tree models in my Unity Help! 1 Answer
How do I make a model 2 sided? 1 Answer