This page will provide a brief overview of using the proxy mesh tool that we use for merging instanced meshes into large pieces that use fewer draw calls. In general the instances should be moved to their appropriate near sub levels (If they are not already) to reduce memory and the proxy mesh will be placed in the matching far level. The proxy mesh is arbitrary data saved within the level. No new assets (Textures/Materials/Static Meshes) will need to be committed via the content browser.
All of the large features in the farthest levels should have a proxy mesh parent that is in the same level. It’s max draw distance should be set to 200,000 unreal units with use absolute draw distance set to true. The Islets can have a max draw distance of 100,000 unreal units because they are so small.
- Select the actors you would like to create a proxy mesh from and make sure they are in a near sublevel. Try and make this selection as large as possible but sometimes it might be needed to split a group up into multiple sections if the bounding box of the proxy mesh will be weird.
- Right click on the selected actors and choose “Generate a Proxy Mesh”.
- The proxy mesh tool will display the following options. In general the default values are usually good to use.
- Set Triangle Percent - You usually want to keep this as low as possible. 1-2 % is usually a good starting point. If a static mesh has a proxy mesh override in its static mesh settings set triangle percent to 100% (This is very rare to use and 99.99% of the time you don’t need to worry about this).
- Max Draw distance - Keep this at 0 but it can be adjusted later.
- Proxy Transition Distance - Usually it is best to keep this at 30,000 as a starting value but it can be adjusted after the proxy mesh is built to get good results.
- Select Proxy Level - Here you will select the matching FAR sublevel for the selected assets. The proxy mesh will be placed in this level.
- Mesh LOD Bias - Usually the default value of 0 is fine. If you place a bias it will merge and optimize those mesh lods instead of lod0.
- Max UVs - You can leave this at the default value of 8. This is mainly for very specific times when we use the tool for SpeedTree assets.
- Use Simplygon Remesher - Enable this if you want to bake the textures down so that the proxy meshes all use one material and texture. Can be useful if the generated proxy mesh has more than a few materials applied. If this is enabled you might have to adjust the Set Triangle Percent higher.
- Allow Color - Transfers vertex color data to the proxy mesh. It is usually good to leave this enabled.
- Texture Size X and Y - Here you specific the size of the texture the proxy mesh will use when Use Simplygon Remesher is enabled.
- After you adjust any settings click on ok and the tool will run. When it is finished the proxy mesh will be selected and if you move the camera around you will see when it swaps to the near meshes. In the Scene Outliner all proxy meshes will have a (P) prefix and all children will have a (C) prefix. Under the proxy mesh details you can adjust the Min Draw Distance to dial in when the proxy mesh appears and its children disappear. This number is linked with the children so you will only need to adjust the proxy mesh Min Draw Distance.
- If the proxy mesh has more than a few materials applied in its details panel consider enabling Use Simplygon Remesher listed above to bake everything down into a single texture and material. You may need to adjust the triangle percentage to be higher when enabling this option.
- When everything is dialed in don’t forget to save both the near and far levels! All proxy mesh parent assets that cover a large area should go into a separate proxy mesh level and the children should stay in the far level.
- After a proxy mesh has been created additional options will be available when you right click on it, or its children, in the editor.
- Re-Generate a Proxy Mesh - regenerates a proxy mesh from the children (Might be broken)
- Re-ID Proxy Mesh Group - Used to link proxy mesh with correct children in case it somehow gets broken. You will need to make sure that the children AND the proxy mesh are selected for this to work.
- Clear Proxy Mesh Data - Removes the proxy mesh data.
- Select Proxy Mesh children - Selects all of the children of a particular proxy mesh.
- Select Proxy Mesh Parent - Selects the proxy mesh any particular child(ren) might use.