@VerifiedTinker, the points that @labris and @musk bring up are great ways to optimize your model, but the core of the problem you are describing goes back further than just optimization. If the artist you are working with specializes in pre-rendering (rendering with a ray tracer to produce a single, high-fidelity image or a sequence of high-fidelity renders for video) they are not likely a good candidate to use for real-time rendering. The reason is that the optimization for your asset starts at the planning stage. You can use tools to reduce your file size after the fact, but the truth is that an artist that specializes in real-time rendering is going to produce an asset that is far more optimized before you even get to the final performance tweaks like compression.
Planning for a real-time asset will ask the following questions:
- What is the target device (desktop, mobile, HMD, console) and what are the performance limitations of the device my users will be on?
- What is the shading model, PBR, Blinn-Phong, Cell Shading, Custom Shading? How would the chosen shading model influence my texture creation or material breaks in the model?
- What materials in the model need advanced rendering techniques like transmission, clear coat, sheen, etc. and how will that affect my material breaks? How can I batch materials with similar requirements to save on material counts?
- What is the triangle budget of my asset? Is it a hero asset that will be close to the camera and needs extra resolution or detail or is it an environment asset that will be far from camera or not on screen for long?
- Where do I spend my triangle budget? How can I maximize my budget for areas that support silhouette or parallax in the model while stealing triangles from other parts of the model that do not need the resolution to support the silhouette or parallax?
- Where can I eliminate triangles and what tricks can I employ? Can I delete faces that are not seen? Manifold geometry is not a must so there are always places with unneeded triangles. Can I float a piece of detail over simpler mesh? Sometimes you can get away with a smaller triangle count if things like panel lines are slightly floating above a surface rather than embedded in the surface since you don’t need any of the supporting edges to support the higher-frequency detail. Can I just collide submeshes to create more complex silhouettes rather than making it manifold? For example, a cylinder colliding in the middle of a quad is fewer triangles than adding support loops/edges to make the two meshes manifold.
- What detail can I bake into a tangent space normal texture to save triangles? Your normal texture can do a lot of heavy lifting from baked detail from a high-resolution mesh to adding material-level high frequency detail like pits, scratches, rust, grain, pebbling, etc. This detail is usually the type that does not rely on parallax to look believable, does not affect the silhouette of the model, and adds realism when the camera is close to the mesh. However, you also have to plan how to use your textures well as high-frequency detail often needs high resolution textures to be effective. You also need to plan for how close your camera will be to the mesh to determine the largest texture size you will require so you don’t see artifacts. This would be your largest texture LoD if you are implementing an LoD system.
- What is the largest texture size I can use? Just because you can render an 8K texture does not mean you can use one. You need to check to see if there are limitations for your file format (4k for glTF) or you may decide that the trade-off for extra texture loads of smaller textures gives a better result than fewer large textures because you can get better material breaks and higher texel density with the smaller textures.
- Can I use tiled textures or do I have to have altased textures? Or can I use a combination of both? Tiled textures are going to be smaller, but do not allow for things like AO or lightmap baking. You also may need a unique unwrap for another reason and so can you make use of multiple UV sets to give you the ability to use tiling textures for their smaller size and greater texel density while still being able to have an atlas for baking AO or lightmaps.
- Can I use non-square or non-power-of-2 textures? The engine you are rendering with sets this limitation, but if you can use them (as you can with Babylon.js) using a non-square texture may give you a better UV unwrap by making better use of the space and maximizing texel denisity. A non-power-of-2 texture may also allow you to keep the target texel density for your scene while just using a smaller texture. Why save a 1024x1024 texture if you only need 800x800 pixels to hit your target texel density?
- Do I need to skin and rig this asset? Are there things that need to be added, parented, or swapped in the model at any time? Do I need to share animations across models? Are there customization options to the model that need to be accounted for in materials or textures?
- How can I combine meshes to reduce draw calls while allowing for needed material separations due to advanced rendering requirements? Should I combine meshes based on maximizing UVs? Is there a hybrid solution in there?
I have converted many pre-render models to be real-time models in the past and it is a lot of manual work and in many cases easier to start from scratch. The main reason is that pre-render models pay technical debt with time in render. You can have hundreds of thousands of triangles and hundreds of materials that only contain factors for color, roughness, and metalness because you are only impacting the time for the render to complete which does not impact the final product for the user. In real-time rendering, however, you pay your technical debt with your frame rate. If your target is 60 frames per second, but you have too many triangles, draw calls, textures, etc, you will see your frame rate drop especially on low-end devices. This does impact your end user as the experience will feel choppy or broken. For HMDs, you need to render at even higher FPS counts like 90 and above to make the experience feel smooth.
In the same way you would not go to your dentist for an appendectomy, you should choose an expert in the type of rendering you want to do. Find a pre-render expert for static renders or pre-rendered video. Find a real-time rendering expert to get the most out of your real-time experience. And if your pre-render expert is going to be your real-time rendering expert, then they will need to expand their toolbox as I have seen many pre-render experts be surprised at how different the workflows are for real-time rendering.
There are resources out there to walk you through some considerations for best practices like 3D Commerce Working Group Releases Real-time Asset Creation Guidelines to Assist Artists Create Efficient, Reliable Models for Retail and E-Commerce - The Khronos Group Inc which is mainly setting guidelines for single products in a viewer. But looking at game art forums, and online training for game art is likely needed to fully understand all of the levers that need to be controlled in real-time rendering.
I hope this helps start the process of evaluating your art pipeline because taking a measured approach to your assets from the start will save you a lot of time in the end trying to find ways to massively optimize your assets.