An excellent reference page for a breakdown of Max material exports and details can be found here.
- One thing to note about this reference is they are using the built in Babylon exporter, and there are a few differences to what can be found in this document.
Our current platform does not accept any files that are over 250MB. Ideal size of the file should be lower than 250 MB when uploading to the platform.
Organization is important when exporting assets from Max or any other 3D software. When it comes to multiple pieces of geometry with different materials it is best to group them by material used on asset. The object also must be a polygonal piece of geometry – NURBs and other surface modeling creations will not export.
Going through the optimization process your geometry will most likely be changed to reduce its size for performance, but it is still a good idea to follow proper geometry workflow whenever possible. For faces of geometry use either triangles (tris) or quadrangles (quads) as this will give better results when run through the optimizer. Also check your geometry to make sure all normals are facing the correct way, that smoothing groups are assigned appropriately and that you are not getting any visual errors that would hinder your model.
It is best practice to create UVs for your assets even if you plan on using a pre-made material due to many materials having texture maps to enhance the material effect. UVs should be located on the base channel as we currently support 1 UV channel.
In a lot of 3D modeling software you can set the material to tile on its own. However, this tiling doesn’t often translate to an export, and in the case of gltF and usdz, it defaults all materials tilling to 1 x 1, which would make materials that have a pattern that is tiled 15 x 15 (as an example) come out as 1 x 1, and would look much larger.
There are two ways to go about fixing the tiling:
- You can use photoshop to create a file where the texture is tiled as much as you need.
- You adjust the UV Map to tile by scaling your UVs beyond the 1 value.
The image to the top right shows the UVs within the UV box, to tile your texture scale up the UVs so they go outside the box as shown in the image to the right till you reach the desired tiling number.
Materials and Textures
Rhino3D allows you to export an FBX with material textures,. While it includes a “bump” map, however, it does not convert the bump map into a “normal” map.
To create a material in Rhino3D you need to go to the Material Tab:
For the most accuracy in the process it is advised to use a Roughness/Metalness PBR workflow. Specular/Gloss workflows will be converted into PBR on export and you may experience less than ideal results with your model after the conversion.
- In Max using, a physical material like the one shown to the right is ideal for getting the best results.
- The Albedo plugs into the Base Color map channel. Under Basic Parameters the Basic Color and Reflections color should also be changed to white so the Albedo shows up properly.
- The Normal Map is plugged into the Bump Map channel, however do not use a normal map plug in the bump map channel because the optimization process will not detect that plug and the normal map will be discarded. Bump Map value must also be set to 1.
- Roughness and Metalness are plugged into their respective channels, and under Basic Parameters near the top the roughness and metalness channels need to be set to 1. You can adjust this value if you want to tone down your maps and the result will export.
- For Ambient Maps those will be plugged into the Diffuse Roughness channel.
- Emission is plugged into the Emission Color channel. Under Basic Parameters the Emission also must be set to a value of 1.
When an object is run through the optimization process and a glTF is produced the Roughness, Metalness and Ambient Occlusion will be combine into a single texture where each of those elements are expressed in the R G B channels. With that in mind it is important to make sure you have a texture expressing each of these channels, if not one of the other channels will be copied and used to express that element, which may create not ideal results.
It is also important to note that if you are not using any of the texture plugs in the roughness, metalness and Ambient that it is best to create a map for that area anyways otherwise it will pull that information from another element of that texture.
The exporter currently supports PNGs – any other texture file types will be converted to PNGs.
You need to make sure that Embed Media is checked in the export options to make sure your textures and materials are exported with your asset.
An embedded FBX retains materials and textures that are buried within the FBX itself. Exporting an FBX with embedded materials is useful because software applications can take that information and extract the materials and associated textures automatically. An FBX that is exported with embedded materials creates a .fbm folder which is where it stores the materials and textures. When you import an embedded an FBX it’ll automatically create a .fbm folder which contains the textures.
Typical game optimization helps achieve the best results. Stick to texture dimensions that are the power of two, 256, 512, 1024, etc. Running the .jpg textures through an external compressor can also bring down the size of your scene especially if you have many textures. Textures may be no bigger than 2048, or they will be automatically compressed.
- Some geometry comes out dark or black when exported. This is often times a result of the 3D Geometry being inverted or having a custom attributes somewhere attached. The best solution is to go into your native 3D software and make sure the geometry is not inverted. Another solution is to select all the faces that are problematic and detach them from the current model.
- If the materials didn’t come out looking right, please make sure that the material name is properly named, with the underscore present. There should not be any spaces in the material name.
The animation export pipeline for Max follows a lot of the same guidelines that can be found for game engines. There are some things that must be done differently and some general ideas to keep in mind:
- For any animations that are going to be scaling into the scene, and scaling out, their default full sized form must be on frame 0, and then you can have on frame 1 the object scaled to 0 and play out its animation. The reason being is if you have the object scaled to 0 on frame 0, there is no size to scale from… like multiplying anything by 0 is still zero, so it needs that state in order to give the system dimensions to work from.
- Bones are not required to drive animation, objects linked together via hierarchy will inherit their values.
- There is no material animation support – material key animation in all forms do not translate. Also while material visibility can be used, it cannot be animated, including the visibility track in the graph editor.
- Animating vertex, either by keys or by a modifier does not work, if you want vertex animation it has to be done through the morph target modifier.
- It is still best practice to bake out your animation before exporting it as the exporter does not support some interpolation types like Step.
- None universal scaling is supported, it can be done with a lone object or even a bone skinned to a mesh, however it does not work through unfreezing the bone length and driving it through bone manipulation or constraints. Bone and skin modifiers are supported, which allows more complex animations.
FBX Export Pipeline:
Exporting as an FBX and then running it through the system does have some differences that need to be mentioned:
- FBX does not support dummy objects and other types of none geometry so if your animation is based off these systems you will run into issues. Make sure you convert your objects to FBX supported objects or use Joints to avoid issues.
- FBX exports do not require having a frame of geometry at full sized in order to have 0 -100 scaling in the animation, so all frames should encompass the animation you are trying to achieve.
- The FBX will also base the animation length based off the total animation length not what the timeline has as the length of the animation, so all animation will need to be cleaned and presented at the exact length of the animation.