Mesh/Exporting a mesh from 3ds Max

From Second Life Wiki
< Mesh
Revision as of 07:57, 3 September 2011 by DanielRavenNest Noe (Talk | contribs)

Jump to: navigation, search

3ds Max is a professional level 3D modeling, animation, and rendering software made by Autodesk, Inc. along with many other 3D design programs. It can be used to create Collada .dae type files to upload as mesh assets to Second Life. Note that there are annual versions that are slightly different.

Software Setup

Currently the Second Life uploader works best with the 2011.3 FBX Plugin, which is used to save directly to Collada format. If you are using an older version of 3ds Max, get that version of the plugin from the Autodesk FBX page. If you are using the 2012 version, it saves to a newer version of Collada than the uploader understands. In that case save to FBX file format, and use the Autodesk stand-alone FBX 2011.3 Converter to convert to Collada.dae. OpenCOLLADA, another plugin, can't export meshes for SL. The exported file loses the UV coordinates and can't be rigged, so use Autodesk Collada instead.

Basic workflow

Scale to meters

One meter in 3D Studio Max converts to one meter in Second Life. In order for your model to upload with the expected scale, you will need to change Max's units to metric since it isn't the default unit settings.

To Set Up the Correct Scale for Your 3D Studio Max Scene:

  1. From the top drop down menu, select "Customize" --> "Units Setup..."
  2. In the "Units Setup" dialog box that appears, select "Metric" in the "Display Unit Scale" field. (At Default, Max has the units set to "Generic Units")
  3. Under Metric you can choose between millimeters, centimeters, meters, and kilometers via a drop down menu.
    Which metric system you would like to use depends on what you're creating. So long as you’re working in metric units, any metric system you choose to work in will upload equally in Second Life. Choosing meters should ideally work for most mesh creations for Second Life. If you are working on very small meshes like jewelery, choosing centimeters may prove more helpful.
  4. Click on the button "System Unit Setup" in the "Units Setup" dialog box.
  5. In the "System Unit Setup" dialog box that appears, you'll probably see the following: "1 Unit = 1.0 Inches" as this is the default setting. Select the drop down menu for "Inches" and select a metric unit instead. For example: If you're using meters for the Display Unit Scale, select Centimeters to replace Inches here.

Creating Your Models

For basic information on how to use 3ds Max, see the Autodesk 3ds Max Tutorials page, the excellent built in help, and the many third party books, video tutorials, and training courses. This section only covers specifics to creating a model for upload to Second Life.

  • You can use any of the modeling tools while working on your item, but in the final form it should be saved as an Editable Poly, with Reset Transforms applied, and the stack collapsed.
  • Each object in the 3ds Max scene will import as a separate object in Second Life. If you want your model to appear as a single object once imported, use the Attach function in 3ds Max so that it appears as a single item in the object list.
  • You can use up to 8 Material IDs. These will import as Faces in Second Life, which can be individually textured. You need to create a UV mapping for your model which defines what part of the texture will go on which polygons of the model. Fewer Material IDs/Textures are more efficient, and you can combine polygon groups from different parts of your model onto a single map. If you use more than one ID, then set up a single Multi/SubObject material with as many sub-materials as you need, and apply that to the whole object.
  • You can define up to 4 Level of Detail (LOD) versions of your model for viewing at different distances. Using simpler versions for far away items saves server and PC workload, and you are rewarded for that with a lower Prim Equivalent use of parcel prim allowance. Each LOD version is saved as a separate Collada .dae file and selected in the upload window. Additionally you can define a Physics Shape which controls how the object collides with the terrain, other objects, and avatars. Complex collision physics is a heavy load on the server, so the Physics shape should be as simple as possible. It is invisible once imported to Second Life. All LODs and the Physics shape will share the same Bounding Box. This is an imaginary box aligned with the X, Y, and Z axes just large enough to contain the model. So keep that in mind when creating the various versions, so they line up properly. The LOD versions need to use the same number of Material IDs, but the layout can be different per version.
  • If you want to make an animated attachment (one that bends and follows the underlying avatar movements), then apply the Skin modifier last in the Command Panel > Modify tab. The set of bones must be identical in name and structure to the one used in Second Life. For rigid attachments or non-attached items to be used on a land parcel, you can skip this step.
  • Second Life is a real-time environment, and typical Viewers have a few tens of milliseconds to render the entire scene (1 second divided by the frames per second speed). So mesh items should use the least number of triangles and vertexes as possible while looking the way you want it. High detail models used for offline animation and rendering are not suitable. Smoothing varies the shading across the model, giving the impression of a curved surface without a lot of triangles. When different smoothing groups meet at an edge, or when smoothing is not used, the shading will change abruptly at the edge, and give the impression of flat sides with a sharp corner. You can display current polygon, triangle, and vertex count within the 3ds Max viewport to keep track while you work.

UV texture Mapping

Part 1 Part 2 Part 3

Apply textures

Export to COLLADA

Before you export your mesh, make sure that it doesn’t have any stray vertices, overlapping edges, or ngons (polygons that have more than four edges). These will either cause unexpected visual results in Second Life or worse, the mesh will fail to upload entirely.

Once that’s done, select the mesh and...

1. Go to File --> Export --> Export Selected

2. Select the directory you wish to save the exported .dae file and create a name for it.

3. In the “Save as type:” drop down menu, select “Autodesk Collada (.DAE)”. Note: If you are using an older version of Max that does not have this file type available, you will need to download the OpenCollada Plugin and select “OpenCOLLADA (.DAE)” from the menu list.

4. Autodesk Collada export will open a FBX Export dialog box. You shouldn’t need to change much to the default settings. If you’re exporting a skinned mesh, make sure “Animation” and “Deformations” are checked off. For all meshes, make sure that the “Up Axis” is set to “Z-up”. If the axis isn’t set to Z-up, the mesh axis(and the rig data) will be flipped on its side and/or rotated in Second Life. This will wreak havoc on a skinned mesh.

Import to SL

Best practices

[NOTE: All these links need to be updated because of the Forum software changing, and the threads being archived]

Forum thread on 3ds Max best practices

Forum request for input on debugging 3ds Max import workflow

Another forum thread on exporting a rigged mesh from 3ds Max

Forum thread on UVW mapping, mostly about 3ds Max

Forum thread on texturing in Max and uploading to Second Life

Bones and rigging

This is written for 3ds Max 2010. Other workflows may work also, but this one has been tested and works with Viewer 3.0

  • Units need to be metric cm or meters. See above for how to set that.
  • Your model should be editable poly when done making the geometry (the shape). You can use other object types while making it, but in final form it should be Editable Poly.
  • It should be at human scale (about 1.8 m tall), facing +X direction, with pivot at 0,0,0 and avatar standing on same point (feet at Z=0).
  • Use Command Panel > Utilities > Reset transforms to null out any scaling or rotation. The model should show at 100% size and 0 angles.
  • If your model is more than one named object in Max, it will import as separate objects. Use the attach button in Editable Poly rollout to combine objects if you want it as a single one.
  • Make sure you have no degenerate triangles (triangles with zero width), stray or duplicated vertices, etc. It needs to be a clean model.
  • Maximum complexity for import is 64K vertices. Upload and prim cost depends on model size and complexity.
  • You can apply a maximum of 8 submaterial slots in a Multi/SubObject material, using default shader, applied to whole object.
  • It needs UV map coordinates if you want to apply a texture. Otherwise SL will have no information on what part of the texture goes on what polygons of the model.
  • Once imported, each submaterial ID functions like a "side" on a prim for applying textures. Imported models are one-sided for textures. The other side is transparent. If you want it to be seen from both sides, you need additional triangles facing the other way. Make sure normals point in the direction you will see once imported.
  • Use smoothing groups when you have curved shapes. Any polygons in different smoothing groups will show a hard edge between them. Hard edges will increase the vertex count in the upload window. They need duplicated vertexes with different normals to make the edge.
  • Apply "Skin" modifier last, after UV mapping. You might want to do test imports on Aditi at each stage before rigging to find problems in those stages.
  • Get the SLAV 3ds Max Plugin, which has a set of bones for the SL avatar pre-made. You may need to scale and rotate the bone rig to human size, and facing same direction as your model.
  • Put all 26 bones into skin modifier even if you don't need them all. Bone names and hierarchy needs to match that of SL avatar.
  • All vertexes need to be weighted to 1.0 total (no unweighted or partially weighted ones). At joints weight vertexes to the two or more nearest bones to get a smooth bend.
  • Delete everything from the scene besides the bone skeleton and your model before export. Save a copy with extra objects if you want, then a second one stripped to those two for export.
  • Export using Autodesk Collada using FBX 2011.3 plugin. If you are not using Max 2011, update to that plugin, or if using 2012, export to FBX, and use standalone 2011 FBX converter. The 2012 exporter was using a later version of Collada (1.4.1) than the SL software could read (1.4). That may have been fixed by now.
  • Click Z-up on the export window. Other settings are OK as default.
  • Once Collada .dae file is created, open it with any text editor (its an XML type text file), and find a string that looks like:

<Name_array id="DefaultClothingItemController-Joints-array" count="26">

If it doesn't say 26, change it to 26. Just after that, add whatever bones you didn't weight after the ones you did weight (which should be there). The importer has been requiring all the bones listed. That may also have been fixed, but to be sure list them all. Ones you actually use go first, then the rest in any order. Here is a full list:

mHipRight mKneeRight mAnkleRight mFootRight mToeRight mHipLeft mKneeLeft mAnkleLeft mFootLeft mToeLeft mPelvis mTorso mChest mNeck mHead mSkull mEyeRight mEyeLeft mCollarLeft mShoulderLeft mElbowLeft mWristLeft mCollarRight mShoulderRight mElbowRight mWristRight

  • On the SL importer, go to the third tab, and click "Skin weights". I recommend doing your test imports on the beta grid (Aditi) because it uses fake L$. Once the items is perfect, you can import once on the main grid. Model will appear in the import window in white, possibly small. It can be rotated and zoomed
  • The importer creates a .slm file in the same folder as your Collada .dae file, to save your upload settings. This often causes problems if you change the model and upload again, so delete it.

Gotchas and workarounds

Optimization techniques

Tutorial links