Difference between revisions of "Mesh and LOD"
Atami Merlin (talk | contribs) m (translation) |
|||
(23 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{multi-lang}} | |||
==Level Of Detail== | ==Level Of Detail== | ||
Level | ''Level of Detail'' (LOD) is the mechanism by which Second Life lowers an object's visual detail by increments as the camera gets further away. When uploading a mesh model, we have complete control over the amount of detail at each level. | ||
*The uploader supports four | *The uploader supports four levels of detail. | ||
*The uploader automatically generates | *The uploader automatically generates lower LODs suitable for preview or rough import. You can achieve smoother transitions between levels by creating your own lower LOD models. | ||
*LOD culling (the viewing distance at which the detail levels change) is affected by an object's scale. A large object shows a higher LOD than a smaller object at the same distance. Remember this when creating your LOD models and when uploading. | *LOD culling (the viewing distance at which the detail levels change) is affected by an object's scale. A large object shows a higher LOD than a smaller object at the same distance. Remember this when creating your LOD models and when uploading. | ||
*The uploader allows the same file to be used in multiple LOD level slots. This is useful for ensuring detail on smaller objects but use it wisely; using a highly detailed model in all slots can adversely affect the model's land impact and rendering performance. | |||
*Make sure the bounding boxes of all the LOD models are identical in size. This prevents the object from changing its scale as it transitions through the LOD levels. Most modeling applications offer ways to view the bounding box of multiple objects at the same time. | *Make sure the bounding boxes of all the LOD models are identical in size. This prevents the object from changing its scale as it transitions through the LOD levels. Most modeling applications offer ways to view the bounding box of multiple objects at the same time. | ||
*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. Ignoring the materials requirement won't stop the uploader. If you have a model that is displaying textures improperly, look closely at the materials in your LOD files. | *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. Ignoring the materials requirement won't stop the uploader. If you have a model that is displaying textures improperly, look closely at the materials in your LOD files. | ||
* A general guideline for creating LOD models is to reduce the triangle count by 50%-75% at each level. For example: If the most detailed model is 400 triangles, the next level should be no higher than 200 triangles. The next level should be no higher than 100, and the lowest should be near or below 50 triangles. | |||
Uploading a mesh model step by step on the Second Life Knowledge Base: [http://community.secondlife.com/t5/English-Knowledge-Base/Uploading-a-mesh-model/ta-p/974185 Uploading a mesh model] | |||
===Brief Uploader LOD section walk through=== | |||
==== Uploader Generated LODs ==== | |||
# Choose '''Build > Upload > Model...''' from the top menu bar. | |||
# In the High file slot click '''Browse''', then select the .dae file on your computer and click '''Open'''. | |||
# Click on the Medium level slot to highlight that level. Highlighting any level displays that level's model in the '''Preview''' pane. Use the up and down arrows on each level to raise or lower the triangle count until satisfied with the transition between the LODs. | |||
# Click '''Calculate weights & fee''' and see if you like the Land Impact count, but don't upload yet! We still need to adjust the model's physics properties. | |||
For full details on Triangle Limit and Error Threshold, see [[Mesh/Upload_Model_UI_reference|Upload Model UI reference]]. | |||
==== User created LOD files ==== | |||
# Choose '''Build > Upload > Model...''' from the top menu bar. | |||
# In the High LOD slot load the highest detailed model as described above. | |||
# In the Medium slot load the second highest LOD model. | |||
# In the Low file slot load the second to lowest LOD model | |||
# In the Lowest slot load the lowest LOD model. | |||
# Click '''Calculate weights & fee''' and see if you like the Land Impact count, but don't upload yet! We still need to adjust the model's physics properties. | |||
==Physics== | ==Physics== | ||
Second Life supports custom physics shapes, which can be uploaded with a mesh object or uploaded independently. This allows for the creation of a visually complex object that has a low physics weight. For Havok's official (and extremely technical) best practices in creating physics shapes, see [http://community.secondlife.com/t5/English-Knowledge-Base/Best-practices-for-creating-efficient-collision-volumes/ta-p/984115 Best practices for creating efficient collision volumes] in the Second Life Knowledge Base. | |||
===Havok Physics tips and oversimplifications=== | |||
[https://wiki.secondlife.com/wiki/Physics_engine Havok] LOVES cubes, and here is why: Havok is optimized to process cubes 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! | |||
Here are some guidelines for creating physics shapes for various types of projects: | |||
* For large, concave shapes (like a house), use a custom physics mesh with a minimal triangle count. The larger the triangles used in the physics mesh, the lower the physics cost. | |||
* For very simple objects that don't need precision collision shapes (like the trunk of a tree), try using a trivial physics shape like a box. For more information on this method, see [[Physics Optimization]]. | |||
* For intermediate objects that are too small to efficiently use a custom physics mesh but need a fairly accurate collision model, use the physics tab of the mesh uploader as described below. | |||
===Physics shapes and how they relate to mesh uploads and LOD=== | ===Physics shapes and how they relate to mesh uploads and LOD=== | ||
[http://community.secondlife.com/t5/English-Knowledge-Base/Uploading-a-mesh-model/ta-p/974185#Section_.5 Here are step-by-step instructions on using the physics tab of the mesh uploader.] | |||
[http://community.secondlife.com/t5/English-Knowledge-Base/Uploading-a-mesh-model/ta-p/974185#Section_.5] | |||
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. | 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 | ====Step 1: Level of Detail==== | ||
*You can assign any of your LOD levels as the physics shape. | * You can assign any of your LOD levels as the physics shape. | ||
*Or insert a new file for the physics shape. | * Or insert a new file for the physics shape. | ||
*Or generate the physics shape right there in the uploader. | * Or generate the physics shape right there in the uploader. | ||
Step 2: Analyze | ====Step 2: Analyze==== | ||
*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. | * 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 | * Pressing the Analyze button generates a set of ''convex shapes'' (shapes with no holes or depressions) that approximates the original mesh shape; these convex hulls create a physics shape that acts as a volume. Avatar or physical objects stuck inside an Analyzed physics shape are neatly pushed out of the volume by Havok. | ||
Step 3: Simplify | ====Step 3: Simplify==== | ||
*From here you can 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. | The goal should always be a the simplest physics shape possible. Use the uploader tools here to keep the geometry and physics count as low as possible. | ||
==UV mapping== | ==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. | |||
===General UV mapping techniques=== | ===General UV mapping techniques=== | ||
====Standard UV mapping==== | ====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 most common UV map technique divides the mesh surface into neatly flattened sections. Most 3D modeling software packages have this functionality built in. | ||
UV mapping this way has advantages and disadvantages | 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. | *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.). | *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 | *The disadvantages become apparent with larger or very complex objects. One simply runs out of pixels(or texture space) if trying to flatten a complex object onto one UV map. Instead, large objects often need a seamless repeatable texture. | ||
====Projection UV mapping==== | ====Projection UV mapping==== | ||
Projection UV mapping is much like applying textures to a prim object inworld, the goal of UV mapping | Projection UV mapping is much like applying textures to a prim object inworld, the goal of projection UV mapping is to scale, rotate, and offset a diffuse texture so the object wears it perfectly. | ||
*The advantage of mapping | *The advantage of projection UV mapping is versatility. A house UV mapped this way can wear any number of standard wall, roof, or trim textures. | ||
*The texture can be | *The texture can be repeated and offset. | ||
*The texture can be animated. | *The texture can be animated. | ||
Disadvantages: | |||
* | *Potential for texture size overuse inworld. | ||
*Models uploaded with projection UV maps can not take advantage of modeling software's texture baking capability. | |||
====Baking textures==== | ====Baking textures==== | ||
An advanced feature of most modeling software packages uses both the Standard UV map and the | An advanced feature of most modeling software packages uses both the Standard UV map and the projection maps to render an image. This 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 be influenced by any lighting or other objects in the scene. | ||
==Texture Faces== | ==Texture Faces== | ||
Line 178: | Line 97: | ||
*Each LOD model must all have the same number of 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. | *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. | *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. [http://wiki.secondlife.com/wiki/Mesh/Uploading_a_multi-face_mesh Here are some examples of application specific information.] | ||
==Normals== | ==Normals== | ||
A [http://en.wikipedia.org/wiki/Normal_%28geometry%29 ''normal''] is something that is perpendicular to a plane. | |||
For the scope of this article, normal describes the direction a face is pointing. Most | 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) | ||
[[File:normal and flipped normal sphere.png]] | [[File:normal and flipped normal sphere.png|256px]] | ||
Two spheres. Left: Normals pointing out, Right: Normals pointing in. | Two spheres. Left: Normals pointing out, Right: Normals pointing in. | ||
===Smooth Normals=== | ===Smooth Normals=== | ||
In the case of a round or curved multiple face surface, a | In the case of a round or curved multiple face surface, a normal average can be used. A normal average allows inexpensive surface smoothing. Commonly known as "smooth normals" or "smooth shading", it is an invaluable tool when creating low polygon Second Life content. Smooth normals allow fewer faces to appear as a visually smooth surface, requiring far fewer faces. For example, a five-sided cylinder with smooth normals can appear completely round in Second Life. In some cases, a even a three-sided cylinder can appear perfectly round. | ||
Smooth | |||
For example, a five sided cylinder with smooth normals can appear completely round in Second Life. In some cases, a three sided cylinder | |||
[[File:smooth cylinder next to not smooth.png]] | {| | ||
Two | |- | ||
|[[File:smooth cylinder next to not smooth.png|256px]] | |||
|Two five-sided cylinders. Top: Solid normals. Bottom: Smooth normals. | |||
Note where both cylinders intersect the walls, they show the profile of the actual geometry. | Note where both cylinders intersect the walls, they show the profile of the actual geometry. | ||
|- | |||
|[[File:candlestick.png|256px]] | |||
|Applying smooth normals to some areas and not to others can be useful for adding detail or highlighting edges. | |||
|} | |||
==Low polygon modeling== | |||
==Low | |||
It is important to remember that Hollywood-quality digital models are extremely costly to use in Second Life. Real-time rendering means Second Life must stream triangles and data near the speed of light. Make sure each and every polygon and bit counts! | |||
There are many [http://en.wikipedia.org/wiki/Low_poly low polygon] modeling techniques and software-specific tutorials and tools available around the web. | |||
The goal is to save every triangle you can on the model you plan to upload: | |||
The | *Ensure that any flat surface uses the smallest number of triangles possible. | ||
*Use smooth normals to "fake" smooth curved surfaces. | |||
*Use low polygon rendering tricks to bake detailed textures, which can provide the illusion of more geometric detail. | |||
===Low polygon texture baking tricks=== | |||
It is possible to create a very highly detailed model and use it to render gorgeous textures on the faces of a very simple low polygon (Second Life friendly) version. | |||
In this case, the name "low polygon modeling" sounds slightly deceptive because you will model and render a very high polygon scene for the purposes of creating the textured illusion. However, the final product is a very efficient, low-polygon model with very detailed textures mapped onto it. | |||
Most modeling software packages have features built in to facilitate this technique. | |||
Latest revision as of 00:53, 20 December 2012
Level Of Detail
Level of Detail (LOD) is the mechanism by which Second Life lowers an object's visual detail by increments as the camera gets further away. When uploading a mesh model, we have complete control over the amount of detail at each level.
- The uploader supports four levels of detail.
- The uploader automatically generates lower LODs suitable for preview or rough import. You can achieve smoother transitions between levels by creating your own lower LOD models.
- LOD culling (the viewing distance at which the detail levels change) is affected by an object's scale. A large object shows a higher LOD than a smaller object at the same distance. Remember this when creating your LOD models and when uploading.
- The uploader allows the same file to be used in multiple LOD level slots. This is useful for ensuring detail on smaller objects but use it wisely; using a highly detailed model in all slots can adversely affect the model's land impact and rendering performance.
- Make sure the bounding boxes of all the LOD models are identical in size. This prevents the object from changing its scale as it transitions through the LOD levels. Most modeling applications offer ways to view the bounding box of multiple objects at the same time.
- 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. Ignoring the materials requirement won't stop the uploader. If you have a model that is displaying textures improperly, look closely at the materials in your LOD files.
- A general guideline for creating LOD models is to reduce the triangle count by 50%-75% at each level. For example: If the most detailed model is 400 triangles, the next level should be no higher than 200 triangles. The next level should be no higher than 100, and the lowest should be near or below 50 triangles.
Uploading a mesh model step by step on the Second Life Knowledge Base: Uploading a mesh model
Brief Uploader LOD section walk through
Uploader Generated LODs
- Choose Build > Upload > Model... from the top menu bar.
- In the High file slot click Browse, then select the .dae file on your computer and click Open.
- Click on the Medium level slot to highlight that level. Highlighting any level displays that level's model in the Preview pane. Use the up and down arrows on each level to raise or lower the triangle count until satisfied with the transition between the LODs.
- Click Calculate weights & fee and see if you like the Land Impact count, but don't upload yet! We still need to adjust the model's physics properties.
For full details on Triangle Limit and Error Threshold, see Upload Model UI reference.
User created LOD files
- Choose Build > Upload > Model... from the top menu bar.
- In the High LOD slot load the highest detailed model as described above.
- In the Medium slot load the second highest LOD model.
- In the Low file slot load the second to lowest LOD model
- In the Lowest slot load the lowest LOD model.
- Click Calculate weights & fee and see if you like the Land Impact count, but don't upload yet! We still need to adjust the model's physics properties.
Physics
Second Life supports custom physics shapes, which can be uploaded with a mesh object or uploaded independently. This allows for the creation of a visually complex object that has a low physics weight. For Havok's official (and extremely technical) best practices in creating physics shapes, see Best practices for creating efficient collision volumes in the Second Life Knowledge Base.
Havok Physics tips and oversimplifications
Havok LOVES cubes, and here is why: Havok is optimized to process cubes 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!
Here are some guidelines for creating physics shapes for various types of projects:
- For large, concave shapes (like a house), use a custom physics mesh with a minimal triangle count. The larger the triangles used in the physics mesh, the lower the physics cost.
- For very simple objects that don't need precision collision shapes (like the trunk of a tree), try using a trivial physics shape like a box. For more information on this method, see Physics Optimization.
- For intermediate objects that are too small to efficiently use a custom physics mesh but need a fairly accurate collision model, use the physics tab of the mesh uploader as described below.
Physics shapes and how they relate to mesh uploads and LOD
Here are step-by-step instructions on using the physics tab of the mesh uploader.
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
- 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 generates a set of convex shapes (shapes with no holes or depressions) that approximates the original mesh shape; these convex hulls create a physics shape that acts as a volume. Avatar or physical objects stuck inside an Analyzed physics shape are 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. Use 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.
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.
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 become apparent with larger or very complex objects. One simply runs out of pixels(or texture space) if trying to flatten a complex object onto one UV map. Instead, large objects often need a seamless repeatable texture.
Projection UV mapping
Projection UV mapping is much like applying textures to a prim object inworld, the goal of projection UV mapping is to scale, rotate, and offset a diffuse texture so the object wears it perfectly.
- The advantage of projection UV mapping is versatility. A house UV mapped this way can wear any number of standard wall, roof, or trim textures.
- The texture can be repeated 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 software's texture baking capability.
Baking textures
An advanced feature of most modeling software packages uses both the Standard UV map and the projection maps to render an image. This 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 be 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. Here are some examples of application specific information.
Normals
A normal is something that is perpendicular to a plane. 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)
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. A normal average allows inexpensive surface smoothing. Commonly known as "smooth normals" or "smooth shading", it is an invaluable tool when creating low polygon Second Life content. Smooth normals allow fewer faces to appear as a visually smooth surface, requiring far fewer faces. For example, a five-sided cylinder with smooth normals can appear completely round in Second Life. In some cases, a even a three-sided cylinder can appear perfectly round.
Low polygon modeling
It is important to remember that Hollywood-quality digital models are extremely costly to use in Second Life. Real-time rendering means Second Life must stream triangles and data near the speed of light. Make sure each and every polygon and bit counts! There are many low polygon modeling techniques and software-specific tutorials and tools available around the web.
The goal is to save every triangle you can on the model you plan to upload:
- Ensure that any flat surface uses the smallest number of triangles possible.
- Use smooth normals to "fake" smooth curved surfaces.
- Use low polygon rendering tricks to bake detailed textures, which can provide the illusion of more geometric detail.
Low polygon texture baking tricks
It is possible to create a very highly detailed model and use it to render gorgeous textures on the faces of a very simple low polygon (Second Life friendly) version. In this case, the name "low polygon modeling" sounds slightly deceptive because you will model and render a very high polygon scene for the purposes of creating the textured illusion. However, the final product is a very efficient, low-polygon model with very detailed textures mapped onto it.
Most modeling software packages have features built in to facilitate this technique.