Hi everyone,
I am new to Unity and I am currently doing research on the using of 3D models obtained by 3D scanning in videogame motors such as Unity.
I would like to know what are the main properties a 3D model should have to be used effectively in a Unity 3D Game.
Is there any 3d format better than another ? FBX, OBJ … Are they all working the same way when it is about using them in Unity ?
Also, what is a good 3D model in terms of number of triangle ? For instance, with current 3D scanning technology, I can obtain really high resolution models of characters or statues with a several hundreds thousands triangles mesh. I guess this is too high to be use in 3D games, right ?
So my question is, what is a good polygon number for an 3D model asset ? How many polygons can you have on a scene without making the player’s computer explode ?
Thank you very much for reading, in the hope someone would be able to answer those questions !
The company I work for exclusively export to FBX from 3DS Max and import in to Unity.
A typical rule to follow is balancing poly count to object quality. There’s no point having a 1,000,000 poly model if it looks exactly the same and 100 polys.
There is no exact number for optimum poly counts as you would generally tailor it to the game you are creating and what the model will be used for.
That’s pretty much all I can tell you, Google is your friend Also look in to texture compression and how texture quality can impact a games performance, might give you more to write about.
Good luck buddy.
1 Like
Thank you for answering me,
I wanted to ask another little something, do you think it would be relevant to share with the Unity community 3D assets with really high number of poly ? I mean, could people work with it, like reducing the mesh in order to adapt the model for their game ? Or maybe this is not something Unity game designers do ?
If i understood it right, people compensate the lack of triangles by “hiding” it with good texture. Is it how it works ?
Thanks
No problem.
A raw model file such as a 3DS Max model can have a “modifier” attached to it within 3DS Max called Pro-Optimizer. This can be used to reduce the polycount of a model by a percentage that the designer can define. That is the most simple but not always the most reliable way of reducing the poly-count of an already existing object.
A good designer/modeller would probably be able to pick up any 3D model or object and edit in the way that they want. Although sometimes programmers don’t use modelling software and vice versa so that depends completely on the person that is using Unity.
A lot of the time that is the way that people can increase the quality of the way a model looks without increasing its poly-count. Look up texture atlas’s and level of detail (“LOD”).
I use 3D Coat and 3Ds Max for these things.
In 3D Coat you can retopo a model(fix it’s topology) and lower the polygon number and you have a lot of control over the final mesh.
In 3Ds Max you can bake all the model details into diffuse maps, normal maps, specular maps, etc.
Of course, these are my personal choices. You can experiment with different programs and see what ones you find easier to use or gives you more control over the results.
As Jackius says, the ideal polycount depends on the game and for the target platform. For example, Android games need to have much lower poly models than, say, PlayStation 4 games.
Also, a good practice is making multiple Level Of Detail models, so when you get farther away from the model it switches between the different LOD’s(Level Of Detail models). This will prevent the player’s computer from exploding while also mantaining a good framerate.
I also prefer to export my models to FBX files, because you can also export bones and multiple animations, while in OBJ you can only export inanimate objects.
Hope i helped
From the top of my head, some rough guidelines:
- A good 3D model should be airtight (by that I mean there are no gaps in the main body). This is important for the lighting system.
- Some unconnected decoration polygons (for hair, fur, etc.) are fine, though.
- The model’s scale should be correct and baked into the vertices, so the normal model transformation matrix has no scaling in it (commonly, 1 Unity unit = 1 meter).
- Recommended polygon counts are always changing. For mobiles, maybe 1,000 to 2,000 per character, 25,000 for everything on screen. For PCs, maybe 15,000 to 50,000 per character, 100,000 to 2,500,000 for the whole scene.
- Export format does not matter. Unity will convert into its own format in any case.
- OBJ only does static meshes.
- FBX does static and animated meshes.
- If you animate, a bone count of 25 for mobile and 70 for PCs is recommended. More bones in PC are not problem, just a little bit inefficient since skinning can’t be done in the vertex shader anymore.
- Don’t have too many separate meshes. The number of draw calls are often more limiting than the overall polygon count. Drawing 1000 meshes with a single polygon is slower than drawing one mesh with 1,000,000 polygons.
3D scanning can produce very high vertex densities. One option is to just “simplify” or “decimate” the model to fewer polygons (3D modeling tools are very good at finding and removing polygons which have little effect on the look of a model).
- A clean UV unwrap for texture coordinates is always useful. I’d only do this after reducing polygon count, of course
- Lightmap UVs are optional, but can vastly improve the quality of baked lighting on static models (eg. distributing more lightmap area to highly visible faces)
6 Likes