Mesh and LOD

From Second Life Wiki
Jump to navigation Jump to search

Scope: This is to compliment existing information, and links off to avoid too much redundancy.

Mesh will make Second Life beautiful!

Mesh is of a collection of Vertices, Edges, and Faces that define a 3D shape within computer software.


  • The basic element of mesh is a Vertex. Vertices define points in space, their direction, texture information, and much more.
  • Connecting two vertices creates an Edge.
  • Connecting three or four edges together creates a face.
    • There are two kinds of faces.
      • Triangle faces.
      • Quad faces.

Vertices black640.png Three vertices

Edges 640.png Two Edges connecting three vertices

Triangle6401.png Triangle face connecting 3 edges

Quad640.png Quad face connecting 4 edges.



Together they combine to make This!

Mesh Image640.png

File Format

Second Life uses COLLADA's 1.4.1 file format for the uploading of mesh items. COLLADA is a powerful open standard collaborative format. The files are in a humanly readable XML format with an extension of .dae.

More than you'll Ever need to know about COLLADA. [1] [2]

Second Life COLLADA format spec. [3]

Software

The list of applications that can create mesh and export to COLLADA is long and exciting!

Here is the short list:

  • Maya [4]
  • 3dsMax [5]
    • Including many other Autodesk tools.
  • Blender [6]
    • Blender history(interesting read) [7]
    • additional Second Life Mesh Blender specific tutorials here: [8] and [9]
  • Sketchup [10]
  • Wings 3D [11]
    • no UV mapping tool.
  • Daz Studio [12]

Many other software packages can create mesh, though, some may require minor settings adjustments or even external programs to generate .dae files.

Here is the extensive list. [13]

  • File Examples in COLLADA .dae file format. [14]


Further detail and spec.

Level Of Detail

Level Of Detail or LOD is the art of lowering an objects detail as the viewer gets further away. With Mesh uploads we now have complete control over each level.

  • The uploader supports 4 LOD levels.
  • The uploader will generate LOD levels for you. Which are sufficient, but one can achieve smoother transitions between levels by creating you own LOD models.
  • The uploader allows the same file to be used in multiple LOD level slots. This is handy for smaller objects, but use it carefully and wisely.
  • LOD culling is affected by an objects scale. A larger object with show a higher LOD level than a smaller one at the same distance. Remember this when creating your LOD models and when uploading.
  • Each LOD model must retain all the materials of the highest detailed model. If your model has 8 materials, so must all your LOD models. Ignoring this will result in unpredictable texture location changes.

TIP:ignoring this requirement wont stop the uploader. If you have a model that is displaying textures oddly, look closely at the materials in your LOD files.

  • It is also important that the bounding boxes of all the LOD models are identical in size. This keeps the object from changing its scale as it transitions through the LOD levels. Most modeling applications offer up ways to view the bounding box of multiple objects at the same time.

A good general rule to go by when creating LOD models would be to half the poly count of the level above it. For example: If the hero model is 500 poly, the next level should be close to 250 poly, the next 125, and the lowest near 75 poly. This can't be a hard rule, as object size, and use cases have to be taken into account.

Uploading a mesh model step by step [15]

Brief Uploader LOD section walk through, two ways

*Uploader Generated LODs*

  • 1 Choose Build > Upload > Model...
  • 2 In the High file slot open select the .dae file on your computer and click Open.
  • 3 Clicking on the Medium level slot to highlight that level. Highlighting any level displays that levels model in the window to the right. Use the up and down arrows in each level to raise or lower the triangle count until satisfied with the transition between the LODs

Done! Hit calculate and see if you like the LI count. But don't upload yet! I have more tricks to show you. For full details on Triangle Limit and Error Threshold, see Upload Model UI reference. [16]

*User created LOD files*

  • 1 Choose Build > Upload > Model...
  • 2 In the High LOD slot load the highest detailed model.
  • 3 In the Medium slot load the second highest LOD model.
  • 4 In the Low file slot load the second to lowest LOD model
  • 5 In the Lowest slot load the lowest LOD model.


Hit calculate and see if you like the LI count, but don't upload yet! A physics shape still needs to be assigned.

Physics

Second Life supports custom physics shapes. Both uploaded with a mesh object or uploaded independently. This allows for a visually complex object with an low physics impact/cost.

General Havok Physics thoughts and over simplifications

Havok[17] LOVES cubes. More than we love chocolate! It doesn't like triangles nearly as much. Here is why. When Havok sees a cube it is optimized to process that cube nearly instantaneously. Conversely, when Havok encounters an object more complex than a cube(even a hollow or cut cube) it then has to count Every Single triangle on that object and ponder what to do with each one. So keep those physics shapes as simple as possible!

Physics shapes and how they relate to mesh uploads and LOD

  • Creating your own physics shapes in a modeling application is easy.
    • Keep the poly count extremely low.
    • Make sure the physics shape model fills the bounding box of your model and LODs, or it will not line up with your visual geometry.
    • Export using a .dae COLLADA file.

The physics tab of the uploader step by step. [18]

This tab allows nearly infinite flexibility. Here is a quick description of the uploader physics tab. This is redundant but is needed to illustrate the importance and usefulness of the Analyze button.

Step 1: Level of Detail

  • You can assign any of your LOD levels as the physics shape.
  • Or insert a new file for the physics shape.
  • Or generate the physics shape right there in the uploader.

Step 2: Analyze IMPORTANT

  • A mesh physics shape uploaded without using the Analyze button will result in the faces being double sided inworld. For instance: a single plane will upload as a double sided wall. A cube will upload as a hollow box. This is useful for creating simple shapes, but also risky as it can create areas that will trap avatars and other physical objects.
  • Pressing the Analyze button changes all those double sided faces into single sided faces with respect to the normal direction. It also creates a physics shape that acts as a volume. Much like a prim, an Avatar or physical object interpolated with an Analyzed physics shape is neatly pushed out of the volume by Havok.

Step 3: Simplify

  • From here you can simplify.
  • close holes in more complex shapes. This is useful when using an LOD level for the physics shape.


The goal should always be a the simplest physics shape possible. Using the uploader tools here to keep the geometry and physics count as low as possible.

UV mapping

Anyone who has used the Build Tools inside of Second Life already understands UV mapping, but perhaps under different terminology. UV mapping is simply setting texture repeats(U and V) and offsets. If you look closely at the Build Tools Texture tab you'll see that U and V are used for the texture offset values already. Lean on that familiarity and this concept will come more easily. (world map image illustrating unwrapped earth)


General UV mapping techniques

Standard UV mapping

The most common UV map technique divides the mesh surface into neatly flattened sections. Most 3D modeling software packages have this functionality built in. The result is familiar to us and looks like this: (image of SL face UV map)

UV mapping this way has advantages and disadvantages.

  • The shapes created usingthis UV mapping technique makes it easier to visualize how the texture will apply inworld, which makes modifying and drawing on the texture easier.
  • Most 3D modeling software packages can be used to generate beautiful textures using this mapping technique(in conjunction with Projection mapping, scene lighting, etc.).
  • The disadvantages come in to play with larger or very complex objects. One simple runs out of pixels(or texture space) if trying to flatten a complex object onto one UV map. Large objects often need a seamless repeatable texture.

(image of theater UV with zanny blurry wallpaper.)

Projection UV mapping

Projection UV mapping is much like applying textures to a prim object inworld, the goal of UV mapping this way is to scale, rotate, and offset a diffuse texture so the object wears it perfectly.

  • The advantage of mapping this way for Second Life is versatility. A house UV mapped this way can wear any number of standard wall, roof, or trim textures.
  • The texture can be repeat and offset.
  • The texture can be animated.
  • disadvantages:
    • potential for texture size overuse inworld.
    • Models uploaded with projection UV maps can not take advantage of modeling softwares texture baking capability.

(image of wall wearing obvious square textures)

Baking textures

An advanced feature of most modeling software packages uses both the Standard UV map and the Projection maps to render an image is sometimes referred to as Baking a texture. The goal is to use all the texture information stored in the Projection maps to create an image that fits the Standard UV map. This render can influenced by any lighting or other objects in the scene.



Texture Faces

  • Second Life's COLLADA mesh uploader supports up to 8 separate texture faces.
  • Each LOD model must all have the same number of Texture faces.
  • All the separate faces need to use the same UV map.
  • Each modeling software handles this slightly differently. Assigning different areas to different materials archives separate Texture faces on an uploaded Mesh in some modelers, and assigning areas to separate textures achieves this in others. Application specific information [19]

Normals

Normal is an adjective that describes something that is perpendicular to a plane. [20] For the scope of this article, normal describes the direction a face is pointing. Most 3d renderers, the Second Life Viewer included, smartly render only one side of a face. This saves cycles but assumes model is Manifold (enclosed in a way that won't encourage views inline with the normal, or are double sided where needed)

Normal and flipped normal sphere.png Two spheres. Left: Normals pointing out, Right: Normals pointing in.

Smooth Normals

In the case of a round or curved multiple face surface, a Normal average can be used; which allows an inexpensive surface smoothing. Commonly known as Smooth Normals or Smooth shading, it is an invaluable tool when creating low poly Second Life content. Smooth Normals allow fewer faces to achieve a visually smooth surface. Far far fewer faces. For example, a five sided cylinder with smooth normals can appear completely round in Second Life. In some cases, a three sided cylinder will appear perfectly round.

Smooth cylinder next to not smooth.png Two 5 sided cylinders. Top: Solid Normals. Bottom: Smooth normals. Note where both cylinders intersect the walls, they show the profile of the actual geometry.

Applying Smooth Normals to some areas and not to others is another useful for adding detail or highlighting edges.

Candlestick.png

Low poly modeling

We are not making the next Avatar movie, we are streaming triangles and data near the speed of light. Make sure each and every poly and bit counts. There are many low poly modeling techniques and software specific tutorials and tools available around the web. [21]

The goal should always be to save every triangle everywhere you can on the model you plan to upload. *Ensure that any flat surface uses the least amount of faces as possible.

  • Use Smooth Normals to fake smooth curved surfaces.
  • Use a low poly rendering tricks to bake detailed textures.

Low Poly Texture baking tricks

The idea is to create a very highly detailed model and use it to render gorgeous textures on to a very simple low poly Second Life friendly version. Making the name low poly modeling slightly deceptive. As you will most likely model and render a very high poly scene. But, the result is a very efficient model with very detailed textures, well poised for incoming Normal and Specular maps.

Most modeling software packages have features built in to facilitate this technique. Look up your favorites', it will be time very well spent.

Best practices hit list

  • Low poly count.
  • Smart UV mapping for efficient texture use and size.
  • Smart LOD settings and files.
  • Smart appropriately Analyzed simple physic shapes.