Difference between revisions of "Pathfinding Tools in the Second Life Viewer"
Rand Linden (talk | contribs) |
|||
(57 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
{{Pathfinding Nav}} | {{Pathfinding Nav}} | ||
__TOC__ | __TOC__ | ||
== Introduction == | == Introduction == | ||
For pathfinding, | For pathfinding, each region has a navigation mesh, commonly referred to as a "'''navmesh'''". The '''navmesh''' is a representation of the region's geometry generated and used by the physics simulator to determine paths for the pathfinding characters. The navmesh may be in one of the following three states: | ||
* Up-to-date | |||
* Has pending changes | |||
* Building ''(a.k.a. rebaking)'' | |||
[[File: | The navmesh will transition through these states according to the following diagram: | ||
<br><br> | |||
== | [[File:Navmesh_transitions.png|alt=Second Life Pathfinding NavMesh Transitions|Second Life Pathfinding NavMesh Transitions]] | ||
Six new elements have been added to the SL Viewer interface to communicate the navmesh state for the current region. These new elements are: | |||
* icon representations of the pathfinding region state for the SLURL bar | |||
* a right-click context menu option addition | |||
* an additional field on the Build floater | |||
* an additional field on the Object Profile floater | |||
* additional simulator metrics on the Statistics floater | |||
In addition to these new elements, three new floaters allow users to more efficiently create, visualize, test, and debug pathfinding-enabled characters. These tools are not required to create pathfinding behaviors but are particularly useful to builders and experienced creators in Second Life. These new floaters are: | |||
* Pathfinding linksets | |||
* Pathfinding characters | |||
* Pathfinding view / test | |||
== Pathfinding UI Elements == | |||
'''Note that other residents editing pathfinding objects on the same region may create pending changes to the navmesh.''' When this occurs, all residents on the same region and with build rights will see the appropriate SLURL bar icons. | |||
=== Pathfinding Icons in SLURL Bar === | |||
The SLURL bar indicates the three pathfinding states of the current region. | |||
# '''Navmesh is up-to-date''' The current region's navmesh is up-to-date. No icon is shown as this is the expected default state. <br> [[File:Pathfinding-clean-region-1.png|alt=Second Life URL Bar with Up-to-Date NavMesh Icon|Second Life URL Bar with Up-to-Date NavMesh Icon]] | |||
# '''Navmesh has pending changes''' The region has pending changes that have not yet been baked into the navmesh. A pathfinding icon with a construction symbol is shown. <br> [[File:Pathfinding-dirty-region-1.png|alt=Second Life URL Bar with Pending Changes Icon|Second Life URL Bar with Pending Changes Icon]] | |||
# '''Dynamic pathfinding is disabled''' The region has dynamic pathfinding disabled. Pathfinding characters will not work as expected. A pathfinding icon with a disabled symbol is shown.<br> [[File:Pathfinding-disabled-region-1.png|alt=Second Life URL Bar with Pathfinding Disabled Icon|Second Life URL Bar with Pathfinding Disabled Icon]] | |||
=== Rebake Region === | |||
When a region has pending changes, the appropriate icon will be shown in the SLURL bar, as described above. In addition, if the user has build rights for any parcel on the current region, the "Rebake region" item under the Build menu will be active. | |||
[[Image:Rebake-region.png|alt=If the Rebake Region menu item can be highlighted, this user is permitted to bake pending navmesh changes.]] | |||
When the user picks this menu item, a request is sent to the region to rebake the navmesh for the current region. Rebaking a region may be a time intensive process. After the rebaking is complete, the pathfinding icon in the navigation bar will vanish. | |||
=== Right-click context menu behavior === | |||
When right-clicking on an object in-world, pathfinding-specific menu options may be included in the pop-up context menu. | |||
If the user right-clicks on a '''linkset''' object in-world, a menu option "Show in linksets" will allow the user to open the Pathfinding Linksets floater with the current object selected. | |||
[[File:Right-click-show-in-linksets-1.png|alt=Second Life Context Menu with Show in Linksets floater menu option]] | |||
If the user right-clicks on a pathfinding '''character''' object in-world, a menu option "Show in characters" will allow the user to open the Pathfinding Characters floater with the current object selected. | |||
[[File:Right-click-show-in-characters-1.png|alt=Second Life Context Menu with Show in Characters floater menu option]] | |||
=== Additional field on the Build floater === | |||
The Build floater has also been updated with an additional field indicating the pathfinding attributes of the current object. | |||
The | |||
The following image is a screenshot of the Build floater with a ''character'' object selected. | |||
[[File:Build-floater-character-1.png|alt=Build floater with pathfinding attribute character|Build floater with pathfinding attribute character]] | |||
The following image is a screenshot of the Build floater with an object that ''affects navmesh'' selected. This object could be a ''walkable'', ''static obstacle'', ''material volume'', or ''exclusion volume''. | |||
[[File:Build-floater-affects-navmesh-1.png|alt=Build floater with pathfinding attribute affects navmesh|Build floater with pathfinding attribute affects navmesh]] | |||
{{KBwarning|For linksets that do affect the navmesh, it will be impossible to modify the object across the region boundary. The user and the object affecting a navmesh must be in the same region to enable modification of the object. This will be indicated on the General tab of the Build floater as illustrated in the following screenshot.}} | |||
[[File:Build-floater-region-boundary-1.png|alt=Build floater indicating that the user cannot modify object across a region boundary|Build floater indicating that the user cannot modify object across a region boundary]] | |||
=== | === Additional field on the Object Profile floater === | ||
Similar to the afore-described Build floater, the Object Profile floater has also been updated with an additional field indicating the pathfinding attributes of the current object. | |||
The following image is a screenshot of the Object Profile floater with an ''affects navmesh'' object selected. | |||
[[File:Object-profile-1.png|alt=Object Profile floater with pathfinding attribute affects navmesh|Object Profile floater with pathfinding attribute affects navmesh]] | |||
=== Additional simulator metrics on the Statistics floater === | |||
For advanced users, additional simulator metrics have been added to the Statistics floater. The Statistics floater, available from the main menu Advanced > Performance Tools > Statistics Bar, has the following 3 additional fields reporting statistics from the simulator regarding pathfinding activity: | |||
The | * '''AI Step Time''' - The average time spent during each frame computing character AI events. | ||
* '''Skipped Silhouette Steps''' - The number of steps that are skipped per second in computing the influence of objects of type ''Movable Obstacles'' on the navmesh. A high value here means that objects on the region are marked as ''Movable Obstacles'' and could be contributing to improper pathfinding behavior on the region. To lower this value, set all objects that do not move to either type ''Walkable'' or ''Static Obstacle'', and optimize any ''Movable Obstacle'' shapes to meet the [[Good_Building_Practices|Good Building Practices Guide]]. | |||
* '''Characters Updated''' - The average percentage of characters updated during each frame. A low value here means that character AI computations are taking too long during each frame, and thus some character updates are skipped during subsequent frames. This could be contributing to improper pathfinding behavior on the region. To increase this value, decrease the number of characters on the region, and optimize any ''Movable Obstacle'' shapes to meet the [[Good_Building_Practices|Good Building Practices Guide]]. Note that the Pathfinding Characters floater (described below) may also be used to determine which characters on the region are contributing the most to the region's CPU time. | |||
[[File: | [[File:Pathfinding-stats-2.png|alt=Simulator Statistics floater with additional pathfinding statistics|Simulator Statistics floater with additional pathfinding statistics]] | ||
== Pathfinding Floaters == | |||
These three pathfinding floaters may all be accessed through the Build->Pathfinding menu in the Project Viewer - Pathfinding. | |||
[[File:Build-menu-pf-selected-1.png|alt=Second Life Build Menu with new Pathfinding menu items|SL Build -> Pathfinding Menu]] | |||
<br><br> | <br><br> | ||
== Pathfinding Linksets Floater == | === Pathfinding Linksets Floater === | ||
=== Overview === | ==== Overview ==== | ||
The intent of the Pathfinding Linksets floater is to give advanced users and builders the ability to customize an area to achieve interesting effects with pathfinding-enabled characters. | The intent of the Pathfinding Linksets floater is to give advanced users and builders the ability to customize an area to achieve interesting effects with pathfinding-enabled characters. It can be initiated using the Build->Pathfinding->LinkSets options in the viewer menu. | ||
The floater displays information for all linksets within the current region for which the user has the ability to alter. The table reports useful information including | The floater displays information for all linksets within the current region for which the user has the ability to alter. The table reports useful information including | ||
* Linkset Name | * Linkset Name | ||
* Description | * Description | ||
* Owner | |||
* Whether the object is Scripted | |||
* Land Impact | * Land Impact | ||
* Distance from the | * Distance from the resident's avatar | ||
* Linkset Use | * Linkset Use | ||
** Potential values | ** Potential values | ||
Line 78: | Line 120: | ||
*** Movable Phantom | *** Movable Phantom | ||
* Walkability Coefficients | * Walkability Coefficients | ||
** Character Type A | ** Character Type A ''(example use: humanoid)'' | ||
** Character Type B | ** Character Type B ''(example use: creature)'' | ||
** Character Type C | ** Character Type C ''(example use: mechanical)'' | ||
** Character Type D | ** Character Type D ''(example use: other)'' | ||
Additionally, selecting any linksets within the floater will also select the object(s) within the Viewer. | Additionally, selecting any linksets within the floater will also select the object(s) within the Viewer. | ||
[[File:Linksets-floater- | [[File:Linksets-floater-3.png|alt=Pathfinding Linksets floater|Pathfinding Linksets]] | ||
<br><br> | <br><br> | ||
=== Controls === | ==== Controls ==== | ||
{{:Viewerhelp:Pathfinding linksets}} | {{:Viewerhelp:Pathfinding linksets}} | ||
=== Example | ==== Example use ==== | ||
The advanced users and builders will use the Pathfinding Linksets floater to customize areas to create interesting effects for pathfinding-enabled characters. | The advanced users and builders will use the Pathfinding Linksets floater to customize areas to create interesting effects for pathfinding-enabled characters. | ||
Line 117: | Line 159: | ||
|} | |} | ||
<br><br> | <br><br> | ||
In addition to linkset use attributes, builders can achieve additional effects by modifying the walkability coefficients for linksets. The walkability coefficients are values, ranging from 0% to 100%, that affect a characters speed. A walkability coefficient of 50% will reduce a | In addition to linkset use attributes, builders can achieve additional effects by modifying the walkability coefficients for linksets. The walkability coefficients are values, ranging from 0% to 100%, that affect a characters speed. A walkability coefficient of 50% will reduce a character's speed by half while the character is traversing across the linkset. | ||
<br><br> | <br><br> | ||
== Pathfinding Characters Floater == | === Pathfinding Characters Floater === | ||
=== Overview === | ==== Overview ==== | ||
The intent of Pathfinding Characters floater is primarily for users to locate characters moving throughout a region and to identify the CPU cost of characters affecting the performance of a region. | The intent of Pathfinding Characters floater is primarily for users to locate characters moving throughout a region and to identify the CPU cost of characters affecting the performance of a region. It can be initiated using the Build->Pathfinding->Characters options in the viewer menu. | ||
The floater displays information for all characters within the current region for which the user has the ability to manipulate. The table reports useful information including | The floater displays information for all characters within the current region for which the user has the ability to manipulate. The table reports useful information including | ||
Line 132: | Line 174: | ||
* Altitude | * Altitude | ||
[[File:Characters-floater- | [[File:Characters-floater-1.png|alt=Pathfinding Characters floater|Pathfinding Characters]] | ||
<br><br> | <br><br> | ||
=== Controls === | ==== Controls ==== | ||
{{:Viewerhelp:Pathfinding characters}} | {{:Viewerhelp:Pathfinding characters}} | ||
=== Example | ==== Example use ==== | ||
# If a region owner has created a pathfinding-enabled character but is unable to find the character within the region, the Characters floater can be used to locate and select the character. | # If a region owner has created a pathfinding-enabled character but is unable to find the character within the region, the Characters floater can be used to locate and select the character. | ||
# Additionally, the Pathfinding Characters floater reports the CPU time cost for each character within the region. This functionality can be used by advanced users to identify which characters are impacting performance the most. | # Additionally, the Pathfinding Characters floater reports the CPU time cost for each character within the region. This functionality can be used by advanced users to identify which characters are impacting performance the most. | ||
=== Pathfinding View/Test Floater === | |||
==== Overview ==== | |||
The intent of the Pathfinding View/Test floater is for advanced users who are building pathfinding-enabled objects and characters. It can be initiated using the Build->Pathfinding->View/Test options in the viewer menu. | |||
This floater consists of 3 basic areas. | |||
# Status area (illustrating both the Viewer and Simulator status of the region's navmesh) | |||
# View tab Controls | |||
# Test Path tab Controls | |||
The following image is a screenshot of the Pathfinding View/Test floater with the navmesh displayed. | |||
[[File:View-nav-mesh-1.png|alt=Pathfinding View/Test floater with the navmesh displayed|Pathfinding View/Test with navmesh displayed]] | |||
The following image is a screenshot of the Pathfinding View/Test floater with the pathfinding object types displayed. | |||
[[File:View-pf-types-1.png|alt=Pathfinding View/Test floater with the pathfinding object types displayed|Pathfinding View/Test with the pathfinding object types displayed]] | |||
The following image is a screenshot of the Pathfinding View/Test floater with a test path displayed. | |||
[[File:View-test-path-1.png|alt=Pathfinding View/Test floater with a test path displayed|Pathfinding View/Test with a test path displayed]] | |||
<br><br> | |||
==== Controls ==== | |||
{{:Viewerhelp:Pathfinding edit and test}} | |||
==== Example Use ==== | |||
# The advanced user will use the Visualization controls to visualize how the navmesh and related permanent objects have been generated. By seeing this visualization of how the physics engine interprets the navigation information, the advanced user can understand how to better customize the pathfinding-enabled objects to obtain the desired behaviors of characters. | |||
# The advanced user will use the Test Tab to visualize how a test character would choose the path between selected start and end points. | |||
<br><br> | |||
== Known Issues == | |||
{| style="border-style:solid;border-width:2px 0 2px 0px;" | |||
! style="border-style:solid;border-width:0 0 1px 0" width="130" | JIRA | |||
! style="border-style:solid;border-width:0 0 1px 0" width="300" | Summary | |||
! style="border-style:solid;border-width:0 0 1px 0" width="550" | Hardware | |||
! style="border-style:solid;border-width:0 0 1px 0" width="100" | Fixed in Version | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-1291 MAINT-1291] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Enable Debug GL crashes the viewer to the desktop | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Mac Pro running 10.7.4 with AMD Radeon HD5770 <br> iMac running Mac OS X Lion 10.7.4 (11E53) with AMD Radeon HD 6770M (512 MB) <br> PC Clone running XP Pro with GeForce2 Ultra | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-1745 MAINT-1745] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Crash in the viewer relating to LLLoginInstance and constructAuthParams | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2071 MAINT-2071] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Underwater 'Walkables' shapes are reflected about the water plane | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2072 MAINT-2072] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | navmesh being drawn over worn flexi prims and under avatar | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2073 MAINT-2073] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Physics capsule rendering of character shapes is broken after zooming | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2074 MAINT-2074] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Configuration with ATI Radeon 7500 can launch Viewer, serious GFx issues | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | AMD Athlon64 3000+ with ATI Radeon 7500 video card | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2075 MAINT-2075] <br> [https://jira.secondlife.com/browse/VWR-29500 VWR-29500] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Shadows not operational under Second Life Beta 3.4.0.262596 | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Mac OS X 10.7.4 with ATI Radeon X1600 OpenGL Engine video card | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2076 MAINT-2076] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | The navmesh starts blinking on empty regions while 'Movables only' and 'Navmesh' checkboxes are checked in View/test floater | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2093 MAINT-2093] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Navmesh objects disappear in 'Movables only' view while user turning around | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|- | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [https://jira.secondlife.com/browse/MAINT-2094 MAINT-2094] | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | [BetaBreakers] - Sony VAIO PCG-71211 laptop displays black environment | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | Sony VAIO PCG-71211 laptop with AMD Radeon HD5650M Mobile graphics | |||
| style="border-style:solid;border-width:0 0 1px 0;border-color:rgb(200,200,200)" | | |||
|} |
Latest revision as of 09:08, 31 December 2013
Introduction
For pathfinding, each region has a navigation mesh, commonly referred to as a "navmesh". The navmesh is a representation of the region's geometry generated and used by the physics simulator to determine paths for the pathfinding characters. The navmesh may be in one of the following three states:
- Up-to-date
- Has pending changes
- Building (a.k.a. rebaking)
The navmesh will transition through these states according to the following diagram:
Six new elements have been added to the SL Viewer interface to communicate the navmesh state for the current region. These new elements are:
- icon representations of the pathfinding region state for the SLURL bar
- a right-click context menu option addition
- an additional field on the Build floater
- an additional field on the Object Profile floater
- additional simulator metrics on the Statistics floater
In addition to these new elements, three new floaters allow users to more efficiently create, visualize, test, and debug pathfinding-enabled characters. These tools are not required to create pathfinding behaviors but are particularly useful to builders and experienced creators in Second Life. These new floaters are:
- Pathfinding linksets
- Pathfinding characters
- Pathfinding view / test
Pathfinding UI Elements
Note that other residents editing pathfinding objects on the same region may create pending changes to the navmesh. When this occurs, all residents on the same region and with build rights will see the appropriate SLURL bar icons.
Pathfinding Icons in SLURL Bar
The SLURL bar indicates the three pathfinding states of the current region.
- Navmesh is up-to-date The current region's navmesh is up-to-date. No icon is shown as this is the expected default state.
- Navmesh has pending changes The region has pending changes that have not yet been baked into the navmesh. A pathfinding icon with a construction symbol is shown.
- Dynamic pathfinding is disabled The region has dynamic pathfinding disabled. Pathfinding characters will not work as expected. A pathfinding icon with a disabled symbol is shown.
Rebake Region
When a region has pending changes, the appropriate icon will be shown in the SLURL bar, as described above. In addition, if the user has build rights for any parcel on the current region, the "Rebake region" item under the Build menu will be active.
When the user picks this menu item, a request is sent to the region to rebake the navmesh for the current region. Rebaking a region may be a time intensive process. After the rebaking is complete, the pathfinding icon in the navigation bar will vanish.
When right-clicking on an object in-world, pathfinding-specific menu options may be included in the pop-up context menu.
If the user right-clicks on a linkset object in-world, a menu option "Show in linksets" will allow the user to open the Pathfinding Linksets floater with the current object selected.
If the user right-clicks on a pathfinding character object in-world, a menu option "Show in characters" will allow the user to open the Pathfinding Characters floater with the current object selected.
Additional field on the Build floater
The Build floater has also been updated with an additional field indicating the pathfinding attributes of the current object.
The following image is a screenshot of the Build floater with a character object selected.
The following image is a screenshot of the Build floater with an object that affects navmesh selected. This object could be a walkable, static obstacle, material volume, or exclusion volume.
Warning: For linksets that do affect the navmesh, it will be impossible to modify the object across the region boundary. The user and the object affecting a navmesh must be in the same region to enable modification of the object. This will be indicated on the General tab of the Build floater as illustrated in the following screenshot. |
Additional field on the Object Profile floater
Similar to the afore-described Build floater, the Object Profile floater has also been updated with an additional field indicating the pathfinding attributes of the current object.
The following image is a screenshot of the Object Profile floater with an affects navmesh object selected.
Additional simulator metrics on the Statistics floater
For advanced users, additional simulator metrics have been added to the Statistics floater. The Statistics floater, available from the main menu Advanced > Performance Tools > Statistics Bar, has the following 3 additional fields reporting statistics from the simulator regarding pathfinding activity:
- AI Step Time - The average time spent during each frame computing character AI events.
- Skipped Silhouette Steps - The number of steps that are skipped per second in computing the influence of objects of type Movable Obstacles on the navmesh. A high value here means that objects on the region are marked as Movable Obstacles and could be contributing to improper pathfinding behavior on the region. To lower this value, set all objects that do not move to either type Walkable or Static Obstacle, and optimize any Movable Obstacle shapes to meet the Good Building Practices Guide.
- Characters Updated - The average percentage of characters updated during each frame. A low value here means that character AI computations are taking too long during each frame, and thus some character updates are skipped during subsequent frames. This could be contributing to improper pathfinding behavior on the region. To increase this value, decrease the number of characters on the region, and optimize any Movable Obstacle shapes to meet the Good Building Practices Guide. Note that the Pathfinding Characters floater (described below) may also be used to determine which characters on the region are contributing the most to the region's CPU time.
Pathfinding Floaters
These three pathfinding floaters may all be accessed through the Build->Pathfinding menu in the Project Viewer - Pathfinding.
Pathfinding Linksets Floater
Overview
The intent of the Pathfinding Linksets floater is to give advanced users and builders the ability to customize an area to achieve interesting effects with pathfinding-enabled characters. It can be initiated using the Build->Pathfinding->LinkSets options in the viewer menu.
The floater displays information for all linksets within the current region for which the user has the ability to alter. The table reports useful information including
- Linkset Name
- Description
- Owner
- Whether the object is Scripted
- Land Impact
- Distance from the resident's avatar
- Linkset Use
- Potential values
- Walkable
- Static Obstacle
- Movable Obstacle
- Material Volume
- Exclusion Volume
- Movable Phantom
- Potential values
- Walkability Coefficients
- Character Type A (example use: humanoid)
- Character Type B (example use: creature)
- Character Type C (example use: mechanical)
- Character Type D (example use: other)
Additionally, selecting any linksets within the floater will also select the object(s) within the Viewer.
Controls
Filter by:
Filter by Name | Enter text by which to filter the linkset list based on Name attribute. |
Filter by Description | Enter text by which to filter the linkset based on the Description attribute. |
Filter by linkset use... | Click to display only the linksets that match selected use. |
Apply | Click to apply the filters to the linkset list. |
Clear | Click to clear the filters and return the linkset list back to the original un-filtered contents. |
Refresh list | Click to refresh the linkset list from the server. Use after you add or delete a linkset inworld. |
Select all | Click to select all linksets in the list. |
Select none | Click to deselect all selected linksets in the list. |
Show Beacon | Select to display a beacon indicating the inworld location of each selected linkset. Use to locate hard-to-find or invisible linksets in the region. |
Take | Click to take the selected linkset(s) into your inventory. |
Take Copy | Click to take a copy of the selected linkset(s) into your inventory. |
Teleport Me To It | Teleports you to the selected linkset. Useful to find faraway linksets. Note this button is only enabled when you have selected one linkset. |
Return | Click to returns the selected linkset(s) to the owner's inventory. |
Delete | Click to delete the selected linkset(s) from the region. |
Choose Linkset Use | Change the linkset use attribute of the selected linkset(s). |
Walkability Coefficients | Enter individual walkability coefficients for each character type (A, B, C, D).
Walkability coefficients range from 0% to 100% to determine the influence the effect the linkset has on a character's speed while the character is traversing across the linkset object. For example, a linkset with Walkability Coefficient of 50% for character type A will cause characters of type A to reduce their speed by half while the character is traversing the object. |
Apply Changes | Click to apply changes to the selected linkset(s) use type and/or walkability coefficients. |
Notes
- For linksets with use fields marked as "[restricted]", only certain linkset use modes are available. This restriction is the result of the object not having modifiable permission enabled for the user.
- For linksets with use fields marked as "[concave]", the linkset use modes for Material Volume and Exclusion Volume are not available. This restriction is the result of the shape object not being convex. All pathfinding volumes must be convex.
- The "[Terrain]" linkset is available to be viewed and edited by the estate managers only. Additionally, while the walkability coefficients for the "[Terrain]" linkset are modifiable by estate managers, the Linkset Use field of "[Terrain]" linkset is not modifiable by anyone and will always be "Walkable".
Example use
The advanced users and builders will use the Pathfinding Linksets floater to customize areas to create interesting effects for pathfinding-enabled characters.
For instance, imagine the scenario of a builder constructing a single room in a pathfinding-enabled house. For the single room, the builder would use the following types as follows:
Linkset Use | Description |
---|---|
Walkable | The floor linkset would be set to be Walkable to allow characters to move across the floor. |
Static Obstacle | A desk linkset in the room would be set to be Static Obstacle to block characters from walking through or across the object.
NOTE Any object that should block character movement and that does not move should be marked as Static Obstacle to improve performance of pathfinding characters. |
Movable Obstacle | A door linkset in the room would be set to be Movable Obstacle. This will still block characters but, in contrast to Static Obstacles, Movable Obstacles will allow the linkset itself to move. In the case of the door, this will allow the door to open and close, but will still prevent characters from walking through the door. |
Material Volume | Material Volumes are phantom objects that can be used to affect the walkability coefficients of intersecting objects. Imagine that the builder applied a texture to the floor. Also, imagine that the floor texture includes small throw rug in the middle of the room. (The builder did not want to create a separate object for the rug, so is using a texture on the floor to give the appearance of a rug). The builder can then create a Material Volume object intersecting the floor at the location of the rug. Then, by setting a lower walkability coefficient for the Material Volume, the builder will create the affect of slowing down characters as the characters traverse across the painted rug area. |
Exclusion Volume | Exclusion Volumes are phantom objects that can be used to create areas where characters are prevented from moving. For instance, the builder can use an Exclusion Volume to create a section of the room where avatars would be able to move, but characters would be blocked from following. |
Movable Phantom | Movable Phantoms are phantom objects that have no affect on pathfinding-enabled characters. |
In addition to linkset use attributes, builders can achieve additional effects by modifying the walkability coefficients for linksets. The walkability coefficients are values, ranging from 0% to 100%, that affect a characters speed. A walkability coefficient of 50% will reduce a character's speed by half while the character is traversing across the linkset.
Pathfinding Characters Floater
Overview
The intent of Pathfinding Characters floater is primarily for users to locate characters moving throughout a region and to identify the CPU cost of characters affecting the performance of a region. It can be initiated using the Build->Pathfinding->Characters options in the viewer menu.
The floater displays information for all characters within the current region for which the user has the ability to manipulate. The table reports useful information including
- Character Name
- Description
- Owner
- CPU Time
- Altitude
Controls
Refresh List | Click to refresh the character list from the server. Typically used after a character is added or deleted in-world. |
Select All | Click to select all characters in the list. |
Select None | Click to deselect all selected characters in the list. |
Show Beacon | Select to display a beacon indicating the in-world location of each selected character. Use this option to locate hard-to-find or invisible characters in the region. |
Show Physics Capsule | Select to display the physics capsule representation of the currently selected character. Use this option to illustrate how the pathfinding physics engine sees the character shape for collisions. Note: this checkbox is only enabled when you select one character. |
Take | Click to take the selected character(s) into the user's inventory. |
Take Copy | Click to take a copy of the selected character(s) into the user's inventory. |
Teleport Me To It | Click to teleport to the selected character. Use this function to rapidly find faraway characters. Note: this button is only enabled when you select one character. |
Return | Click to return the selected character(s) to the owner's inventory. |
Delete | Click to delete the selected character(s) from the region. |
Example use
- If a region owner has created a pathfinding-enabled character but is unable to find the character within the region, the Characters floater can be used to locate and select the character.
- Additionally, the Pathfinding Characters floater reports the CPU time cost for each character within the region. This functionality can be used by advanced users to identify which characters are impacting performance the most.
Pathfinding View/Test Floater
Overview
The intent of the Pathfinding View/Test floater is for advanced users who are building pathfinding-enabled objects and characters. It can be initiated using the Build->Pathfinding->View/Test options in the viewer menu.
This floater consists of 3 basic areas.
- Status area (illustrating both the Viewer and Simulator status of the region's navmesh)
- View tab Controls
- Test Path tab Controls
The following image is a screenshot of the Pathfinding View/Test floater with the navmesh displayed.
The following image is a screenshot of the Pathfinding View/Test floater with the pathfinding object types displayed.
The following image is a screenshot of the Pathfinding View/Test floater with a test path displayed.
Controls
Viewer Status | Reports the status of the pathfinding navmesh including the download process of retrieving the navmesh data from the simulator. |
Simulator Status | Reports the status of the region's navmesh on the simulator including when the navmesh has pending changes, is building, or is up-to-date. |
View tab
Show
World | Select to display the normal world view of the region's objects. |
Movables Only | Select to display only the region's objects that are not marked as affecting the navmesh (Walkable, Static Obstacle, Material Volume, or Exclusion Volume). This is useful to determine which objects on the region are still movable and thus contributing to increase pathfinding time on the simulator. Note: this checkbox is only enabled when World is also selected. |
Navmesh | Toggles the display of the navmesh within the Viewer. |
Show Walkability Map | If the navmesh is displayed, the drop-down enables you to view the navmesh as a heatmap. This mode enables you to view the walkability values baked into the navmesh in the style of a heatmap illustrating the respective values across the navmesh. |
Walkables | Select to display the walkables used when the navmesh was generated. Use this option to visualize how objects of type walkable affected the navmesh generation. |
Material Volumes | Select to display of material volumes used when the navmesh was generated. Use this option to visualize how objects of type material volume affected the navmesh generation. |
Static Obstacles | Select to display static obstacles used when the navmesh was generated. Use this option to visualize how objects of type static obstacle affected the navmesh generation. |
Exclusion Volumes | Select to display exclusion volumes used when the navmesh was generated. Use this option to visualize how objects of type exclusion volume affected the navmesh generation. |
Water Plane | Select to display a simple plane representation of the water. Use this option when the World is hidden to visualize where the water-line is in the world. |
With X-ray Vision | Select to alter the rendering into x-ray mode allowing for partial visibility through other objects. Use this option to get a better visualization of the world in complex situations. |
Test tab
To specify the starting point of the test character path, hold down the <CTRL> key and click the left mouse button in the Viewer window.
To specify the ending point of the test character path, hold down the <SHIFT> key and click the left mouse button in the Viewer window.
Character Width | Use the slider to specify the width of the test character, ranging from 0.1 meter to 2 meters. |
Character Type | Specify the character type of the test character. |
Clear Path | Click to clear a path generated and displayed in the Viewer. |
Example Use
- The advanced user will use the Visualization controls to visualize how the navmesh and related permanent objects have been generated. By seeing this visualization of how the physics engine interprets the navigation information, the advanced user can understand how to better customize the pathfinding-enabled objects to obtain the desired behaviors of characters.
- The advanced user will use the Test Tab to visualize how a test character would choose the path between selected start and end points.
Known Issues
JIRA | Summary | Hardware | Fixed in Version |
---|---|---|---|
MAINT-1291 | Enable Debug GL crashes the viewer to the desktop | Mac Pro running 10.7.4 with AMD Radeon HD5770 iMac running Mac OS X Lion 10.7.4 (11E53) with AMD Radeon HD 6770M (512 MB) PC Clone running XP Pro with GeForce2 Ultra |
|
MAINT-1745 | Crash in the viewer relating to LLLoginInstance and constructAuthParams | ||
MAINT-2071 | Underwater 'Walkables' shapes are reflected about the water plane | ||
MAINT-2072 | navmesh being drawn over worn flexi prims and under avatar | ||
MAINT-2073 | Physics capsule rendering of character shapes is broken after zooming | ||
MAINT-2074 | Configuration with ATI Radeon 7500 can launch Viewer, serious GFx issues | AMD Athlon64 3000+ with ATI Radeon 7500 video card | |
MAINT-2075 VWR-29500 |
Shadows not operational under Second Life Beta 3.4.0.262596 | Mac OS X 10.7.4 with ATI Radeon X1600 OpenGL Engine video card | |
MAINT-2076 | The navmesh starts blinking on empty regions while 'Movables only' and 'Navmesh' checkboxes are checked in View/test floater | ||
MAINT-2093 | Navmesh objects disappear in 'Movables only' view while user turning around | ||
MAINT-2094 | [BetaBreakers] - Sony VAIO PCG-71211 laptop displays black environment | Sony VAIO PCG-71211 laptop with AMD Radeon HD5650M Mobile graphics |