<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dan+Linden</id>
	<title>Second Life Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dan+Linden"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/wiki/Special:Contributions/Dan_Linden"/>
	<updated>2026-06-16T09:40:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Invisiprim&amp;diff=1218038</id>
		<title>Invisiprim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Invisiprim&amp;diff=1218038"/>
		<updated>2025-03-10T17:06:33Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Glossary=*|Object=*}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|width=100%|Starting in SL 7.1.12, Invisiprim objects will now hide only water. The other features of Invisiprims as described on this page are obsolete. See [[Water_Exclusion_Surface]] for more details.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The new alpha mask feature of [[Viewer 2 Help|Viewer 2.0]] has replaced the use of invisiprims to hide parts of the avatar. See [[Invisiprim#Criticism|Criticism]] below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Avatar_behind_invisiprim.jpg|thumb|right|150px|Avatar behind an invisiprim]]&lt;br /&gt;
An &#039;&#039;&#039;Invisiprim&#039;&#039;&#039; is a [[prim]] with a special [[texture]]. The texture appears transparent and has the effect to hide all items with an alpha layer which are being seen through the object with the invisitexture. This includes water, clouds, particles and any part of the default avatar (including clothes, but not attachments unless they have alpha textures). Prims with an invisitexture are &#039;&#039;not&#039;&#039; highlighted through the &#039;&#039;Highlight Transparent&#039;&#039; feature of the viewer (located in the &#039;&#039;View&#039;&#039; menu). &lt;br /&gt;
&lt;br /&gt;
Invisiprims are often used by creators of [[furry]] or other non-human avatars, to hide parts of the human default avatar.&lt;br /&gt;
&lt;br /&gt;
There are two invisi-textures, which can only be set using a script (see [[llSetTexture]] or the [[Invisiprim#Example Script|example script]] below). Their [[key|keys]] are &amp;quot;38b86f85-2575-52a9-a531-23108d8da837&amp;quot; and &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;. Either texture can be used; they function identically.&lt;br /&gt;
&lt;br /&gt;
== How invisiprims work ==&lt;br /&gt;
When a viewer sees that the texture key of a prim&#039;s face is set to one of the two texture keys above, instead of drawing the actual texture it renders that face of the prim as though it had a completely transparent texture. Additionally, and most importantly, any part of any [[alpha]] texture that is being seen through the invisiprim will not be rendered. However, alpha textures in front of the invisiprim will still be drawn.&lt;br /&gt;
&lt;br /&gt;
Since the texture on avatar skins are rendered as alpha textures, invisiprims can be used to make any body parts they cover invisible. Water is also an alpha texture, so invisiprims can be used to &amp;quot;punch holes&amp;quot; in the water, which could be used for example to create depressions in terrain that descend below sea level but do not appear to contain water.&lt;br /&gt;
&lt;br /&gt;
Other objects with alpha textures are all particles, including clouds (but not [[Windlight]] clouds, which are shaders not particles),  and any normally opaque texture with a non-opaque transparency set either in the editor or by the [[llSetAlpha]] call. All of these will disappear behind an invisiprim.&lt;br /&gt;
&lt;br /&gt;
Invisiprims are affected by the shiny, bumpmapping and transparency settings. Setting an invisiprim to be shiny will make it appear as a semi-transparent, shiny prim. The invisiprim becomes more opaque as shininess is increased, however it still hides alpha textures seen through it. Setting bumpmapping will also reveal the prim as the bumpmap is overlayed on the transparent surface. Again, it appears semi-transparent and continues to hide alpha textures.&lt;br /&gt;
&lt;br /&gt;
Setting the textures of an invisiprim to anything other than opaque will cause the invisitexture to lose its special properties. Instead, the actual texture is revealed. (This is either a grey-to-transparent gradient, or a sort of cloudy white shape on a transparent background, depending which key is used. These textures also appear in the texture preview window.)&lt;br /&gt;
&lt;br /&gt;
== Why invisiprims won&#039;t work with deferred rendering ==&lt;br /&gt;
Invisiprims work by rendering to the depth buffer (but not the color buffer) before avatars but after prims.  With deferred rendering, the depth information is used for lighting, so any invisiprim would change the position of prims behind it for lighting (it just looks broken).  &lt;br /&gt;
&lt;br /&gt;
Also, all fullbright objects are rendered after avatars with deferred rendering, so invisiprims would also occlude fullbright objects.&lt;br /&gt;
&lt;br /&gt;
== Criticism ==&lt;br /&gt;
As noted above, invisiprims are primarily used on avatars to hide parts of the avatar [[mesh]]. However, due to the nature of its effects the texture not only hides the human bodyparts, but also any 32-bit textured parts of the surrounding environment that happen to be seen through it, creating an unwanted &amp;quot;x-ray effect&amp;quot;. Mostly due to this effect, the ability to add [[alpha mask|alpha masks]] to the default avatar was requested in {{Jira|VWR-812}}, to replace invisiprims on avatars. A design proposal for this feature can be viewed [[User:Brent Linden/VWR-812 Design Proposal|here]]. As a result, alpha masks have been implemented and are available in Viewer 2.0.&lt;br /&gt;
&lt;br /&gt;
== Example Script ==&lt;br /&gt;
Below is some simple [[LSL]] code for making an invisiprim. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an invisiprim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an invisiprim.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an invisiprim.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the invisiprim to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the invisiprim, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an invisiprim. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // invisiprim&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Invisiprim&amp;diff=1218037</id>
		<title>Invisiprim</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Invisiprim&amp;diff=1218037"/>
		<updated>2025-03-10T17:05:42Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Glossary=*|Object=*}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{KBcaution|width=100%|Starting in SL 7.1.12, Invisiprim objects will now hide only water. See [[Water_Exclusion_Surface]] for more details. The other features of Invisiprims as described on this page are obsolete.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: The new alpha mask feature of [[Viewer 2 Help|Viewer 2.0]] has replaced the use of invisiprims to hide parts of the avatar. See [[Invisiprim#Criticism|Criticism]] below.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Avatar_behind_invisiprim.jpg|thumb|right|150px|Avatar behind an invisiprim]]&lt;br /&gt;
An &#039;&#039;&#039;Invisiprim&#039;&#039;&#039; is a [[prim]] with a special [[texture]]. The texture appears transparent and has the effect to hide all items with an alpha layer which are being seen through the object with the invisitexture. This includes water, clouds, particles and any part of the default avatar (including clothes, but not attachments unless they have alpha textures). Prims with an invisitexture are &#039;&#039;not&#039;&#039; highlighted through the &#039;&#039;Highlight Transparent&#039;&#039; feature of the viewer (located in the &#039;&#039;View&#039;&#039; menu). &lt;br /&gt;
&lt;br /&gt;
Invisiprims are often used by creators of [[furry]] or other non-human avatars, to hide parts of the human default avatar.&lt;br /&gt;
&lt;br /&gt;
There are two invisi-textures, which can only be set using a script (see [[llSetTexture]] or the [[Invisiprim#Example Script|example script]] below). Their [[key|keys]] are &amp;quot;38b86f85-2575-52a9-a531-23108d8da837&amp;quot; and &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;. Either texture can be used; they function identically.&lt;br /&gt;
&lt;br /&gt;
== How invisiprims work ==&lt;br /&gt;
When a viewer sees that the texture key of a prim&#039;s face is set to one of the two texture keys above, instead of drawing the actual texture it renders that face of the prim as though it had a completely transparent texture. Additionally, and most importantly, any part of any [[alpha]] texture that is being seen through the invisiprim will not be rendered. However, alpha textures in front of the invisiprim will still be drawn.&lt;br /&gt;
&lt;br /&gt;
Since the texture on avatar skins are rendered as alpha textures, invisiprims can be used to make any body parts they cover invisible. Water is also an alpha texture, so invisiprims can be used to &amp;quot;punch holes&amp;quot; in the water, which could be used for example to create depressions in terrain that descend below sea level but do not appear to contain water.&lt;br /&gt;
&lt;br /&gt;
Other objects with alpha textures are all particles, including clouds (but not [[Windlight]] clouds, which are shaders not particles),  and any normally opaque texture with a non-opaque transparency set either in the editor or by the [[llSetAlpha]] call. All of these will disappear behind an invisiprim.&lt;br /&gt;
&lt;br /&gt;
Invisiprims are affected by the shiny, bumpmapping and transparency settings. Setting an invisiprim to be shiny will make it appear as a semi-transparent, shiny prim. The invisiprim becomes more opaque as shininess is increased, however it still hides alpha textures seen through it. Setting bumpmapping will also reveal the prim as the bumpmap is overlayed on the transparent surface. Again, it appears semi-transparent and continues to hide alpha textures.&lt;br /&gt;
&lt;br /&gt;
Setting the textures of an invisiprim to anything other than opaque will cause the invisitexture to lose its special properties. Instead, the actual texture is revealed. (This is either a grey-to-transparent gradient, or a sort of cloudy white shape on a transparent background, depending which key is used. These textures also appear in the texture preview window.)&lt;br /&gt;
&lt;br /&gt;
== Why invisiprims won&#039;t work with deferred rendering ==&lt;br /&gt;
Invisiprims work by rendering to the depth buffer (but not the color buffer) before avatars but after prims.  With deferred rendering, the depth information is used for lighting, so any invisiprim would change the position of prims behind it for lighting (it just looks broken).  &lt;br /&gt;
&lt;br /&gt;
Also, all fullbright objects are rendered after avatars with deferred rendering, so invisiprims would also occlude fullbright objects.&lt;br /&gt;
&lt;br /&gt;
== Criticism ==&lt;br /&gt;
As noted above, invisiprims are primarily used on avatars to hide parts of the avatar [[mesh]]. However, due to the nature of its effects the texture not only hides the human bodyparts, but also any 32-bit textured parts of the surrounding environment that happen to be seen through it, creating an unwanted &amp;quot;x-ray effect&amp;quot;. Mostly due to this effect, the ability to add [[alpha mask|alpha masks]] to the default avatar was requested in {{Jira|VWR-812}}, to replace invisiprims on avatars. A design proposal for this feature can be viewed [[User:Brent Linden/VWR-812 Design Proposal|here]]. As a result, alpha masks have been implemented and are available in Viewer 2.0.&lt;br /&gt;
&lt;br /&gt;
== Example Script ==&lt;br /&gt;
Below is some simple [[LSL]] code for making an invisiprim. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an invisiprim.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an invisiprim.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an invisiprim.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the invisiprim to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the invisiprim, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an invisiprim. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // invisiprim&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218034</id>
		<title>Water Exclusion Surface</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218034"/>
		<updated>2025-03-06T17:04:47Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
With the release of the 7.1.12 Second Life Viewer, a new Water Exclusion Surface feature has been introduced. This feature enables the creation of a Water Exclusion Surface object, which renders both itself and the water surface within or behind it transparent when viewed from above. This is useful for hiding the water inside a boat when the inside hull of the boat is below the waterline.&lt;br /&gt;
&lt;br /&gt;
When viewed from below, the Water Exclusion Surface object removes any water refraction effects that would typically be visible. However, it does not hide the water surface itself. &lt;br /&gt;
&lt;br /&gt;
Usage notes: &lt;br /&gt;
* A Water Exclusion Surface object that has a PBR material applied will not hide water.&lt;br /&gt;
* A Water Exclusion Surface object that is worn as an attachment will not hide water.&lt;br /&gt;
* A Water Exclusion Surface object made from a rigged mesh will not hide water.&lt;br /&gt;
&lt;br /&gt;
== Creating a water exclusion surface object ==&lt;br /&gt;
&lt;br /&gt;
Below is some simple [[LSL]] code for making an water exclusion surface. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an water exclusion surface object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an water exclusion surface.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an water exclusion surface.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the water exclusion surface to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the water exclusion surface, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an water exclusion surface. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // water exclusion surface&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trivia: This is the same basic script as the old [[Invisiprim]]. Any existing invisiprims will now work as water exclusion surface objects.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218033</id>
		<title>Water Exclusion Surface</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218033"/>
		<updated>2025-03-06T03:42:51Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
With the release of the 7.1.12 Second Life Viewer, a new Water Exclusion Surface feature has been introduced. This feature enables the creation of a Water Exclusion Surface object, which renders both itself and the water surface within or behind it transparent when viewed from above. This is useful for hiding the water inside a boat when the inside hull of the boat is below the waterline.&lt;br /&gt;
&lt;br /&gt;
When viewed from below, the Water Exclusion Surface object removes any water refraction effects that would typically be visible. However, it does not hide the water surface itself. &lt;br /&gt;
&lt;br /&gt;
== Creating a water exclusion surface object ==&lt;br /&gt;
&lt;br /&gt;
Below is some simple [[LSL]] code for making an water exclusion surface. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an water exclusion surface object.&lt;br /&gt;
&lt;br /&gt;
Notes: A Water Exclusion Surface object that has a PBR material applied will not hide water.&lt;br /&gt;
A Water Exclusion Surface object that is worn as an attachment will not hide water.&lt;br /&gt;
A Water Exclusion Surface object made from a rigged mesh will not hide water.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an water exclusion surface.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an water exclusion surface.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the water exclusion surface to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the water exclusion surface, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an water exclusion surface. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // water exclusion surface&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trivia: This is the same basic script as the old [[Invisiprim]]. Any existing invisiprims will now work as water exclusion surface objects.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218032</id>
		<title>Water Exclusion Surface</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218032"/>
		<updated>2025-03-06T03:31:11Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
With the release of the 7.1.12 Second Life Viewer, a new Water Exclusion Surface feature has been introduced. This feature enables the creation of a Water Exclusion Surface object, which renders both itself and the water surface within or behind it transparent when viewed from above. This is useful for hiding the water inside a boat when the inside hull of the boat is below the waterline.&lt;br /&gt;
&lt;br /&gt;
When viewed from below, the Water Exclusion Surface object removes any water refraction effects that would typically be visible. However, it does not hide the water surface itself. &lt;br /&gt;
&lt;br /&gt;
== Creating a water exclusion surface object ==&lt;br /&gt;
&lt;br /&gt;
Below is some simple [[LSL]] code for making an water exclusion surface. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an water exclusion surface object.&lt;br /&gt;
&lt;br /&gt;
Note: A Water Exclusion Surface object that has a PBR material applied will not hide water.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an water exclusion surface.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an water exclusion surface.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the water exclusion surface to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the water exclusion surface, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an water exclusion surface. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // water exclusion surface&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trivia: This is the same basic script as the old [[Invisiprim]]. Any existing invisiprims will now work as water exclusion surface objects.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218031</id>
		<title>Water Exclusion Surface</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Water_Exclusion_Surface&amp;diff=1218031"/>
		<updated>2025-03-06T03:18:32Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: Created page with &amp;quot;  With the release of the 7.1.12 Second Life Viewer, a new Water Exclusion Surface feature has been introduced. This feature enables the creation of a Water Exclusion Surface...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
With the release of the 7.1.12 Second Life Viewer, a new Water Exclusion Surface feature has been introduced. This feature enables the creation of a Water Exclusion Surface object, which renders both itself and the water surface within or behind it transparent when viewed from above. This is useful for hiding the water inside a boat when the inside hull of the boat is below the waterline.&lt;br /&gt;
&lt;br /&gt;
When viewed from below, the Water Exclusion Surface object removes any water refraction effects that would typically be visible. However, it does not hide the water surface itself. &lt;br /&gt;
&lt;br /&gt;
== Creating a water exclusion surface object ==&lt;br /&gt;
&lt;br /&gt;
Below is some simple [[LSL]] code for making an water exclusion surface. To use, create a new script in your inventory and paste the code below into it. Then drag the script onto a prim to turn it into an water exclusion surface object.&lt;br /&gt;
&lt;br /&gt;
Note: A Water Exclusion Surface object that has a PBR material applied will not hide water.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Make this prim an water exclusion surface.&lt;br /&gt;
        llSetPrimitiveParams([PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0, PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0]);&lt;br /&gt;
        &lt;br /&gt;
        // Delete ourselves from the prim; we are no longer needed.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For coders who wish to understand how this works, the same code as above is reproduced below, thoroughly commented to show what the code is doing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // Here we explain the whys and wherefores of making an water exclusion surface.&lt;br /&gt;
        &lt;br /&gt;
        // We use an llSetPrimitiveParams call to set a lot of options at once.&lt;br /&gt;
        llSetPrimitiveParams([&lt;br /&gt;
        &lt;br /&gt;
            // Turn off bump mapping and shiny. If either of these options are on,&lt;br /&gt;
            // they will have their usual effects, causing the water exclusion surface to be seen&lt;br /&gt;
            // even though the special effects of hiding alpha textures continues.&lt;br /&gt;
            PRIM_BUMP_SHINY, ALL_SIDES, PRIM_SHINY_NONE, PRIM_BUMP_NONE,&lt;br /&gt;
        &lt;br /&gt;
            // Set the color and alpha to white and full opacity, respectively.&lt;br /&gt;
            // Color has no effect on the water exclusion surface, but the prim must be FULLY opaque,&lt;br /&gt;
            // or the special effect is lost.&lt;br /&gt;
            PRIM_COLOR, ALL_SIDES, &amp;lt;1.0, 1.0, 1.0&amp;gt;, 1.0,&lt;br /&gt;
        &lt;br /&gt;
            // For completeness we set mapping to default, even though it has no effect.&lt;br /&gt;
            PRIM_TEXGEN, ALL_SIDES, PRIM_TEXGEN_DEFAULT,&lt;br /&gt;
        &lt;br /&gt;
            // Now we set the actual texture, which makes this an water exclusion surface. We set it on&lt;br /&gt;
            // all sides, but there is nothing stopping you setting it only on certain faces.&lt;br /&gt;
            // We also set repeat, offset and rotation to zero.&lt;br /&gt;
            PRIM_TEXTURE, ALL_SIDES, &amp;quot;e97cf410-8e61-7005-ec06-629eba4cd1fb&amp;quot;, ZERO_VECTOR, ZERO_VECTOR, 0.0&lt;br /&gt;
        &lt;br /&gt;
            ]);&lt;br /&gt;
&lt;br /&gt;
        // Now remove this script from the prim to save on server resources. The script is only&lt;br /&gt;
        // required in order to set the texture; it does not need to stay in the prim for the&lt;br /&gt;
        // water exclusion surface&#039;s special effects to continue.&lt;br /&gt;
        llRemoveInventory(llGetScriptName());&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Trivia: This is the same basic script as the old [[Invisiprim]]. Any existing invisiprims will now work as water exclusion surface objects.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1217535</id>
		<title>Bug Island Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1217535"/>
		<updated>2024-10-15T21:44:56Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Scripts]]&lt;br /&gt;
-In progress-&lt;br /&gt;
&lt;br /&gt;
=== Bump maps ===&lt;br /&gt;
====Bump maps look correct====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid&lt;br /&gt;
* Set Preferences &amp;gt; Graphics Quality to Mid&lt;br /&gt;
* Verify the bump map looks the same as this picture.&lt;br /&gt;
[[File:Bump_map_spheres.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Custom bump maps load for objects at a distance====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.&lt;br /&gt;
* Set Preferences &amp;gt; Graphics to Mid.&lt;br /&gt;
* Clear the cache (Preferences &amp;gt; Advanced&amp;gt; Clear Cache) and relog.&lt;br /&gt;
* Wait for the textures to load on the bumpmapped spheres.&lt;br /&gt;
* Fly to the spheres&lt;br /&gt;
* Verify the bump map looks the same as the picture above.&lt;br /&gt;
&lt;br /&gt;
====Brightness vs. Darkness bump maps====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27&lt;br /&gt;
* Set Set Preferences &amp;gt; Graphics Quality to High&lt;br /&gt;
* Verify the wood grain appears indented of the left cube and embossed on the right cube.&lt;br /&gt;
&lt;br /&gt;
=== Texture animation ===&lt;br /&gt;
&lt;br /&gt;
1.  http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27&lt;br /&gt;
A video should play on the screen in front of you shortly after you arrive. Verify the animations are cycling between the same numbers as the video. You will need to alt-zoom on the boxes to load the textures clearly.&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27&lt;br /&gt;
Verify the textures are rotating and your viewer does not experience a drop in framerate here.&lt;br /&gt;
&lt;br /&gt;
=== Target Omega ===&lt;br /&gt;
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov&lt;br /&gt;
&lt;br /&gt;
=== Dynamic texture scaling ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 1, 2, 3, 4, and 5 textures. Verify the textures scale with the objects as the objects grow taller and shorter.&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 6 texture. These objects are using Planar texture mapping. Verify the texture changes with the scale of the object, then a moment later rescales to match the object which is not scaling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prim LOD and bins ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
&lt;br /&gt;
* Go to some region other than Bug Island for at least 10 seconds.&lt;br /&gt;
* Teleport to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.&lt;br /&gt;
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
* Verify the objects from the 4 left rows appear.&lt;br /&gt;
* Verify the farthest 4 small objects in the right row do not appear.&lt;br /&gt;
&lt;br /&gt;
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Texture and color matching ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27&lt;br /&gt;
&lt;br /&gt;
* The wall of objects is made of an object with a white texture and some color next to an object with a texture of the same color and set to a white color. These should match.&lt;br /&gt;
* Verify the wall looks the same as the screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Transparency interaction ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27&lt;br /&gt;
&lt;br /&gt;
* Right-click the semitransparent objects. &lt;br /&gt;
* Verify objects with semitransparent textures, even 100% transparent, will become selected.&lt;br /&gt;
* Verify objects with face transparency (set in the texture tab) of 99% or less will become selected.&lt;br /&gt;
* Verify objects with face transparency (set in the texture tab) of 100% will allow the right-click to pass through to the object behind it.&lt;br /&gt;
&lt;br /&gt;
=== HUD (Heads Up Display) effects ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27&lt;br /&gt;
&lt;br /&gt;
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.&lt;br /&gt;
&lt;br /&gt;
Verify the following:&lt;br /&gt;
* The object does Not emit particles while attached to your HUD.&lt;br /&gt;
* The entire object is spinning from left to right.&lt;br /&gt;
* The yellow is slightly transparent.&lt;br /&gt;
* The yellow cube has one red face and 3 faces with red line.&lt;br /&gt;
* The yellow cube has 2 faces with a red &amp;quot;1&amp;quot; texture.&lt;br /&gt;
* The &amp;quot;1&amp;quot; texture on the face nearest to the red cube is animating - sliding from left to right.&lt;br /&gt;
* The red cube is shiny&lt;br /&gt;
* The red cube is spinning on an axis different than the yellow cube&lt;br /&gt;
* The red cube has bump maps&lt;br /&gt;
* The red cube has an &amp;quot;8&amp;quot; texture on one face and the other faces are the default wood texture.&lt;br /&gt;
* The black hover text is visible and is above the blue cube&lt;br /&gt;
* The blue cube is twisted&lt;br /&gt;
* The blue cube is flexible (this may be hard to see)&lt;br /&gt;
* The blue cube is shiny.&lt;br /&gt;
* The blue cube is spinning on an axis different than the yellow cube or red cube.&lt;br /&gt;
&lt;br /&gt;
=== Flexible objects ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27&lt;br /&gt;
* Verify the flexy objects look similar to the following screenshot. Note that the top left object may point in a different direction depending on the wind.&lt;br /&gt;
&lt;br /&gt;
[[File:Flexy1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)&lt;br /&gt;
&lt;br /&gt;
=== Sculpty objects ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. &lt;br /&gt;
* Make sure you Draw Distance (in Preferences &amp;gt; Graphics) is set to at least 100m so you can see the sculpty * objects at http://maps.secondlife.com/secondlife/Bug%20Island/17/100/37.  &lt;br /&gt;
* Clear your SL cache (Preferences &amp;gt; Advanced &amp;gt; Clear Cache) and relog. &lt;br /&gt;
* When the sculpties have loaded, fly to http://maps.secondlife.com/secondlife/Bug%20Island/32/99/27 and verify the sculpties look correct like the following screenshot; the shapes should be correct and not just elongated spheres, the surface textures should be loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27&lt;br /&gt;
* Verify the Scultpy objects look like this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpty1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27&lt;br /&gt;
* Set World &amp;gt; Environment &amp;gt; Midnight&lt;br /&gt;
* Set Preferences &amp;gt; Graphics &amp;gt; Quality &amp;amp; speed to Low (which sets Advanced Graphics Preferences &amp;gt; Max. nearby lights to 8)&lt;br /&gt;
* Detach any attachments that are lights.&lt;br /&gt;
* There are 8 green lights shining on 8 spheres in front of you, and none of the only lights should show.&lt;br /&gt;
* Move back and forth and verify that only 8 lights in the scene appear at any one time.&lt;br /&gt;
&lt;br /&gt;
=== Small texture loading ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27&lt;br /&gt;
&lt;br /&gt;
* Verify these small textures load quickly. &lt;br /&gt;
* Verify these texture appear the same as in the picture below.&lt;br /&gt;
[[File:small_textures.png|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Parcel based media ===&lt;br /&gt;
Some of these tests require QuickTime be installed on your computer.&lt;br /&gt;
&lt;br /&gt;
Type Movie, video/mp4&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie is scaled to fill the face of the box.&lt;br /&gt;
* Go out of the parcel so the movie stops.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie covers only part of the face of the box, and the rest of the face is white.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type Web Content, text/html&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* This will look exactly the same as the previous test.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Default_Private_Region_RAW_Files&amp;diff=1212924</id>
		<title>Default Private Region RAW Files</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Default_Private_Region_RAW_Files&amp;diff=1212924"/>
		<updated>2023-01-05T18:23:01Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article features download locations for the four basic types of Private Region terrain, saved as .raw files. We&#039;re also including a .raw file for flat terrain.&lt;br /&gt;
&lt;br /&gt;
The first four .raw files listed are the basic shapes from which you can choose when you first order your Private Region. Once the region is in your possession it&#039;s terraformable, but you can upload these .raw files to reset your land to its original state. The last .raw file is for perfectly flat land.&lt;br /&gt;
&lt;br /&gt;
{{KBnote| Uploading a .raw file will not change or remove objects on your land.}}&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;border: 1px dashed #7f7c75&amp;quot; width=&amp;quot;600&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[[Image:kbsd_Islandtype1.png]]&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[https://torley.s3.amazonaws.com/kb/Islandtype1.raw Island terrain .raw file type 1 (Ruth&#039;s Retreat)]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[[Image:kbsd_Islandtype2.png]]&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[https://torley.s3.amazonaws.com/kb/Islandtype2.raw Island terrain .raw file type 2 (Hill and Dale)]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[[Image:kbsd_Islandtype3.png]]&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[https://torley.s3.amazonaws.com/kb/Islandtype3.raw Island terrain .raw file type 3 (Loch Lake)]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[[Image:kbsd_Islandtype4.png]]&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[https://torley.s3.amazonaws.com/kb/Islandtype4.raw Island terrain .raw file type 4 (Prima Point)]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[[Image:kbsd_flatgreen.png]]&lt;br /&gt;
| style=&amp;quot;border: 1px dotted #7f7c75&amp;quot; |&lt;br /&gt;
[https://torley.s3.amazonaws.com/kb/flatgreen.raw Flat green RAW file (Plain Plains)]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you open one of these in Photoshop, it may ask you to describe the file. Tell Photoshop the following:&lt;br /&gt;
&lt;br /&gt;
* 256 x 256 pixels&lt;br /&gt;
* 13 channels&lt;br /&gt;
* Interleaved&lt;br /&gt;
* 8 bit depth&lt;br /&gt;
* No header&lt;br /&gt;
[[Category:Land]]&lt;br /&gt;
[[Category:Content creation]]&lt;br /&gt;
[[Category:Land]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_OMEGA&amp;diff=1212746</id>
		<title>PRIM OMEGA</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_OMEGA&amp;diff=1212746"/>
		<updated>2022-11-10T18:36:30Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:omega_const|{{LSL Const|PRIM_OMEGA|integer|18|c=Used to {{GetSet|{{{1|}}}|get the object&#039;s llTargetOmega settings|rotate the object at on the given axis at the given rate|/}} }}}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:caveats|{{#var:caveats}}&lt;br /&gt;
*[[PRIM_OMEGA]] on nonphysical objects, and child prims of physical objects, is only a client side effect; the object or prim will collide as non-moving geometry.&lt;br /&gt;
*[[PRIM_OMEGA]] cannot be used on avatars sitting on the object. It will emit the error message &amp;quot;PRIM_OMEGA disallowed on agent&amp;quot;.&lt;br /&gt;
*If [[PRIM_OMEGA]] does not appear to be working, make sure that that Develop &amp;gt; Network &amp;gt; Velocity Interpolate Objects is enabled on the viewer.}}&lt;br /&gt;
&lt;br /&gt;
{{#vardefine:p_axis_desc|arbitrary axis to rotate the object around}}&lt;br /&gt;
{{#vardefine:p_spinrate_desc|rate of rotation in radians per second}}&lt;br /&gt;
{{#vardefine:p_gain_desc|also modulates the final spinrate and disables the rotation behavior if zero}}&lt;br /&gt;
&lt;br /&gt;
}}&amp;lt;/onlyinclude&amp;gt;{{#if:&lt;br /&gt;
&lt;br /&gt;
}}{{LSL Constant&lt;br /&gt;
|inject-2={{LSL PrimitiveParam Categorize|Prim}}&lt;br /&gt;
|name=PRIM_OMEGA&lt;br /&gt;
|type=integer&lt;br /&gt;
|value=32&lt;br /&gt;
|desc=Used to make the object spin at the specified axis and rate, or retrieve spin settings. See [[llTargetOmega]] for specification.&lt;br /&gt;
|examples=&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;&lt;br /&gt;
// Set this prim rotating&lt;br /&gt;
llTargetOmega(&amp;lt;1.0,3.0,0.5&amp;gt;, TWO_PI, 1.0);&lt;br /&gt;
&lt;br /&gt;
// Read back this prim&#039;s current target omega&lt;br /&gt;
list current_omega = llGetPrimitiveParams([PRIM_OMEGA]); // should be [PRIM_OMEGA, axis, spinrate, gain]&lt;br /&gt;
vector axis = llList2Vector(current_omega, 1); // Should be &amp;lt;1.0,3.0,0.5&amp;gt;&lt;br /&gt;
float spinrate = llList2Float(current_omega, 2); // Should be TWO_PI&lt;br /&gt;
float gain = llList2Float(current_omega, 3); // Should be 1.0&lt;br /&gt;
&lt;br /&gt;
// Set all child prims rotating&lt;br /&gt;
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, &amp;lt;1.0,3.0,0.5&amp;gt;, TWO_PI, 1.0]);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Also, can use llSetPrimitiveParams for the root prim.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;lsl2&amp;quot;&amp;gt;// will need two prims linked together for this script.&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        // make some sort of rotation angle for the omega...&lt;br /&gt;
        vector rotationAngle = &amp;lt;2.3, 5.5, 9.7&amp;gt; * llTan(85); &lt;br /&gt;
        &lt;br /&gt;
        // rotate the main prim slowly using the same rotataion angle, rate, and gain...&lt;br /&gt;
        llSetPrimitiveParams([ PRIM_OMEGA, rotationAngle * 0.3, 1.0, 1.0 ]);&lt;br /&gt;
        &lt;br /&gt;
        // rotate the link satellite prim separately around its own axis &lt;br /&gt;
        // it will rotate also around the main prim because the main prim is rotating.&lt;br /&gt;
        llSetLinkPrimitiveParams(2, [ PRIM_OMEGA, rotationAngle, 1.0, 1.0 ]);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|constants&lt;br /&gt;
|pa={{LSL Constant/List|i_front=[&amp;amp;#32;{{#var:omega_const}},&amp;amp;#32;|i_end=&amp;amp;nbsp;]&lt;br /&gt;
|text=When used with [[llSetPrimitiveParams]] &amp;amp; [[llSetLinkPrimitiveParams]]&lt;br /&gt;
|i1_type=vector|i1_name=axis&lt;br /&gt;
|i2_type=float|i2_name=spinrate&lt;br /&gt;
|i3_type=float|i3_name=gain&lt;br /&gt;
|toc=llSetPrimitiveParams&lt;br /&gt;
}}&lt;br /&gt;
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&amp;amp;nbsp;{{#var:omega_const}}&amp;amp;nbsp;]);|&lt;br /&gt;
|r_front=Returns the [[list]] [&amp;amp;nbsp;|r_end=&amp;amp;nbsp;]&lt;br /&gt;
|text&lt;br /&gt;
|toc=llGetPrimitiveParams&lt;br /&gt;
|r1_type=vector|r1_name=axis&lt;br /&gt;
|r2_type=float|r2_name=spinrate&lt;br /&gt;
|r3_type=float|r3_name=gain&lt;br /&gt;
}}&lt;br /&gt;
|functions=&lt;br /&gt;
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}&lt;br /&gt;
{{LSL DefineRow||[[llTargetOmega]]|}}&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=*Introduced in [[Release Notes/Second Life RC BlueSteel/11#11.06.20.233291|Second Life RC BlueSteel 11.06.20.233291]], June 22, 2011&lt;br /&gt;
*Rolled to main server channel the week of 7/11/2011&lt;br /&gt;
|cat1&lt;br /&gt;
|cat2=Effects&lt;br /&gt;
|cat3=Physics&lt;br /&gt;
|cat4=Rotation&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Puppetry_Development&amp;diff=1211095</id>
		<title>Puppetry Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Puppetry_Development&amp;diff=1211095"/>
		<updated>2022-08-30T18:21:44Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppetry Development&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This article will explain how developers can experiment and code with the new Puppetry feature in Second Life.   It is intended for programmers who have a familiarity with Python or C++ and a desire to make their avatar come alive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Second Life Open Source Viewer&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puppetry requires an experimental Second Life Viewer.  A pre-built version is available for download from the [https://releasenotes.secondlife.com/viewer.html alternative downloads page].  If you&#039;re only developing Puppetry plug-ins there is no need to build the Viewer from scratch.  However, if you want to make changes to messaging, avatar animation system, or the [https://en.wikipedia.org/wiki/Inverse_kinematics Inverse Kinematics] (IK) algorithm, then you will need to download and build the [https://bitbucket.org/lindenlab/viewer/src/master/ open-source Viewer code].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Puppetry feature detection&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid compatibility problems when deploying experimental features Second Life uses a system called &amp;quot;capabilities&amp;quot;.  Whenever a Second Life Viewer first connects to a Region it submits a list of features it knows how to use and the Region will respond with an URL (capability) for each of those features it supports.  Viewers can GET data and status information from the server, or POST to these capabilities to configure and update the server.  [https://wiki.secondlife.com/wiki/Puppetry_Network_Control This page] has more information about how the Puppetry capability works. Capabilities are also often referred to as &amp;quot;caps&amp;quot; in some documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;LEAP Plug-ins&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puppetry expects data from a LEAP plug-in that has been launched by the Viewer as a side process. LEAP stands for LLSD Event API Plug-in and is a technology that has been embedded in the Second Life Viewer for a while but has, until now, only been used for internal testing and automated updates.  A LEAP plug-in can be an executable or Python script: the only other requirement is that it read and write properly formatted LEAP data to its stdin and stdout pipes, however only Python utils have been written so far, and all of the existing Puppetry plug-ins are Python scripts.&lt;br /&gt;
&lt;br /&gt;
Clone the [https://bitbucket.org/lindenlab/leap leap repository]to your computer.  The Puppetry plug-ins can be found in leap/python/puppetry/examples/ and leap/python/puppetry/webcam/.&lt;br /&gt;
&lt;br /&gt;
You will need Python version 3.6 or later installed on your computer.  You will also need to install any Python modules a plug-in depends on.  Follow the instructions in the [https://bitbucket.org/lindenlab/leap/src/main/python/puppetry/README.md ReadMe file].   Please read it carefully and ensure you have the requirements met, otherwise Puppetry may not work.&lt;br /&gt;
&lt;br /&gt;
CAUTION: Only run plugins from a source that you trust. Currently there is no safety mechanism to protect against malicious plugins due to this project being in open development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Try it out&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Puppetry is available the following menu item should be enabled:&lt;br /&gt;
&lt;br /&gt;
    Advanced → Puppetry → Launch LEAP plug-in...&lt;br /&gt;
&lt;br /&gt;
Select that menu item and it will open a file picker.  Navigate to where you downloaded the leap repository and find a plug-in to try.  A simple plug-in to try is: leap/python/puppetry/examples/arm_wave.py  which will make your avatar slowly wave one arm.&lt;br /&gt;
&lt;br /&gt;
A more complex plug-in is the leap/python/puppetry/webcam/webcam_puppetry.py  module.   This will start your webcam, and try to recognize your movements and animate your avatar.   It&#039;s a work in progress - at first release, head motion is reasonably good, but we&#039;re not satisfied with arm and hand movement, and have not explored fingers, facial or lips motion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Developing Puppetry Plug-ins&amp;lt;/h2&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
All of the working examples are written in Python and use the [https://bitbucket.org/lindenlab/leap/src/main/python/puppetry/puppetry.py puppetry.py] module API to submit data to the Second Life Viewer.  Data is exchanged between plug-in and Viewer via the plug-in&#039;s stdin and stdout streams.  This means the plug-in must not write any spurious debug text to stdout, else risk corrupting the LEAP data and confusing the Viewer.  To log debug messages during runtime under the Viewer use puppetry.log() and look in the Second Life log file for those messages, alternatively anything written to stderr will be written to the log file.&lt;br /&gt;
&lt;br /&gt;
puppetry.py  depends on the leap.py  util module, which uses [https://pypi.org/project/eventlet/ eventlet] to run multiple co-routines on a single thread.  A consequence of this is:: any Python Puppetry plug-in must be eventlet friendly by calling eventlet.sleep(0) in its main loop.  For best results: follow the pattern used by a working example.&lt;br /&gt;
&lt;br /&gt;
If a plug-in throws an exception and stops running: its callstack information will be written to stderr which always gets echoed to the Second Life log file, so look there for details about what went wrong.  If a Python script is crashing immediately it is sometimes possible to run it from the command line interface (CLI) to see the callstack, however depending on where it is crashing it may be the case that your plug-in will first block in the leap.py  module waiting for the initial LEAP data it expects to receive from the Viewer.  To unblock the leap.py  module is possible to manually paste valid LEAP data to its stdin.  Look in existing example code to find instructions about how to do that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Puppetry data&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Puppetry data stream is a series of events.  Each event is effectively a key:value pair where the key is the joint&#039;s name (as listed in the avatar_skeleton.xml  configuration file) and the value is its intended transform.  The transform can specify position and/or orientation.&lt;br /&gt;
&lt;br /&gt;
The position is always in the root-frame of the avatar skeleton, where the root is the avatar&#039;s pelvis and the distance units are &amp;quot;normalized&amp;quot; such that the furthest end of the hand of the avatar&#039;s longest arm has a reach of 1.0 units when the avatar is in the T-pose: standing upright with arms extended straight out from the sides: a symmetric avatar standing in T-pose has an arm span of 2.0 units in the normalized root-frame.  When the position is received by the Viewer it will be uniformly scaled according to the size of the avatar instance.&lt;br /&gt;
&lt;br /&gt;
The position coordinate frame is &amp;quot;right handed&amp;quot; (e.g. Z equals X cross Y) and the axes are: X=forward, Y=left, Z=up.&lt;br /&gt;
&lt;br /&gt;
The orientation can be specified in the root-frame, or in the joint&#039;s parent-frame, and is always represented as a normalized quaternion (XYZW), although only the imaginary part (XYZ) is packed in the event and the real-part (W) is inferred mathematically when necessary.&lt;br /&gt;
&lt;br /&gt;
An example Puppetry event might look something like this:&lt;br /&gt;
&lt;br /&gt;
 &#039;mWristLeft&#039;:{&#039;pos&#039;:[0.05,0.1665,0.5359]},&#039;rot&#039;:[-0.07608,0.06912,-0.05754]}&lt;br /&gt;
&lt;br /&gt;
In the example above the orientation is specified in the root-frame.  For parent-frame the key would be &#039;local_rot&#039;.&lt;br /&gt;
&lt;br /&gt;
Each Puppetry data event is applied locally as soon as it is received.  It is also given a timestamp and streamed to the Second Life server which relays the data to other nearby Puppetry empowered Viewers.  The remote Viewers receive the Puppetry events, and instead of applying them immediately, put them into a jitter buffer from which the Viewer computes interpolated data and applies those at a different frame rate, but typically faster, than the events were received.  Consequently, if the local animation looks a little choppy the remote view is typically smoother, albeit slightly delayed.  You can view what your own interpolated data looks like enabling the menu option:&lt;br /&gt;
&lt;br /&gt;
Advanced → Puppetry → Use my server data&lt;br /&gt;
&lt;br /&gt;
With this on, you will watch your animations as others in-world see it: sent from the region server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Viewer Code Changes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to experiment with viewer source code, you&#039;ll be working in C++ and will need to download the Viewer source code which is [https://bitbucket.org/lindenlab/viewer available on Bitbucket].   Follow the instructions there to download and build the code.&lt;br /&gt;
&lt;br /&gt;
You will need to switch your source code to the DRTVWR-558  branch.&lt;br /&gt;
&lt;br /&gt;
    git checkout DRTVWR-558&lt;br /&gt;
&lt;br /&gt;
Search the codebase for &amp;quot;puppetry&amp;quot; and you&#039;ll get an idea of where the code is, or for &amp;quot;llik&amp;quot; to find the inverse kinematics implementation.    Remember there are multiple components working together here - the interface to the LEAP Puppetry plug-in, which will send data into the viewer while the viewer can send messages into the plug-in to select options such as which webcam to use..&lt;br /&gt;
&lt;br /&gt;
If you modify this code, you&#039;ll need to re-build the viewer, launch it and then start your Puppetry module to test your changes.&lt;br /&gt;
&lt;br /&gt;
If you plan on modifying code and submit your work back to the project, create your own local branch from this one for your changes.   The normal procedures for [https://wiki.secondlife.com/wiki/Open_Source_Portal Open Source contributions to Second Life] apply.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;The Inverse Kinematics algorithm&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Inverse Kinematics problem&amp;quot; is often encountered in the fields of video games, computer animation, and robotics.  It is the situation where the final position and/or orientation of one or more bones within a hierarchical skeleton are specified or &amp;quot;known&amp;quot; while those of the rest of the system are &amp;quot;unknown&amp;quot;.  The bones with known transforms are called &amp;quot;end-effectors&amp;quot; and their target transforms are called &amp;quot;goals&amp;quot;.  The challenge is to compute transforms for ALL of the bones in the system such that the end-effectors achieve their goals, or approach them as close as possible.&lt;br /&gt;
&lt;br /&gt;
There are several IK algorithms to choose from.  They are all iterative in nature: each time the algorithm is applied the new result gets closer to an acceptable solution.  The iterations are stopped when the end-effectors are &amp;quot;close enough&amp;quot; to their goals, or when the time/compute resource budget is exhausted.  However, achieving the goals is often insufficient criteria for the IK problem.  There are typically an infinite number of solutions but they are not equally valid because some will require joints to bend in unnatural directions. Therefore not only must the end-effectors reach their goals but the joints of the skeleton must be &amp;quot;constrained&amp;quot; to only orient within their limits: the elbow pivots about a fixed local axis within a limited angle range and the forearm is limited in how much it can twist.&lt;br /&gt;
&lt;br /&gt;
Example IK algorithms include: Continuous Cyclic Descent (CCD), Jacobian pseudo-inverse, and [http://www.andreasaristidou.com/publications/papers/FABRIK.pdf Forward And Backward Reaching Inverse Kinematics](P) (FABRIK).  The Second Life Puppetry system uses an implementation of FABRIK with joint constraints.  At the moment the constraint parameters are hard coded in the C++ and are specified only for: spine, arms, and head.   The legs and other bones are currently unconstrained.  The pelvis is immovable: it represents the origin of the root-frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Working Together&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would love to hear from you about any ideas and creations you have with this technology.    There are a lot of possibilities and different ways we can open up Second Life for more fun.   Please join in our conversation with user groups, forum postings and show us what you like.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Puppetry_Development&amp;diff=1211093</id>
		<title>Puppetry Development</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Puppetry_Development&amp;diff=1211093"/>
		<updated>2022-08-30T18:18:17Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Puppetry Development&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Summary&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This article will explain how developers can experiment and code with the new Puppetry feature in Second Life.   It is intended for programmers who have a familiarity with Python or C++ and a desire to make their avatar come alive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Second Life Open Source Viewer&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puppetry requires an experimental Second Life Viewer.  A pre-built version is available for download from the [https://releasenotes.secondlife.com/viewer.html alternative downloads page].  If you&#039;re only developing Puppetry plug-ins there is no need to build the Viewer from scratch.  However, if you want to make changes to messaging, avatar animation system, or the [https://en.wikipedia.org/wiki/Inverse_kinematics Inverse Kinematics] (IK) algorithm, then you will need to download and build the [https://bitbucket.org/lindenlab/viewer/src/master/ open-source Viewer code].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Puppetry feature detection&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To avoid compatibility problems when deploying experimental features Second Life uses a system called &amp;quot;capabilities&amp;quot;.  Whenever a Second Life Viewer first connects to a Region it submits a list of features it knows how to use and the Region will respond with an URL (capability) for each of those features it supports.  Viewers can GET data and status information from the server, or POST to these capabilities to configure and update the server.  [https://wiki.secondlife.com/wiki/Puppetry_Network_Control This page] has more information about how the Puppetry capability works. Capabilities are also often referred to as &amp;quot;caps&amp;quot; in some documentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;LEAP Plug-ins&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puppetry expects data from a LEAP plug-in that has been launched by the Viewer as a side process. LEAP stands for LLSD Event API Plug-in and is a technology that has been embedded in the Second Life Viewer for a while but has, until now, only been used for internal testing and automated updates.  A LEAP plug-in can be an executable or Python script: the only other requirement is that it read and write properly formatted LEAP data to its stdin and stdout pipes, however only Python utils have been written so far, and all of the existing Puppetry plug-ins are Python scripts.&lt;br /&gt;
&lt;br /&gt;
Clone the [https://bitbucket.org/lindenlab/leap leap repository]to your computer.  The Puppetry plug-ins can be found in leap/python/puppetry/examples/ and leap/python/puppetry/webcam/.&lt;br /&gt;
&lt;br /&gt;
You will need Python version 3.6 or later installed on your computer.  You will also need to install any Python modules a plug-in depends on.  Follow the instructions in the [https://bitbucket.org/lindenlab/leap/src/main/python/puppetry/README.md ReadMe file].   Please read it carefully and ensure you have the requirements met, otherwise Puppetry may not work.&lt;br /&gt;
&lt;br /&gt;
CAUTION: Only run plugins from a source that you trust. Currently there is no safety mechanism to protect against malicious plugins due to this project being in open development.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Try it out&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When Puppetry is available the following menu item should be enabled:&lt;br /&gt;
&lt;br /&gt;
    Advanced → Puppetry → Launch LEAP plug-in...&lt;br /&gt;
&lt;br /&gt;
Select that menu item and it will open a file picker.  Navigate to where you downloaded the leap repository and find a plug-in to try.  A simple plug-in to try is: leap/python/puppetry/examples/arm_wave.py  which will make your avatar slowly wave one arm.&lt;br /&gt;
&lt;br /&gt;
A more complex plug-in is the leap/python/puppetry/webcam/webcam_puppetry.py  module.   This will start your webcam, and try to recognize your movements and animate your avatar.   It&#039;s a work in progress - at first release, head motion is reasonably good, but we&#039;re not satisfied with arm and hand movement, and have not explored fingers, facial or lips motion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Developing Puppetry Plug-ins&amp;lt;/h2&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
All of the working examples are written in Python and use the [https://www.google.com/url?q=https://bitbucket.org/lindenlab/leap/src/main/python/puppetry/puppetry.py&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1661829588240027&amp;amp;usg=AOvVaw3BoDaCFTw1OKgjZyHFnmDq puppetry.py] module API to submit data to the Second Life Viewer.  Data is exchanged between plug-in and Viewer via the plug-in&#039;s stdin and stdout streams.  This means the plug-in must not write any spurious debug text to stdout, else risk corrupting the LEAP data and confusing the Viewer.  To log debug messages during runtime under the Viewer use puppetry.log() and look in the Second Life log file for those messages, alternatively anything written to stderr will be written to the log file.&lt;br /&gt;
&lt;br /&gt;
puppetry.py  depends on the leap.py  util module, which uses [https://www.google.com/url?q=https://pypi.org/project/eventlet/&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1661829588241012&amp;amp;usg=AOvVaw0Yun5Ay00PRywAYBXYSBox eventlet] to run multiple co-routines on a single thread.  A consequence of this is:: any Python Puppetry plug-in must be eventlet friendly by calling eventlet.sleep(0) in its main loop.  For best results: follow the pattern used by a working example.&lt;br /&gt;
&lt;br /&gt;
If a plug-in throws an exception and stops running: its callstack information will be written to stderr which always gets echoed to the Second Life log file, so look there for details about what went wrong.  If a Python script is crashing immediately it is sometimes possible to run it from the command line interface (CLI) to see the callstack, however depending on where it is crashing it may be the case that your plug-in will first block in the leap.py  module waiting for the initial LEAP data it expects to receive from the Viewer.  To unblock the leap.py  module is possible to manually paste valid LEAP data to its stdin.  Look in existing example code to find instructions about how to do that.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Puppetry data&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Puppetry data stream is a series of events.  Each event is effectively a key:value pair where the key is the joint&#039;s name (as listed in the avatar_skeleton.xml  configuration file) and the value is its intended transform.  The transform can specify position and/or orientation.&lt;br /&gt;
&lt;br /&gt;
The position is always in the root-frame of the avatar skeleton, where the root is the avatar&#039;s pelvis and the distance units are &amp;quot;normalized&amp;quot; such that the furthest end of the hand of the avatar&#039;s longest arm has a reach of 1.0 units when the avatar is in the T-pose: standing upright with arms extended straight out from the sides: a symmetric avatar standing in T-pose has an arm span of 2.0 units in the normalized root-frame.  When the position is received by the Viewer it will be uniformly scaled according to the size of the avatar instance.&lt;br /&gt;
&lt;br /&gt;
The position coordinate frame is &amp;quot;right handed&amp;quot; (e.g. Z equals X cross Y) and the axes are: X=forward, Y=left, Z=up.&lt;br /&gt;
&lt;br /&gt;
The orientation can be specified in the root-frame, or in the joint&#039;s parent-frame, and is always represented as a normalized quaternion (XYZW), although only the imaginary part (XYZ) is packed in the event and the real-part (W) is inferred mathematically when necessary.&lt;br /&gt;
&lt;br /&gt;
An example Puppetry event might look something like this:&lt;br /&gt;
&lt;br /&gt;
 &#039;mWristLeft&#039;:{&#039;pos&#039;:[0.05,0.1665,0.5359]},&#039;rot&#039;:[-0.07608,0.06912,-0.05754]}&lt;br /&gt;
&lt;br /&gt;
In the example above the orientation is specified in the root-frame.  For parent-frame the key would be &#039;local_rot&#039;.&lt;br /&gt;
&lt;br /&gt;
Each Puppetry data event is applied locally as soon as it is received.  It is also given a timestamp and streamed to the Second Life server which relays the data to other nearby Puppetry empowered Viewers.  The remote Viewers receive the Puppetry events, and instead of applying them immediately, put them into a jitter buffer from which the Viewer computes interpolated data and applies those at a different frame rate, but typically faster, than the events were received.  Consequently, if the local animation looks a little choppy the remote view is typically smoother, albeit slightly delayed.  You can view what your own interpolated data looks like enabling the menu option:&lt;br /&gt;
&lt;br /&gt;
Advanced → Puppetry → Use my server data&lt;br /&gt;
&lt;br /&gt;
With this on, you will watch your animations as others in-world see it: sent from the region server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Viewer Code Changes&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to experiment with viewer source code, you&#039;ll be working in C++ and will need to download the Viewer source code which is [https://www.google.com/url?q=https://bitbucket.org/lindenlab/viewer&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1661829588244562&amp;amp;usg=AOvVaw2dzTEr89Ra3--R4I1CmPjd available on Bitbucket].   Follow the instructions there to download and build the code.&lt;br /&gt;
&lt;br /&gt;
You will need to switch your source code to the DRTVWR-558  branch.&lt;br /&gt;
&lt;br /&gt;
    git checkout DRTVWR-558&lt;br /&gt;
&lt;br /&gt;
Search the codebase for &amp;quot;puppetry&amp;quot; and you&#039;ll get an idea of where the code is, or for &amp;quot;llik&amp;quot; to find the inverse kinematics implementation.    Remember there are multiple components working together here - the interface to the LEAP Puppetry plug-in, which will send data into the viewer while the viewer can send messages into the plug-in to select options such as which webcam to use..&lt;br /&gt;
&lt;br /&gt;
If you modify this code, you&#039;ll need to re-build the viewer, launch it and then start your Puppetry module to test your changes.&lt;br /&gt;
&lt;br /&gt;
If you plan on modifying code and submit your work back to the project, create your own local branch from this one for your changes.   The normal procedures for [https://www.google.com/url?q=https://wiki.secondlife.com/wiki/Open_Source_Portal&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1661829588245875&amp;amp;usg=AOvVaw3rf7OykcDFdf5dV_kebCfHOpen Source contributions to Second Life] apply.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;The Inverse Kinematics algorithm&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Inverse Kinematics problem&amp;quot; is often encountered in the fields of video games, computer animation, and robotics.  It is the situation where the final position and/or orientation of one or more bones within a hierarchical skeleton are specified or &amp;quot;known&amp;quot; while those of the rest of the system are &amp;quot;unknown&amp;quot;.  The bones with known transforms are called &amp;quot;end-effectors&amp;quot; and their target transforms are called &amp;quot;goals&amp;quot;.  The challenge is to compute transforms for ALL of the bones in the system such that the end-effectors achieve their goals, or approach them as close as possible.&lt;br /&gt;
&lt;br /&gt;
There are several IK algorithms to choose from.  They are all iterative in nature: each time the algorithm is applied the new result gets closer to an acceptable solution.  The iterations are stopped when the end-effectors are &amp;quot;close enough&amp;quot; to their goals, or when the time/compute resource budget is exhausted.  However, achieving the goals is often insufficient criteria for the IK problem.  There are typically an infinite number of solutions but they are not equally valid because some will require joints to bend in unnatural directions. Therefore not only must the end-effectors reach their goals but the joints of the skeleton must be &amp;quot;constrained&amp;quot; to only orient within their limits: the elbow pivots about a fixed local axis within a limited angle range and the forearm is limited in how much it can twist.&lt;br /&gt;
&lt;br /&gt;
Example IK algorithms include: Continuous Cyclic Descent (CCD), Jacobian pseudo-inverse, and [https://www.google.com/url?q=http://www.andreasaristidou.com/publications/papers/FABRIK.pdf&amp;amp;sa=D&amp;amp;source=editors&amp;amp;ust=1661829588247012&amp;amp;usg=AOvVaw141bkKuXxzxH9gSzHRMzd Forward And Backward Reaching Inverse Kinematics](P) (FABRIK).  The Second Life Puppetry system uses an implementation of FABRIK with joint constraints.  At the moment the constraint parameters are hard coded in the C++ and are specified only for: spine, arms, and head.   The legs and other bones are currently unconstrained.  The pelvis is immovable: it represents the origin of the root-frame.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h2&amp;gt;Working Together&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We would love to hear from you about any ideas and creations you have with this technology.    There are a lot of possibilities and different ways we can open up Second Life for more fun.   Please join in our conversation with user groups, forum postings and show us what you like.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Puppetry_Mocap&amp;diff=1211091</id>
		<title>Puppetry Mocap</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Puppetry_Mocap&amp;diff=1211091"/>
		<updated>2022-08-30T18:10:56Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;h2&amp;gt;Puppetry Mocap&amp;lt;/h2&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a high level look at how the [https://bitbucket.org/lindenlab/leap/src/main/python/puppetry/webcam/webcam_puppetry.py webcam_puppetry] module works in the Second Life Puppetry viewer.&lt;br /&gt;
&lt;br /&gt;
This is a high level look at the program logic, showing how the module starts and then enters a main loop where it fetches an image from the camera, tries to find a face and apply position and pose detection, then attempts to locate hand and fingers as well.    After enough time has elapsed, it sends the information to the Second Life viewer.&lt;br /&gt;
&lt;br /&gt;
The source code has some comments and more information on how this works, and some of the calculations needed to correct the data and make it work better.   The position of the camera can be sensitive here, affecting the quality of the data and how your avatar will look.  It&#039;s good to experiment with camera placement and see how it interacts with the positions.&lt;br /&gt;
&lt;br /&gt;
As we initially release the Puppetry feature, the data from webcam motion capture is restricted in the Z direction, out of the screen.     This means it works best for moving hands around up and to the side, not reaching towards the camera.   The pipeline between the raw data and landmarks from the camera to your Second Life avatar in-world is fractured, and the motion isn&#039;t right.  &lt;br /&gt;
&lt;br /&gt;
There are a lot of complexities to solve to get this right, factoring in the camera setup, person&#039;s size and position, speed, capture rate, landmark detection, translation and mapping to Second Life skeleton and dimensions, swapping coordinate systems, broadcast speed, server transmission, inverse kinematics, animation priority and perhaps lag.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_NONE&amp;diff=1210991</id>
		<title>PRIM PHYSICS SHAPE NONE</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_NONE&amp;diff=1210991"/>
		<updated>2022-08-09T13:20:51Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Constant&lt;br /&gt;
|type=integer&lt;br /&gt;
|name=PRIM_PHYSICS_SHAPE_NONE&lt;br /&gt;
|value=1&lt;br /&gt;
|desc=Used with [[PRIM_PHYSICS_SHAPE_TYPE]]. Prims of this type are ignored by the physics engine. Read more details on [[PRIM_PHYSICS_SHAPE_TYPE]]&lt;br /&gt;
|notes=[[File:Physics_shape_none.png|thumb|700px|center|&#039;&#039;&#039;The physics shape type attribute can be found in the Features tab of the Edit window.&#039;&#039;&#039;]]&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
|examples&lt;br /&gt;
|constants&lt;br /&gt;
|functions&lt;br /&gt;
|events&lt;br /&gt;
|location&lt;br /&gt;
|history=&lt;br /&gt;
*Introduced in [[Release Notes/Second Life RC LeTigre/11#11.09.09.240509|Second Life RC LeTigre 11.09.09.240509]], September 9, 2011&lt;br /&gt;
*[http://www.sluniverse.com/php/vb/scripting/61203-future-physics-functions-tease.html#post1305775 SLUniverse:Future physics functions tease]&lt;br /&gt;
|cat1=Prim&lt;br /&gt;
|cat2=Physics&lt;br /&gt;
|cat3&lt;br /&gt;
|cat4&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LSL_Tutorial&amp;diff=1210764</id>
		<title>LSL Tutorial</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LSL_Tutorial&amp;diff=1210764"/>
		<updated>2022-05-16T16:10:51Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{LSL Header|ml=*}}&lt;br /&gt;
&lt;br /&gt;
== Beginner Tutorials ==&lt;br /&gt;
&#039;&#039;&#039;[[Getting Ready to Learn LSL]]:&#039;&#039;&#039; Before learning LSL, it is helpful to learn the basics of Second Life. Here are some pointers to getting started.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Help:Getting started with LSL|Getting Started with LSL]]:&#039;&#039;&#039; Tutorial for absolute beginners.  Basic SL inventory and navigation required.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Hello Avatar]]:&#039;&#039;&#039; A place to try next after Getting Started in LSL.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[A Basic LSL Tutorial]]:&#039;&#039;&#039; A tutorial for people who are new to LSL scripting, with basic tasks and LSL scripting terms explained in quick short answers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[LSL 101: The Wikibook]]:&#039;&#039;&#039; A collaborative project to create a &amp;quot;complete&amp;quot; narrative guide to LSL scripting, starting with no assumptions of previous programming experience, and going to ... who knows where?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Chatbot]]:&#039;&#039;&#039; A short tutorial list of concise LSL statements that make a default wood box translucent and bouncy and then kick and spin it along, also a script to run such commands for you.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[DialogMenus|Building a dialog menu step by step]]:&#039;&#039;&#039; A tutorial for beginning scripters on implementing a simple menu dialog system. Designed to illustrate the basic principles in layman&#039;s language.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Video Tutorial/Script editor featurettes|Video Tutorial: Script editor featurettes]]:&#039;&#039;&#039; Features of the inworld Script editor. Look at [[LSL Alternate Editors]] for external 3rd party editors.&lt;br /&gt;
&lt;br /&gt;
== In-World Tutorials ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://slurl.com/secondlife/Star%20Beach%20Island/150/212/22/?x=300&amp;amp;y=300&amp;amp;img=http%3A//cd.bromley.ac.uk/bteccourses/sl/images/shimmer_island.jpg&amp;amp;title=Learning%20in%20Virtual%20Reality&amp;amp;msg=Here%20at%20Shimmer%20island%2C%20I%20shall%20be%20exploring%20the%20potential%20of%20Second%20Life%20in%20support%20of%20my%20current%20trials%20with%20the%20Moodle%20vle%20for%20Virtual%20Learning.%20So%20please%20feel%20free%20to%20drop%20in%20for%20a%20chat%20with%20us%20to%20see%20how%20things%20are%20going.%20Regards%20Skipper%20Abel  Bromley College in-world Virtual Learning trials]:&#039;&#039;&#039; Please feel free to come over and look around&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://slurl.com/secondlife/Horsa/43/236/84 Many free scripting tutorials that are easy to read at our College of Scripting, Music and Science]:&#039;&#039;&#039;  Come by to learn scripting and building.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Swiss Projects Tutorial, the Swiss Tutorial for Second Life®; interactive, inworld and in the Web, in German:&#039;&#039;&#039; das schweizer Tutorial zu Second Life®; interaktiv, inworld und im Web, in deutscher Sprache. SLURL: &#039;&#039;&#039;[http://slurl.com/secondlife/swiss%20projects]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== External Tutorials ==&lt;br /&gt;
&#039;&#039;&#039;[http://www.ddj.com/dept/ai/197008520?pgno=1 Using LSL introductory tutorial]&#039;&#039;&#039; Dr. Dobb&#039;s tutorial&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://xahlee.org/sl/sl/ls.html Linden Scripting Language (LSL) Tutorial]&#039;&#039;&#039;  Xah Lee&#039;s tutorial on LSL&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://people.cc.ku.edu/~grobe/intro-to-LSL/ Using the Linden Script Language]:&#039;&#039;&#039; A very comprehensive tutorial on basic scripting from Kan-ed.&lt;br /&gt;
&lt;br /&gt;
== Scripting Tools ==&lt;br /&gt;
These tools are designed to &#039;&#039;&#039;ease the process of scripting&#039;&#039;&#039;, whether it&#039;s autogenerating scripts or helping you to edit them. Some of them were featured in [http://blog.secondlife.com/2008/07/19/get-started-scripting-with-autoscript-video-tip-of-the-week-42/ Torley&#039;s Autoscript post]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;videoflash&amp;gt;xW619vHfYeg&amp;lt;/videoflash&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://conwylie.co.uk/ScriptGenerator Con Wylie&#039;s Script Generator]&#039;&#039;&#039; - &#039;&#039;&#039;Con Wylie&#039;s up-to-date tool&#039;&#039;&#039; lets you create a script in a few seconds. A easy to use interface helps you to create your script. this tool is updated weekly, so remember to visit to see what new scripts you can make! The tool can be downloaded for offline use. For when you are on the move a downloadable iOS webapp is just a click away with offline use as well&lt;br /&gt;
&#039;&#039;&#039;[http://yes.torley.com/post/6321621554/new-super-fast-and-easy-online-scripting-tool-second Torley Linden&#039;s Post about Con Wylie&#039;s Tool]&#039;&#039;&#039; - Con Wylie has an improved LSL Script Generator, so if you’re new at scripting or just want the convenience of making object interactivity easy, check it out!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.3greeneggs.com/autoscript/ Autoscript]&#039;&#039;&#039; - Ann Enigma&#039;s versatile tool lets you make a script with a few clicks, then examine and edit it further. Easily add interactivity to your objects and get started scripting! Available in Français and Deutsch too.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://web.mit.edu/~eric_r/Public/S4SL/ Scratch for Second Life]&#039;&#039;&#039; - Eric Rosenbaums’s app for Mac and Windows which lets you arrange scripts visually as if they were Legos. I haven’t had a chance to even scratch (ha!) its surface yet, but watch Eric’s video to better understand:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://particles-lsl-generator.bashora.com/ Particle script generator]&#039;&#039;&#039; - This formatted webpage may be easier to use than SL’s own script editor. Change your parameters and try it out inworld.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.miceonabeam.com MiceOnABeam Visual Scripting Tool]&#039;&#039;&#039; - MiceOnABeam is a visual programming tool that generates LSL scripts for SL. You choose among graphical modeling components to specify the program flow of your script in terms of states and the events that transition between the states. You can then use the built-in LSL Action Wizard or insert your own LSL code to specify what happens when an event occurs. The program then generates the LSL code for the model to form a complete script for the SL environment. Check out the demo video &#039;&#039;&#039;[http://bit.ly/ihCqyf here]&#039;&#039;&#039; or on &#039;&#039;&#039;[http://www.youtube.com/watch?v=LBA8wvoA9EI YouTube]&#039;&#039;&#039;. A Free version can be downloaded from &#039;&#039;&#039;[http://www.miceonabeam.com here]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Books on LSL ==&lt;br /&gt;
These are real-world books with significant content on LSL and the process of scripting.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470171146.html Creating Your World: The Official Guide to Advanced Content Creation for Second Life]&#039;&#039;&#039; - &#039;&#039;&#039;Creating Your World&#039;&#039;&#039; is a Linden Lab approved text book on content creation, including a chapter on beginning scripting and LSL.  There is a free sample chapter (on building) available at the publisher&#039;s site. The book is available from [http://www.amazon.com/Creating-Your-World-Official-Advanced/dp/0470171146/ bookstores] everywhere.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://syw.fabulo.us Scripting Your World: The Official Guide to Second Life Scripting]&#039;&#039;&#039; - &#039;&#039;&#039;Scripting Your World&#039;&#039;&#039; is a Linden Lab approved reference on LSL and an example-based textbook on LSL scripting.  The first chapter (a language reference) is available for free from the publisher and the support site. The authors have published additional [http://syw.fabulo.us/wiki/Bonus_Material free chapters] on a variety of topics. Scripting Your World is available from [http://www.amazon.com/Scripting-Your-World-Official-Second/dp/0470339837/ Amazon] and other online and physical bookstores, in paperback and several electronic forms.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[http://www.heatonresearch.com/category/programming-language/linden-scripting-language Jeff Heaton&#039;s books on LSL]&#039;&#039;&#039; &#039;&#039;&#039;Introduction to Linden Scripting Language for Second Life&#039;&#039;&#039; and &#039;&#039;&#039;Scripting Recipes for Second Life&#039;&#039;&#039; are independent books on scripting.  Much of the content is available at the Heaton Research website as free articles. The books are available from bookstores as well as electronically.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;br /&gt;
[[Category:LSL Tutorials]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_parameters&amp;diff=1210713</id>
		<title>Viewer parameters</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_parameters&amp;diff=1210713"/>
		<updated>2022-05-02T21:42:55Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Command line */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Help|Viewer=*}}&lt;br /&gt;
&lt;br /&gt;
For versions of Second Life prior 1.20 see: [[Pre 1.20 Client parameters]]&lt;br /&gt;
&lt;br /&gt;
== Using Viewer parameters ==&lt;br /&gt;
There are many ways of passing command line parameters to the Viewer. &lt;br /&gt;
&lt;br /&gt;
=== Command line ===&lt;br /&gt;
&lt;br /&gt;
When running the Viewer from a command shell you may specify parameters directly on the command line.  For example, on Windows:&lt;br /&gt;
&lt;br /&gt;
 SecondLife.exe --channel &amp;quot;Test 123&amp;quot;  --settings settings_workspace.xml --set InstallLanguage en&lt;br /&gt;
&lt;br /&gt;
Add --args on Mac:&lt;br /&gt;
&lt;br /&gt;
 open ./Second\ Life\ Viewer.app --args --channel &amp;quot;Test 123&amp;quot;  --settings settings_workspace.xml --set InstallLanguage en&lt;br /&gt;
&lt;br /&gt;
=== Settings Files ===&lt;br /&gt;
&lt;br /&gt;
On all platforms, you can also construct a settings file and specify that with the &amp;lt;tt&amp;gt;--sessionsettings&amp;lt;/tt&amp;gt; command line switch. Please see the table below to understand the settings variables engaged by each command-line switch.&lt;br /&gt;
&lt;br /&gt;
If you edit the user_settings/settings.xml file, that affects future Second Life sessions initiated from your OS account.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can edit the first_last/settings.xml file, which affects only Second Life sessions for that login user. For example, if your Second Life name is &amp;quot;FooBar Baz&amp;quot;, you should find that file in foobar_baz/settings.xml. (Caution: this file uses a different XML format than the other settings files.)&lt;br /&gt;
&lt;br /&gt;
=== Mac OS X AppleScripts ===&lt;br /&gt;
An alternative (and often easier) way to launch Second Life with command line parameters is to use an AppleScript.&lt;br /&gt;
&lt;br /&gt;
Follow these steps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In &amp;lt;code&amp;gt;/Applications/AppleScript&amp;lt;/code&amp;gt; open Script Editor.&lt;br /&gt;
&amp;lt;li&amp;gt; Open a new document and paste the following text into it:&lt;br /&gt;
&amp;lt;pre&amp;gt;do shell script &amp;quot;\&amp;quot;/Applications/Second Life.app/Contents/MacOS/Second Life\&amp;quot; -grid Aditi&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
The script includes an example parameter that will cause the Viewer to log in to the beta grid; change the parameters as desired.&lt;br /&gt;
&amp;lt;li&amp;gt; Once you&#039;re happy with the parameters, click &amp;quot;Compile&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt; Choose File &amp;gt; Save As&lt;br /&gt;
&amp;lt;li&amp;gt; Save the script as an Application, and select &amp;quot;Run Only&amp;quot; (may be &amp;quot;Execute&amp;quot; on OS X.4 Tiger).  If you want to tweak the script then you can save it as not run-only, and/or save a copy as &amp;quot;Script&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Double-click the application you&#039;ve compiled to launch the Viewer with the specified parameters.&lt;br /&gt;
&lt;br /&gt;
NOTE: If the Viewer launches then immediately quits, open it normally since there is likely an update available:&lt;br /&gt;
download it and your script will work again. There is a [http://jira.secondlife.com/browse/VWR-5835 JIRA issue] for this.&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio ===&lt;br /&gt;
In Visual Studio, the command line paramaters are in the Debug Options pane of the newview project preferences. Ensure newview is your startup project, and launch the compiled viewer from within the debugger for these options to take effect.&lt;br /&gt;
&lt;br /&gt;
=== XCode ===&lt;br /&gt;
In XCode, first select &amp;quot;newview&amp;quot; under the &amp;quot;Executables&amp;quot; group in XCode. Then open the &amp;quot;Get Info&amp;quot; dialog and click the &amp;quot;Arguments&amp;quot; tab. Add any of the following options to the &amp;quot;Arguments to be passed on launch&amp;quot; pane.&lt;br /&gt;
&lt;br /&gt;
== Parameter reference ==&lt;br /&gt;
&lt;br /&gt;
NOTE: A &#039;&#039;parameter&#039;&#039; refers to a directive provided on the command-line following a double-dash (--).&lt;br /&gt;
An &#039;&#039;argument&#039;&#039; is a value provided for a parameter.  For example in &amp;lt;code&amp;gt;--port 13001&amp;lt;/code&amp;gt;, &amp;quot;port&amp;quot; is the parameter&lt;br /&gt;
and &amp;quot;13001&amp;quot; is the argument.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| {{Prettytable}}&lt;br /&gt;
&lt;br /&gt;
|-{{Hl2}} &lt;br /&gt;
! Parameter&lt;br /&gt;
! Argument (if any)&lt;br /&gt;
! Description&lt;br /&gt;
! Overridden Setting&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --analyzeperformance&lt;br /&gt;
| None&lt;br /&gt;
| Compare gathered metrics with baseline. Must be used with --logmetrics or --logperformance.&lt;br /&gt;
| AnalyzePerformance&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --autologin&lt;br /&gt;
| None&lt;br /&gt;
| Login in as last saved user.&lt;br /&gt;
| AutoLogin&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --channel &amp;lt;name&amp;gt;&lt;br /&gt;
| Channel name&lt;br /&gt;
| Specify version channel name. (For Testing)&lt;br /&gt;
| CmdLineChannel&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --console &amp;lt;show&amp;gt;&lt;br /&gt;
| TRUE &#039;&#039;or&#039;&#039; &#039;&#039;&#039;FALSE&#039;&#039;&#039;&lt;br /&gt;
| Show a debugging console (Windows only)&lt;br /&gt;
| ShowConsoleWindow&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --cooperative &amp;lt;ms to yield&amp;gt;&lt;br /&gt;
| Milliseconds to yield per frame&lt;br /&gt;
| Yield specified time to host on each frame. &lt;br /&gt;
| YieldTime&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --crashonstartup&lt;br /&gt;
| None&lt;br /&gt;
| Crashes on startup. For debugging.&lt;br /&gt;
| CrashOnStartup&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --debugsession&lt;br /&gt;
| None&lt;br /&gt;
| Run as if RenderDebugGL is TRUE, but log errors until end of session.&lt;br /&gt;
| DebugSession&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --debugviews&lt;br /&gt;
| None&lt;br /&gt;
| Enable UI view debugging information.&lt;br /&gt;
| DebugViews&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --disablecrashlogger&lt;br /&gt;
| None&lt;br /&gt;
| Disables the crash logger and lets the OS handle crashes.&lt;br /&gt;
| DisableCrashLogger&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --drop &amp;lt;percentage&amp;gt;&lt;br /&gt;
| Percentage to drop (0 - 100)&lt;br /&gt;
| Specify a percentage of packets to drop. &lt;br /&gt;
| PacketDropPercentage&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --god&lt;br /&gt;
| None&lt;br /&gt;
| Login in [[God Mode|god mode]] if you are authorized.&lt;br /&gt;
| ConnectAsGod&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --graphicslevel&lt;br /&gt;
| integer level &lt;br /&gt;
| override the level that would be selected based on your gpu&lt;br /&gt;
| RenderQualityPerformance&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --grid &amp;lt;grid name&amp;gt;&lt;br /&gt;
| Grid name&lt;br /&gt;
| Specify the grid to connect to. Must specify either a hard-coded grid (agni or aditi), or one defined in grids.xml &lt;br /&gt;
| CmdLineGridChoice&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --help&lt;br /&gt;
| None&lt;br /&gt;
| Show a message box with available options listed.&lt;br /&gt;
| N/A&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --helperuri &amp;lt;URI&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &#039;&#039;&#039;Obsolete&#039;&#039;&#039;- no longer supported.  May only be set in the grid definition (grids.xml)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --ignorepixeldepth&lt;br /&gt;
| None&lt;br /&gt;
| Ignore pixel depth settings.&lt;br /&gt;
| IgnorePixelDepth&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --inbw &amp;lt;bits&amp;gt;&lt;br /&gt;
| Bits per second &lt;br /&gt;
| Specify input bandwidth limit. &lt;br /&gt;
| InBandwidth&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --loginpage &amp;lt;URL&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &#039;&#039;&#039;Obsolete&#039;&#039;&#039;- no longer supported.  May only be set in the grid definition (grids.xml)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --loginuri &amp;lt;URI&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
| &#039;&#039;&#039;Obsolete&#039;&#039;&#039;- no longer supported.  May only be set in the grid definition (grids.xml)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --logfile &amp;lt;filename&amp;gt;&lt;br /&gt;
| File name&lt;br /&gt;
| Specify a file name for log output.&lt;br /&gt;
| UserLogFile&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --login &amp;lt;firstname&amp;gt; &amp;lt;lastname&amp;gt; &amp;lt;password&amp;gt;&lt;br /&gt;
| Account first name, last name, and password with which to log in.&lt;br /&gt;
| Specify login values.&lt;br /&gt;
| UserLoginInfo&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --logmetrics&lt;br /&gt;
| MetricName&lt;br /&gt;
| Log metrics data in MetricName.slp. See [[Performance Testers]] for details.&lt;br /&gt;
| LogMetrics&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --logperformance&lt;br /&gt;
| None&lt;br /&gt;
| Log performance data in performance.slp. See [[Performance Testers]] for details.&lt;br /&gt;
| LogPerformance&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --multiple&lt;br /&gt;
| None&lt;br /&gt;
| Allow multiple viewers running concurrently.&lt;br /&gt;
| AllowMultipleViewers&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --no-verify-ssl-cert&lt;br /&gt;
| None&lt;br /&gt;
| Disable SSL certificate verification.&lt;br /&gt;
| NoVerifySSLCert&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --noaudio&lt;br /&gt;
| None&lt;br /&gt;
| Disable sound from the client.&lt;br /&gt;
| NoAudio&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --noinvlib&lt;br /&gt;
| None&lt;br /&gt;
| Do not request inventory library.&lt;br /&gt;
| NoInventoryLibrary&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --nopreload&lt;br /&gt;
| None&lt;br /&gt;
| Disable precaching of sound and bitmaps used by the client.&lt;br /&gt;
| NoPreload&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --noprobe&lt;br /&gt;
| None&lt;br /&gt;
| Disable hardware checking at startup.&lt;br /&gt;
| NoHardwareProbe&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --noquicktime&lt;br /&gt;
| None&lt;br /&gt;
| Disable use of quicktime by the client.&lt;br /&gt;
| NoQuickTime&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --nosound&lt;br /&gt;
| None&lt;br /&gt;
| Disable sound from the client.&lt;br /&gt;
| NoAudio&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --novoice&lt;br /&gt;
| None&lt;br /&gt;
| Disable voice chat.&lt;br /&gt;
| CmdLineDisableVoice&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --outbw &amp;lt;bits&amp;gt;&lt;br /&gt;
| Bits per second&lt;br /&gt;
| Specify output bandwidth limit. &lt;br /&gt;
| OutBandwidth&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --port &amp;lt;n&amp;gt;&lt;br /&gt;
| Port number&lt;br /&gt;
| Set the TCP port for the client; useful to run multiple instances of SL on the same local home network. Values that may work: 13000 and 13001 (Valid numbers are 13000 to 13050)&lt;br /&gt;
| UserConnectionPort&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --purge&lt;br /&gt;
| None&lt;br /&gt;
| Force the client to clear cached downloads during startup.&lt;br /&gt;
| PurgeCacheOnNextStartup&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --qa&lt;br /&gt;
| None&lt;br /&gt;
| Enable UI features for used for testing.&lt;br /&gt;
| QAMode&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --quitafter &amp;lt;secs&amp;gt;&lt;br /&gt;
| Number of seconds to wait before quitting&lt;br /&gt;
| Have the client quit after the specified duration.&lt;br /&gt;
| QuitAfterSeconds&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --replaysession&lt;br /&gt;
| None&lt;br /&gt;
| Use a saved autoplay file to perform viewer actions automatically. Must be used with --autologin.&lt;br /&gt;
| ReplaySession&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --rotate&lt;br /&gt;
| None&lt;br /&gt;
| Force the avatar to rotate to the right. (For Testing)&lt;br /&gt;
| RotateRight&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --safe&lt;br /&gt;
| None&lt;br /&gt;
| Reset preferences and run in safe mode.&lt;br /&gt;
| SafeMode&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --sessionsettings &amp;lt;filename&amp;gt;&lt;br /&gt;
| name of a file in app_settings&lt;br /&gt;
| Use &#039;&#039;&#039;settings_minimal.xml&#039;&#039;&#039; to force Basic mode on login, an invalid name like &#039;&#039;&#039;none&#039;&#039;&#039; to force Advanced mode. Note that currently (2.6) the login screen mode menu will show &amp;quot;Basic&amp;quot; if this setting appears at all, but the command line setting will still override on actual login.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --set &amp;lt;parameter&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| First argument is the name of setting; second is the value to assign to it.&lt;br /&gt;
| Specify the value of the named setting (view a full list [[Debug_Settings|here]]).&lt;br /&gt;
| Maps to &amp;lt;setting&amp;gt; arg.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --setdefault &amp;lt;parameter&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
| First argument is the name of setting; second is the value to assign to it.&lt;br /&gt;
| Specify the value of a particular configuration variable which can be overridden by settings.xml.&lt;br /&gt;
| Maps to &amp;lt;setting&amp;gt; arg.&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --settings &amp;lt;filename&amp;gt;&lt;br /&gt;
| Local file name&lt;br /&gt;
| Specify the name of the user settings file.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --skin &amp;lt;folder&amp;gt;&lt;br /&gt;
| Folder name&lt;br /&gt;
| Specify the skin folder to use. (eg. korean, spanish)&lt;br /&gt;
| SkinCurrent&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --slurl &amp;lt;SLurl&amp;gt;&lt;br /&gt;
| SLurl&lt;br /&gt;
| Specify the starting region and position (for example, secondlife://Ahern/128/128). &lt;br /&gt;
This must be the last parameter on the command line.&lt;br /&gt;
| CmdLineLoginLocation&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --update-service &amp;lt;url&amp;gt;&lt;br /&gt;
| base url for the viewer version manager update query&lt;br /&gt;
| Specify the viewer version manager service to use (primarily for upgrade testing)&lt;br /&gt;
| CmdLineUpdateService&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
| --url &amp;lt;SLurl&amp;gt;&lt;br /&gt;
| SLurl&lt;br /&gt;
| Specify the starting region and position (for example, secondlife://Ahern/128/128). &lt;br /&gt;
This must be the last parameter on the command line.&lt;br /&gt;
| CmdLineLoginLocation&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| --usersessionsettings &amp;lt;filename&amp;gt;&lt;br /&gt;
| name of a file in app_settings&lt;br /&gt;
| Specify the filename of a configuration file that contains temporary per-session configuration user overrides.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Specifying new command line parameters ==&lt;br /&gt;
&lt;br /&gt;
To add a new command line parameter, use the configuration file &#039;&#039;app_settings/cmd_line.xml&#039;&#039; to map a command line paramter to a user setting. &lt;br /&gt;
A parameter can have the following options:&lt;br /&gt;
* desc - A description of the paramter. &lt;br /&gt;
* short - a single character to map to the paramter.&lt;br /&gt;
* count - the number of tokens to follow a option.&lt;br /&gt;
* compose - true if the option can be specified multiple times.&lt;br /&gt;
* positional - true if the option can be specified without --name.&lt;br /&gt;
* last_option - true if the option should be the last option.&lt;br /&gt;
* map-to - specify a user setting to map the option to.&lt;br /&gt;
The file uses [[LLSD]] syntax. Use the existing options as reference.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
=== Setting a Custom Cache Location ===&lt;br /&gt;
To set a custom cache location when launching Second Life, you should use the &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; parameter with a value of &amp;lt;code&amp;gt;NewCacheLocation&amp;lt;/code&amp;gt; followed by the desired cache folder to use. This will tell Second Life to startup using this location as a new cache location.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example:&#039;&#039;&#039; &amp;lt;code&amp;gt;--set CacheLocation j:\SL_Cache --set NewCacheLocation j:\SL_Cache&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: &lt;br /&gt;
Per &#039;&#039;&#039;STORM-334 &#039;&#039;&#039; The double command above &amp;lt;span style=&amp;quot;text-decoration: line-through;&amp;quot;&amp;gt;will&amp;lt;/span&amp;gt; should retain the previous cache and switch to the new cache.&lt;br /&gt;
&lt;br /&gt;
Using just NewChacheLocation will clear any existing cache folder that it has been using. So, to prevent this you can also the &amp;lt;code&amp;gt;CacheLocation&amp;lt;/code&amp;gt; setting to the same value and ahead of NewCacheLocation, which will preserve any cache folder saved in your viewer settings. &lt;br /&gt;
&lt;br /&gt;
This allows you to, use two different shortcuts in order to launch two different Second Life accounts, each with their own separate cache folder, allowing each to have a fully cached home location, for example. Or, a more complex case, a shortcut could create a temporary RAM disk for use as a cache folder, and set this value for Second Life to use, taking advantage of a RAM disk&#039;s speed, before saving the contents to disk afterwards.&lt;br /&gt;
&lt;br /&gt;
{{KBnote|This command is not working with the Project Bento Viewer 5.0.0.315657 or the current default viewer 4.0.5.315117. These viewers do, however, automatically create separate inventory caches for each grid. As an alternative, you can use [[#Command_line|separate settings files]] as above, then use the normal preferences route to set a custom cache location.}}&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Render_Correctness_Test&amp;diff=1210509</id>
		<title>Render Correctness Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Render_Correctness_Test&amp;diff=1210509"/>
		<updated>2022-03-03T19:39:33Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Water rendering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiFeatureNav|parent=Render Correctness}}&lt;br /&gt;
[[Category:Test Scripts]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
Test expected render behavior for 3.0 and newer viewers.&lt;br /&gt;
&lt;br /&gt;
=== Terrain rendering ===&lt;br /&gt;
&lt;br /&gt;
* Verify terrain mesh detail defaults to High when Graphics Quality is set to Mid or higher.&lt;br /&gt;
* Verify terrain mesh detail defaults to Low when Graphics Quality is set to Low.&lt;br /&gt;
* Verify terrain detail textures change according to elevation. (screenshot from http://maps.secondlife.com/secondlife/Bug%20Island%202/88/98/23)&lt;br /&gt;
[[File:Terrain_rendering.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Windlight rendering ===&lt;br /&gt;
* Set Graphics quality to High.&lt;br /&gt;
* If Atmospheric shaders is still disabled, skip to the next section.&lt;br /&gt;
* Verify you can see clouds in the sky like this picture from http://maps.secondlife.com/secondlife/Bug%20Island%202/88/98/23&lt;br /&gt;
[[File:Windlight_clouds.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Water rendering ===&lt;br /&gt;
&lt;br /&gt;
* Verify that the Transparent Water shader is disabled when Graphics Quality is set to Low.&lt;br /&gt;
* Verify that the Transparent Water shader is enabled when Graphics Quality is set to Low-Mid or higher.&lt;br /&gt;
* Uncheck Transparent Water and verify the water surface appears opaque from above and below water.&lt;br /&gt;
* Check Transparent Water and verify the water surface appears transparent from above and below water.&lt;br /&gt;
* Put camera under water, verify that fog changes. There is generally more fog below water than above water.&lt;br /&gt;
* Turn on Preferences &amp;gt; Graphics &amp;gt; Advances Settings &amp;gt; Basic Shaders and Transparent Water. &#039;&#039;(Basic shaders cannot be enabled if OpenGL &amp;lt; 2.0. The OpenGL version can be found in Help menu -&amp;gt; About Second Life. If OpenGL &amp;lt; 2.0, skip to the next section.)&#039;&#039;&lt;br /&gt;
* Verify that sun/moon reflections appear on surface of water.&lt;br /&gt;
* Verify that water appears to have animated waves.&lt;br /&gt;
* Put camera under water and verify that objects above water appear distorted by the waves.&lt;br /&gt;
* Move the sun to Midday ({{KeyCombo|ctrl=*|shift=*|Y}}) and verify that water looks appropriate.&lt;br /&gt;
[[File:Water1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Water Reflections ===&lt;br /&gt;
&lt;br /&gt;
* Confirm Basic Shaders and either Transparent Water or Bump mapping is enabled in Preferences &amp;gt; Graphics &amp;gt; Advanced Settings.&lt;br /&gt;
* Find Water Reflections in Preferences &amp;gt; Graphics &amp;gt; Advanced Settings&lt;br /&gt;
* Select &amp;quot;Terrain and Trees&amp;quot; water reflections and verify you see the land and trees reflected in the water.&lt;br /&gt;
* Select &amp;quot;All Static Objects&amp;quot; and verify that now in addition to the trees and terrain, you see unmoving objects reflected.&lt;br /&gt;
* Select &amp;quot;All Avatars and Objects&amp;quot; and verify that you and other avatars are now being reflected as well.&lt;br /&gt;
* Select &amp;quot;Everything&amp;quot; and verify that all terrain, trees, objects, avatars, and particles are now reflected in the water.&lt;br /&gt;
&lt;br /&gt;
=== Avatar rendering ===&lt;br /&gt;
&lt;br /&gt;
* Verify that the avatar is lit by the sun/moon&lt;br /&gt;
* Right click on your avatar and Edit My Shape.&lt;br /&gt;
* Verify that avatar renders properly in the preview panels.&lt;br /&gt;
* Repeat with Hardware Skinning enabled/disabled in preferences.&lt;br /&gt;
&lt;br /&gt;
=== UI Rendering===&lt;br /&gt;
&lt;br /&gt;
* Turn on property lines and land owners from World &amp;gt; Show menu.&lt;br /&gt;
* Verify all appear correctly.&lt;br /&gt;
* Turn on stats bar with ctrl-shift-1&lt;br /&gt;
* Verify that text appears correctly in statistics bar.&lt;br /&gt;
* Enable World menu &amp;gt; Show &amp;gt; Beacons, and check the Scripted check box.&lt;br /&gt;
* Enable Beacons and Highlights&lt;br /&gt;
* Verify Beacons and Highlights appear on scripted objects [need a picture here]&lt;br /&gt;
* Open the Develop menu with Ctrl-Alt-Q, turn on Develop &amp;gt; Show Info &amp;gt; Show Updates to Objects.&lt;br /&gt;
* Find a scripted object and verify that update hints are being rendered (should look like red or blue spots rising from the center of the object. Blue spots will rise from your avatar if you walk).&lt;br /&gt;
* Hold mouse cursor over an avatar and verify the tooltip renders properly. &lt;br /&gt;
[[File:Tooltip1.jpg]]&lt;br /&gt;
* Select an object. (eg. the Kart from the Library)&lt;br /&gt;
* Verify silhouette outline renders correctly.&lt;br /&gt;
[[File:Object select.jpg]]&lt;br /&gt;
* Edit an object.&lt;br /&gt;
* Verify that the root prim (the seat) has a yellow outline while the other prims have a blue outline.&lt;br /&gt;
[[File:Object_edit_2.jpg]]&lt;br /&gt;
* Verify a particle beam projects from your hand to the object you are editing.&lt;br /&gt;
&lt;br /&gt;
=== Object Rendering ===&lt;br /&gt;
&#039;&#039;[make objects for these tests to speed testing]&#039;&#039;&lt;br /&gt;
* Make a cube.&lt;br /&gt;
* Change its color.&lt;br /&gt;
* Move the cube. &#039;&#039;&#039;Verify&#039;&#039;&#039; color remains the same.&lt;br /&gt;
* Make cube transparent.&lt;br /&gt;
* Move the cube. &#039;&#039;&#039;Verify&#039;&#039;&#039; color remains the same.&lt;br /&gt;
* Turn on the Bump mapping and shiny shader in preferences.&lt;br /&gt;
* Give cube a texture with an alpha mask that is 100 transparent in some area. (eg. Inventory/Library/Textures/*Default Transparent Texture)&lt;br /&gt;
* Close the edit tools&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; you can click through the mask (the transparent section) with alt-zoom.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; you can right-click your avatar through the mask.&lt;br /&gt;
* Attach the cube to your HUD.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; the HUD attachment has full bright lighting and looks the same if you toggle Full Bright on and off in the Texture panel of edit tools.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; the HUD attachment is not lit by the sun or moon when you look around.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; the mask part of the HUD attachment does not block alt-zoom unless in edit mode.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; you can select the HUD attachment when in edit mode.&lt;br /&gt;
* Attach a default script to the cube HUD attachment.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; HUD attachment responds to left click.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; you can right click your avatar through the cube attachment&#039;s mask.&lt;br /&gt;
* Detach the cube&lt;br /&gt;
* Make a sphere&lt;br /&gt;
* Change the sphere&#039;s color.&lt;br /&gt;
* Make it shiny medium and &#039;&#039;&#039;verify&#039;&#039;&#039; it appears shiny.&lt;br /&gt;
* Move the sphere. &#039;&#039;&#039;Verify&#039;&#039;&#039; color remains the same.&lt;br /&gt;
* Give the sphere a bump map.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; that bump map is visible.&lt;br /&gt;
* Attach the sphere to your HUD.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; the sphere is still shiny and bump mapped.&lt;br /&gt;
* &#039;&#039;&#039;Verify&#039;&#039;&#039; the sphere is not lit by the sun or moon when you look around. [https://jira.secondlife.com/browse/SH-2646 SH-2646]&lt;br /&gt;
&lt;br /&gt;
=== Sculpty Rendering ===&lt;br /&gt;
&lt;br /&gt;
* Rez the sculpty horse from My Inventory/Library/Objects/Sculpt Prims - Examples/Horse (Sculpt Prim Example) - by Nomasha Syaka&lt;br /&gt;
* Verify you see a collection of blobs that resolves into a brown and white running horse withing a few seconds.&lt;br /&gt;
[[File:sculpty_horse.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Highlight rendering ===&lt;br /&gt;
* Create 2 cubes, make one 100% transparent and the other 50% transparent.&lt;br /&gt;
* Enable the Advanced menu with ctrl-alt-D or with Preferences &amp;gt; Advanced &amp;gt; Show Advanced Menu&lt;br /&gt;
* Turn on Advanced menu &amp;gt; Highlighting and Visibility &amp;gt; Highlight Transparent. &lt;br /&gt;
* Verify both cubes are highlighted with a red tint.&lt;br /&gt;
* Attach both cubes to your HUD&lt;br /&gt;
* Verify both cubes on your HUD are highlighted with a red tint.&lt;br /&gt;
* Turn off Advanced menu &amp;gt; Highlighting and Visibility &amp;gt; Highlight Transparent.&lt;br /&gt;
&lt;br /&gt;
=== Render order ===&lt;br /&gt;
* Attach a semi-transparent cube to your HUD if you don&#039;t already have one.&lt;br /&gt;
* Turn on World menu &amp;gt; Show &amp;gt; Property Lines. Verify the property lines do not draw in front of hills or solid objects or your semi-transparent HUD object.&lt;br /&gt;
* Open the world map and click on a location nearby, and close the world map&lt;br /&gt;
* Verify the red column is only visible above ground, and not as it passes below ground.&lt;br /&gt;
* Turn off World menu &amp;gt; Show &amp;gt; Property Lines.&lt;br /&gt;
[[File:Render_order1.jpg‎]]&lt;br /&gt;
&lt;br /&gt;
=== llSetText rendering ===&lt;br /&gt;
&lt;br /&gt;
* Attach a semi-transparent cube to your HUD if you don&#039;t already have one.&lt;br /&gt;
* Add the following script to the cube attachment. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
state_entry()&lt;br /&gt;
{&lt;br /&gt;
while(1)&lt;br /&gt;
llSetText(&amp;quot;Hello, Avatar!&amp;quot;,&amp;lt;llFrand(1),llFrand(1),llFrand(1)&amp;gt;,llFrand(1));&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Verify you can see the SetText message rapidly changing colors on the HUD object.&lt;br /&gt;
&lt;br /&gt;
=== Appearance mode rendering ===&lt;br /&gt;
&lt;br /&gt;
* Right click your Avatar and &amp;quot;Edit My Shape&amp;quot;.&lt;br /&gt;
* Verify you can see the thumbnail images for your avatar.&lt;br /&gt;
* Edit your Skin.&lt;br /&gt;
* Change your skin color, Save All, and exit appearance mode.&lt;br /&gt;
* Verify your avatar textures rebake after a few seconds and that your skin color is correct.&lt;br /&gt;
&lt;br /&gt;
=== Shaders ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
* Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
* Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
* Continue testing at the 5 stations to the South.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Glow + transparent ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/244/175/23&lt;br /&gt;
* Verify the sphere is invisible when Basic Shaders are off.&lt;br /&gt;
* Verify the sphere is glowing when Basic Shaders are on.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Quality Assurance]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&amp;diff=1209822</id>
		<title>Content Creation User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&amp;diff=1209822"/>
		<updated>2021-01-14T21:05:39Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Content Creation User Group meeting is a weekly, public meeting intended for discussion of issues around content creation, including avatars, animations, mesh, etc. Vir Linden is the moderator. Please bring questions, requests, and especially cool new things to show off!&lt;br /&gt;
&lt;br /&gt;
Normal schedule is to meet every Thursday at 1:00PM SLT, except the second and fourth Thursday of the month. Exceptions will be noted here. [https://second.life/calendar SL Public Calendar]&lt;br /&gt;
&lt;br /&gt;
== Upcoming meetings ==&lt;br /&gt;
&lt;br /&gt;
Location: meetings are held on the main grid at http://maps.secondlife.com/secondlife/Hippotropolis/71/172/29&lt;br /&gt;
&lt;br /&gt;
The meeting schedule is maintained on the [https://second.life/calendar SL Public Calendar]&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
* Open Q&amp;amp;A&lt;br /&gt;
&lt;br /&gt;
Notes&lt;br /&gt;
* Animesh is out as the default viewer should work everywhere. [https://wiki.secondlife.com/wiki/Animesh_User_Guide user guide], [https://community.secondlife.com/forums/forum/354-animesh/ forum]&lt;br /&gt;
* Bakes On Mesh is out as the default viewer, should work everywhere. [https://community.secondlife.com/knowledgebase/english/bakes-on-mesh-r1512/ knowledge base], [https://community.secondlife.com/forums/forum/355-bakes-on-mesh/ forum]&lt;br /&gt;
* Project EEP, which gives advanced configurable windlight environments for regions and parcels, is out as as the default viewer and supported everywhere. See [https://community.secondlife.com/forums/topic/428374-environmental-enhancement-project-aka-eep-feedback-thread/ the forum thread] for details.&lt;br /&gt;
* ARCTan, a project to update rendering cost, land impact, and related things like mesh upload costs, is in progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--======================== Please do not edit above this line ====================== Nal U.&lt;br /&gt;
Feel free to add any content creation related topic to the end of this agenda&lt;br /&gt;
by adding a numbered list entry; &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== User Questions &amp;amp; Topics ===&lt;br /&gt;
&amp;lt;!-- Copied here for those that only edit ONLY this section.&lt;br /&gt;
Copy the following line to the end of the list below and change &#039;topic&#039; to your topic; the ~~~ will be replaced with your name:_____, Also leave no blank/empty lines between # lines.&lt;br /&gt;
# topic (~~~) &lt;br /&gt;
&lt;br /&gt;
If you refer to a Jira issue, please use the template like this:&lt;br /&gt;
  {{JiraIssue|id|description}}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Newbie_Test&amp;diff=1209821</id>
		<title>Newbie Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Newbie_Test&amp;diff=1209821"/>
		<updated>2021-01-13T21:58:38Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Newbie&amp;#039;s Experience */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OSWikiFeatureNav|parent=First Login}}&lt;br /&gt;
[[Category:Test Scripts]]&lt;br /&gt;
&lt;br /&gt;
= Newbie&#039;s Experience =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
* Create a new user account using the usertool or via secondlife.com.&lt;br /&gt;
** for this test, skip the avatar selection test when signing up via secondlife.com.&lt;br /&gt;
** for this test, skip the part that gives you some L$.&lt;br /&gt;
* Uninstall all versions of Second Life to clear all settings and cache files. &lt;br /&gt;
* Install Second Life.&lt;br /&gt;
&lt;br /&gt;
* This test requires a second user which does not need to be new.&lt;br /&gt;
&lt;br /&gt;
== Log on to the new account. ==&lt;br /&gt;
&lt;br /&gt;
* After logging in you should see the Terms of Service Agreement. Accept it.&lt;br /&gt;
&lt;br /&gt;
* A Critical Messge containing Second Life Community Standards should appear. Click &amp;quot;Continue&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* You will continue to log in and be asked if you wish to play streaming media.&lt;br /&gt;
&lt;br /&gt;
* You should see a dialog asking you to choose a gender. (If you have selected this at the registration page, this option is not available)&lt;br /&gt;
&lt;br /&gt;
* Click one of the buttons to choose a gender.&lt;br /&gt;
&lt;br /&gt;
* The &amp;quot;Play Music&amp;quot;/&amp;quot;Disable&amp;quot; modeless dialog is now visible. Click the &amp;quot;Play Music&amp;quot; button. Verify you hear something.&lt;br /&gt;
&lt;br /&gt;
* Press the F1 key to open Help, Read thru several pages of online help and verify links/buttons work and are correct.&lt;br /&gt;
&lt;br /&gt;
* Verify Home takes you to a help index page listing the various help topics available.&lt;br /&gt;
&lt;br /&gt;
* Verify the &amp;quot;Back&amp;quot; and &amp;quot;Forward&amp;quot; buttons behave as expected for a browser&lt;br /&gt;
&lt;br /&gt;
* Check that previously visited links are highlighted in a different color. (this no longer happens. should it?)&lt;br /&gt;
&lt;br /&gt;
* Close the help. &lt;br /&gt;
&lt;br /&gt;
* Click on Help/Message of the Day. Verify that multiple clicks will not bring up multiple copies.    (this doesn&#039;t exist? -[[User:Maestro Linden|Maestro Linden]] 14:47, 9 October 2008 (PDT))&lt;br /&gt;
&lt;br /&gt;
* Check the build/sim info is correct from the Help/About SecondLife... Verify that multiple clicks will not bring up multiple copies.&lt;br /&gt;
&lt;br /&gt;
* Verify that you are in a Orientation Island / Help Island sim at an appropriate start location.&lt;br /&gt;
&lt;br /&gt;
* Check your Edit/Preference, they should all have default values. (this should be detailed and tested in some other test)&lt;br /&gt;
&lt;br /&gt;
* Verify you are the gender you chose, you are fully clothed &amp;amp; you look good.&lt;br /&gt;
&lt;br /&gt;
* Check your profile. See that the name is correct and all data fields are empty. Your reputation should be zero.&lt;br /&gt;
&lt;br /&gt;
* Verify your World/Account History with correct name, data &amp;amp; balance of L$0. Verify balance matches what is shown at top right of screen.&lt;br /&gt;
&lt;br /&gt;
* Verify you cannot create objects at the start location.&lt;br /&gt;
&lt;br /&gt;
* Verify the minimap is open. (it&#039;s not. should it be?)&lt;br /&gt;
&lt;br /&gt;
* Verify you appear on the minimap as a green dot. (you should appear as a &#039;&#039;yellow&#039;&#039; dot with a white center... -Merov)&lt;br /&gt;
&lt;br /&gt;
* Open you Inventory by clicking the Inventory button.&lt;br /&gt;
&lt;br /&gt;
* Verify that the Inventory contains the following folder in alphabetically order. Animations, Body Parts, Calling Cards, Clothing, Gestures, Landmarks, Lost And Found, Notecards, Objects, Photo Album, Scripts, Textures, Trash. (These have changed slightly, trash is now lost&amp;amp;found, also now have sounds folder - Pixel 1/14/2010)&lt;br /&gt;
&lt;br /&gt;
* Check that you can wear the shapes in the inventory/Body Parts ( no body parts in user inventory, so tried wearing Library inventory body parts instead. - Pixel 1/14/2010)&lt;br /&gt;
&lt;br /&gt;
* Verify you have no calling cards.&lt;br /&gt;
&lt;br /&gt;
* Check that you can wear all the clothing in the inventory/clothing folder and the descriptions are correct. ( no outfits in user inventory, so tried wearing Library inventory outfits instead. - Pixel 1/14/2010)&lt;br /&gt;
&lt;br /&gt;
* Verify that there is a Welcome Note in the Library/Note Cards folder, and that you can read it.&lt;br /&gt;
&lt;br /&gt;
* Verify that there are several snapshots in the Library/Photo Album folder, and that you can view them.&lt;br /&gt;
 &lt;br /&gt;
* Verify that there is a Rotation Script in the Library/Scripts folder, and that you can read it.&lt;br /&gt;
&lt;br /&gt;
* Verify a few of the textures in Library/Texture subfolders have correct descriptions and can be viewed.&lt;br /&gt;
&lt;br /&gt;
* Verify trash in inventory is empty. (assuming trash == lost and found - Pixel 1/14/2010)&lt;br /&gt;
&lt;br /&gt;
* Teleport off Orientation Island to mainland using the Library/Landmarks/Welcome Area on Mainland landmark.&lt;br /&gt;
&lt;br /&gt;
* Rez out each object from the Library/Objects inventory: examine each object is intact, looks right and has correct name &amp;amp; description&lt;br /&gt;
&lt;br /&gt;
* Verify all inventory scripted objects work accordingly&lt;br /&gt;
&lt;br /&gt;
* Delete all rezed objects&lt;br /&gt;
&lt;br /&gt;
* Verify all audio sounds works in Library/Sounds inventory&lt;br /&gt;
&lt;br /&gt;
* Verify a few randomly sampled gestures work in the Active Gesture window.&lt;br /&gt;
&lt;br /&gt;
* Teleport Home using World/Teleport Home&lt;br /&gt;
&lt;br /&gt;
== Appearance: ==&lt;br /&gt;
&lt;br /&gt;
* Login in with two accounts A and B&lt;br /&gt;
&lt;br /&gt;
* With B observing A and vice versa, verifying each step&lt;br /&gt;
&lt;br /&gt;
* A: Right click your Avatar, click on appearance. Save the current appearance by clicking on Make Outfit/Ruth. Verify that a folder named Ruth is created in the Inventory/Clothing folder.&lt;br /&gt;
&lt;br /&gt;
* A: Create 4 new outfits:2 Males: Male-tall and Male-short and 2 Females: Female-fat and Female-skinny. Verify all 4 outfits are created in inventory/Clothing folder in alphabetical order&lt;br /&gt;
&lt;br /&gt;
* A: Interchange the outfits by dragging the whole folder from inventory to the avatar.&lt;br /&gt;
&lt;br /&gt;
* A: Verify that items you are wearing are identified by a &amp;quot;(worn)&amp;quot; behind it&lt;br /&gt;
&lt;br /&gt;
* A: Take off worn clothing items by right-clicking on the items from inventory/Clothing and click on &amp;quot;Take off of Avatar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A: Verify that you cannot take off body parts that you are wearing.&lt;br /&gt;
&lt;br /&gt;
* A: Try on single items by double clicking on item from Inventory/body Parts and Inventory/Clothing &lt;br /&gt;
&lt;br /&gt;
* A: try on single pieces of body parts/clothing by right-clicking on items from Inventory/body Parts and Inventory/Clothing and click on &amp;quot;Wear on Avatar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A: Delete some clothing items and verify they are moved to trash&lt;br /&gt;
&lt;br /&gt;
* A: Verify you can not delete items that you are currently wearing&lt;br /&gt;
&lt;br /&gt;
* A: Verify you cannot move items that you are currently wearing into trash.&lt;br /&gt;
&lt;br /&gt;
* A: Verify you can not delete/move to trash, the clothing folder that you are currently wearing&lt;br /&gt;
&lt;br /&gt;
* A: offer individual items in body parts and clothing to B by dragging the items to B&lt;br /&gt;
&lt;br /&gt;
* B: accepts some and denies some. Open the inventory window and verify items that are accepted end up in the clothing folder&lt;br /&gt;
&lt;br /&gt;
* B: Try on the newly accepted items.&lt;br /&gt;
&lt;br /&gt;
* A: offer the 4 newly created outfits to B by dragging the folders one at a time to B&lt;br /&gt;
&lt;br /&gt;
* B: Accept 3 outfits: 2 male, and the Female-fat and deny Female-skinny. B should have 3 new folders of clothing. in inventory&lt;br /&gt;
&lt;br /&gt;
* B: Verify that the accepted folders are in inventory&#039;s top level, and they contain exactly the same items in A&#039;s inventory&lt;br /&gt;
&lt;br /&gt;
* B: Try on all 3 new outfits. Make sure they come out correct&lt;br /&gt;
&lt;br /&gt;
* B: Delete Female-fat folder and empty trash in inventory&lt;br /&gt;
&lt;br /&gt;
* A: Logout. Re-install SecondLife. Log back in. Verify you look the same&lt;br /&gt;
&lt;br /&gt;
* B: Check out A and make sure it looks the same before and after logout./in.&lt;br /&gt;
&lt;br /&gt;
* A: Verify your contents in the inventory are the same&lt;br /&gt;
&lt;br /&gt;
* A: Try on all the outfits again. Make sure they come out correct.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tracking: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* A: Right-click B and Add friend&lt;br /&gt;
&lt;br /&gt;
* B: Accept A&#039;s friendship&lt;br /&gt;
&lt;br /&gt;
* A+B: Open the Friends window, click on the other&#039;s name and enable &amp;quot;Can see me on the map&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* A+B: Verify that your calling card folder indicates B/A online and B/A&#039;s names are enabled in Map/Tracking drop down menu&lt;br /&gt;
&lt;br /&gt;
* A: Logout&lt;br /&gt;
&lt;br /&gt;
* B: Verify A in calling card folder says offline, and A in Map/Tracking drop down menu is disabled.&lt;br /&gt;
&lt;br /&gt;
* A: Log back in&lt;br /&gt;
&lt;br /&gt;
* A+B: Same state as #68&lt;br /&gt;
&lt;br /&gt;
* A: Fly a to a different region&lt;br /&gt;
&lt;br /&gt;
* B: Track A from Map/Tracking as a red circle on the map&lt;br /&gt;
&lt;br /&gt;
* A: Fly across a boundary&lt;br /&gt;
&lt;br /&gt;
* B: Verify the red circle moves according to A&#039;s motion/direction&lt;br /&gt;
&lt;br /&gt;
* B: Follow A by flying in the direction of the red arrow on your screen. See that the green dot approaches the red circle on the map.&lt;br /&gt;
&lt;br /&gt;
* B: When the green dot meets the red circle, look for a red column entrapping A&lt;br /&gt;
&lt;br /&gt;
* A: Fly across two regions&lt;br /&gt;
&lt;br /&gt;
* B: Follow A by click on the name A from the Map&#039;s Tracking pull down menu. Fly in the direction of the red arrow to reach A&lt;br /&gt;
	&lt;br /&gt;
* B: See the green dot approaching the red circle on the map. When you stop flying, look for a red column entrapping A&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Attachments: ==&lt;br /&gt;
 &lt;br /&gt;
With B observing A and verifying each step&lt;br /&gt;
&lt;br /&gt;
* A: Rez in the party hat, attach it to your head&lt;br /&gt;
&lt;br /&gt;
* A: Edit the party hat while still attached to the head. Make it bigger, change the color and wear it tilted on the side of the head&lt;br /&gt;
&lt;br /&gt;
* A: Rez in the parrot. Attach it to your shoulder&lt;br /&gt;
&lt;br /&gt;
* A: Rez in the popgun. Follow the instructions and learn how to attach, target and shoot it. &lt;br /&gt;
&lt;br /&gt;
* B: Rez in the hand lamp, attach it to your right hand. Make it bigger change the color and rotate it.&lt;br /&gt;
&lt;br /&gt;
* B: Detach it and attach it back to the right hand. Make sure it goes back to the previous state.&lt;br /&gt;
&lt;br /&gt;
* A: fly to a different region. Verify that your attachments: hat, Pop gun and Parrot are still in the same state&lt;br /&gt;
&lt;br /&gt;
* B: follow A and make sure A looks the same before and after crossing region&lt;br /&gt;
&lt;br /&gt;
* A: Teleport to the Boardwalk from the Inventory/landmark. &lt;br /&gt;
&lt;br /&gt;
* A: Verify that your attachments: hat, Pop gun and Parrot are still intact&lt;br /&gt;
&lt;br /&gt;
* B: follow A by teleporting and make sure A looks the same &lt;br /&gt;
&lt;br /&gt;
* A: log out and log back in, make sure all the attachments stay the same&lt;br /&gt;
&lt;br /&gt;
* B: check that A looks the same before and after logout/login&lt;br /&gt;
&lt;br /&gt;
* B: Fly away from the A until A is not in focus. Fly back to A, check that A looks the same with the attachments&lt;br /&gt;
&lt;br /&gt;
* A: Go back home using World/Teleport Home. &lt;br /&gt;
&lt;br /&gt;
* A: Verify that your attachments: hat, Pop gun and Parrot are still intact&lt;br /&gt;
&lt;br /&gt;
* B: follow A by teleporting and make sure A looks the same &lt;br /&gt;
&lt;br /&gt;
* B: create a box, and sit on it&lt;br /&gt;
&lt;br /&gt;
* A: sit on the box next to B, verify the attachments are still good&lt;br /&gt;
&lt;br /&gt;
* A: Get up. Verify the attachments are still good&lt;br /&gt;
&lt;br /&gt;
* B: Verify A&#039;s attachments are still good&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Profile: ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* A: click on pie menu/my profile and start modifying your profile. Click OK to save&lt;br /&gt;
&lt;br /&gt;
* B: Check A&#039;s profile, make sure it&#039;s updated.&lt;br /&gt;
&lt;br /&gt;
* A: log out and log back in. check that the profile is preserved.&lt;br /&gt;
&lt;br /&gt;
* B: Verify A&#039;s profile is the same before A&#039;s login and logout.&lt;br /&gt;
&lt;br /&gt;
* A: Modify the profile. Click OK, and close. Reopen to see the updates.&lt;br /&gt;
&lt;br /&gt;
* B: Verify A&#039;s profile is updated appropriately.&lt;br /&gt;
&lt;br /&gt;
== Clean up ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* B: Get up and delete the box. Detach the hand lamp, delete it. Empty the trash&lt;br /&gt;
&lt;br /&gt;
* A: detach the popgun, the parrot and the hat. Delete them all. Empty the trash&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Third_Party_Viewer_Directory/Kokua&amp;diff=1209818</id>
		<title>Third Party Viewer Directory/Kokua</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Third_Party_Viewer_Directory/Kokua&amp;diff=1209818"/>
		<updated>2021-01-11T21:53:29Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{TPVD-Icon|Kokua}} Kokua==&lt;br /&gt;
&lt;br /&gt;
{{TPVD-Detail&lt;br /&gt;
|home=https://kokua.atlassian.net/wiki/spaces/KKA/overview?mode=global&lt;br /&gt;
|privacy=https://kokua.atlassian.net/wiki/spaces/KKA/pages/15237184/Privacy+Policy&lt;br /&gt;
|download=https://kokua.atlassian.net/wiki/spaces/KKA/pages/15237201/Downloads&lt;br /&gt;
|source=https://bitbucket.org/kokua&lt;br /&gt;
|supportemail=chorazinallen&#039;&#039; at &#039;&#039;gmail&#039;&#039; dot &#039;&#039; com&lt;br /&gt;
|slcontact=Chorazin Allen&lt;br /&gt;
|rlcontact=&lt;br /&gt;
|platforms={{TPVD-Platform|Windows|showtext=1}}{{TPVD-Platform|MacOS|showtext=1}}{{TPVD-Platform|Linux|showtext=1}}{{TPVD-Platform|Linux64|showtext=1}}&lt;br /&gt;
}}&lt;br /&gt;
Kokua provides releases for PC, Mac and Linux with and without Marine Kelley&#039;s RLV together with a broad selection of original features and the best from other viewers.&lt;br /&gt;
&lt;br /&gt;
Kokua aims to be the viewer of choice for RLV users who want Marine Kelley&#039;s original implementation with more bells and whistles than Marine&#039;s own viewer.&lt;br /&gt;
&lt;br /&gt;
{{TPVD-Footer}}&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1209324</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1209324"/>
		<updated>2020-05-28T00:27:27Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Rendering with Normal Maps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing word &#039;KART&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no word &#039;KART&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should not have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208773</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208773"/>
		<updated>2019-10-15T22:27:15Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Media, Planar mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing word &#039;KART&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no word &#039;KART&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should only have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners when there is a direct reflection from a light source (you have to move your camera around to see it).&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208597</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208597"/>
		<updated>2019-07-03T22:34:04Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Emissive Mask */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing word &#039;KART&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no word &#039;KART&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should only have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners when there is a direct reflection from a light source (you have to move your camera around to see it).&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208596</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208596"/>
		<updated>2019-07-03T22:33:42Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* No Mask (on a texture with an alpha channel) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing &#039;KART&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no word &#039;KART&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque word &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should only have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners when there is a direct reflection from a light source (you have to move your camera around to see it).&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208595</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208595"/>
		<updated>2019-07-03T22:31:56Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Emissive Mask */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with &amp;quot;KART&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing &#039;KART&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque &#039;KART&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_G_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a &amp;quot;G&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no &#039;G&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque &#039;G&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should only have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners when there is a direct reflection from a light source (you have to move your camera around to see it).&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Kart_screenshot_with_KART_alpha.png&amp;diff=1208594</id>
		<title>File:Kart screenshot with KART alpha.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Kart_screenshot_with_KART_alpha.png&amp;diff=1208594"/>
		<updated>2019-07-03T22:28:46Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208581</id>
		<title>Viewer Materials Smoke Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&amp;diff=1208581"/>
		<updated>2019-07-03T00:00:49Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Texture Mapping: Diffuse texture, Default mode */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
* This test plan covers viewer-side support for the prim materials project, which provides support for normal maps and specular maps applied to object faces&lt;br /&gt;
* A high-level specification of this featureset can be found at [[Material_Data]]&lt;br /&gt;
&lt;br /&gt;
= Build Tool Test =&lt;br /&gt;
&lt;br /&gt;
== Required Materials ==&lt;br /&gt;
* A region which supports normal and specular maps&lt;br /&gt;
** As of [[Release_Notes/Second_Life_Server/13#13.02.08.270166|Second Life Server 13.02.08.270166]], materials support is in the server.&lt;br /&gt;
* Three test users&lt;br /&gt;
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) &lt;br /&gt;
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that build tool edits sent by UserA&#039;s viewer produce congruent results&lt;br /&gt;
** UserC, who uses an &#039;old&#039; (no support for normal and specular maps) viewer, and only observes the results of UserA&#039;s work&lt;br /&gt;
*** The purpose of this user is to verify that edited content looks reasonable on legacy viewers, and sometimes to verify that build tool settings from the new viewer have the same appearance as those set by the legacy viewer.&lt;br /&gt;
** UserA and UserB should have &amp;quot;Advanced Lighting Model&amp;quot; enabled under Preferences -&amp;gt; Graphics settings, under &amp;quot;Advanced&amp;quot;.  This setting is required for the viewer to render normal and specular maps properly.&lt;br /&gt;
* Upload the following textures to use in this test:&lt;br /&gt;
** [[:File:TestDiffuse001.png]]&lt;br /&gt;
** [[:File:TestNormal001.png]]&lt;br /&gt;
** [[:File:TestSpecular001.png]]&lt;br /&gt;
&lt;br /&gt;
== Verify Basic Build Tool Layout ==&lt;br /&gt;
&lt;br /&gt;
=== Verify that non-Texture portions of the build tool have not changed ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA and UserC: each rez a box&lt;br /&gt;
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu&lt;br /&gt;
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:&lt;br /&gt;
#* General&lt;br /&gt;
#* Object&lt;br /&gt;
#* Features&lt;br /&gt;
#* Content&lt;br /&gt;
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)&lt;br /&gt;
#* Focus (magnifying glass icon)&lt;br /&gt;
#* Move (hand icon)&lt;br /&gt;
#* Edit (mouse cursor icon)&lt;br /&gt;
#* Create (magic wand icon)&lt;br /&gt;
#* Land (bulldozer icon)&lt;br /&gt;
# UserA: deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that UserA&#039;s box still looks like a default box (has not changed appearance)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values of build tool&#039;s Texture tab ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Open the Texture tab of the build tool, and verify that the layout basically matches the image here (minus colorful lines): [[:File:MaterialsBuildUI1.png]].  Verify that the following defaults are set:&lt;br /&gt;
#* Verify that &amp;quot;Materials&amp;quot; is the default face edit mode&lt;br /&gt;
#* Verify that &amp;quot;Texture (diffuse)&amp;quot; is the default texture edit mode&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that the texture preview shows the default plywood texture&lt;br /&gt;
#* Verify that &#039;Alpha mode&#039; is &#039;Alpha blending&#039;&lt;br /&gt;
#* Verify that &#039;Mask cutoff&#039; does *not* appear (this option is not applicable in this alpha mode)&lt;br /&gt;
&lt;br /&gt;
=== Verify layout and default values for Mapping option ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
#* Verify that &#039;Repeats&#039; is &#039;per face (default)&#039;&lt;br /&gt;
#** Verify that the texture mapping settings match the &#039;Mapping = default&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is *not* visible&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since no edits have been made)&lt;br /&gt;
# UserA: Reselect the box, and &#039;Edit&#039; it again&lt;br /&gt;
# UserA: Under the Texture tab, change the &#039;Mapping&#039; setting to &#039;Planar&#039;&lt;br /&gt;
#* Verify that the texture mapping settings match the &#039;Mapping = planar&#039; section in &#039;2b&#039; of this reference image: [[:File:MaterialsBuildUI1.png]]..  Verify that the following defaults are set:&lt;br /&gt;
#** Verify that &#039;Number of repeats&#039; is 2.00, and *cannot* be edited (is read-only)&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#** Verify that &#039;Align planar faces&#039; is visible, unchecked and enabled (*can* be edited)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has not changed (since the change to &#039;planar&#039; mapping by itself has no visible effect on this box)&lt;br /&gt;
&lt;br /&gt;
=== Verify build tool editing of texture settings === &lt;br /&gt;
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes &lt;br /&gt;
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Default mode====&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* Mapping: Default&lt;br /&gt;
# UserA: Create a new cube prim for use in this test.&lt;br /&gt;
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.&lt;br /&gt;
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.&lt;br /&gt;
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.&lt;br /&gt;
# UserA: Verify that if the Select Face item in the upper pane of the Tools window is selected, you can change one face of the object at a time. &lt;br /&gt;
# UserA: Verify that if you drag a texture from your Inventory window directly to the object, you can change one face of the object at a time.&lt;br /&gt;
# UserA: Apply the texture, [[:File:TestDiffuse001.png]], to a single face of the prim (while in Select Face mode). This should result in the prim having two textures. The &amp;quot;100&amp;quot; image should appear on only one face.&lt;br /&gt;
# UserA: Verify that if an object uses more than one texture, the word Multiple will appear in the Texture image box over one of the texture images.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show two textures, one on a single face the other on all other faces&lt;br /&gt;
# UserA: Verify that clicking Color box will open the Color Picker floating window. &lt;br /&gt;
# UserA: Verify that color tints selected are additive to the color of the base texture.&lt;br /&gt;
# UserA: Verify that using Transparency you can choose transparency level of the object. &lt;br /&gt;
# UserA: Verify that this setting applies an overall transparency to the texture in addition to any transparency in the alpha channel. The range is 0 to 100 percent. Set to 50%.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to show a color tint and is semi-transparent.&lt;br /&gt;
# UserA: Verify that using Glow item you can create a surface glow on the object, separate from the light emitted with the Features tab. The range is 0 to 1, but any glow above 0.1 tends to wash out the surface texture.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box&#039;s appearance has changed to add glow.&lt;br /&gt;
# UserA: Enable Full Bright.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. &lt;br /&gt;
#* (Use World &amp;gt; Sun &amp;gt; &amp;lt;time of day&amp;gt; to change sun position.)&lt;br /&gt;
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.&lt;br /&gt;
# Rez a 0.5 (default-size) cube and add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Texture Mapping: Diffuse texture, Planar mode====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Texture (diffuse)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Alpha mode&#039; option ==&lt;br /&gt;
=== No Mask is forced for textures without an alpha channel ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Take a snapshot (ctrl+S) and &#039;Save to inventory&#039;&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the snapshot as the texture on the box&lt;br /&gt;
# UserA: Verify that the &#039;Alpha mode&#039; setting is &#039;None&#039;, and that the UI for changing &#039;Alpha mode is disabled&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting is hidden&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque&lt;br /&gt;
=== Alpha Blending ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool.&lt;br /&gt;
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box&lt;br /&gt;
# UserA, UserB, and UserC: verify that you see a &#039;smooth&#039; transparency transition in the texture on all faces, with the bottom of the image being opaque and the top being transparent.  This is the expected result when the &#039;Alpha mode&#039; is set to the default &#039;Alpha blending&#039; setting&lt;br /&gt;
&lt;br /&gt;
=== Alpha Masking ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Maestro_alpha_gradient.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Alpha masking&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting appears, and that the default value for it is 0&lt;br /&gt;
# UserA, UserB: verify that the box&#039;s texture appears (almost) completely opaque&lt;br /&gt;
# UserC: verify that you see no change (since your viewer doesn&#039;t support alpha masking)&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 76&lt;br /&gt;
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 178&lt;br /&gt;
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: set the &#039;Mask cutoff&#039; setting to 255&lt;br /&gt;
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;lt; 0, and verify that they get slammed to 0 by the build tool UI&lt;br /&gt;
# UserA: Try to input &#039;Mask cutoff&#039; settings &amp;gt; 255, and verify that they get slammed to 255 by the build tool UI&lt;br /&gt;
&lt;br /&gt;
=== Emissive Mask ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_G_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a &amp;quot;G&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;Emissive mask&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, but there should be a glowing &#039;G&#039; in the texture.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque &#039;G&#039;)&lt;br /&gt;
&lt;br /&gt;
=== No Mask (on a texture with an alpha channel) ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Upload this alpha-mapped image to your inventory (if you don&#039;t already have it): [[:File:Kart_screenshot_with_G_alpha.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.  Open the Texture tab of the build tool, and set the texture to the one you just uploaded.&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a &amp;quot;G&amp;quot; in the middle as an opaque section&lt;br /&gt;
# UserA: Set the &#039;Alpha mode&#039; to &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mask cutoff&#039; setting remains hidden&lt;br /&gt;
# UserA and UserB: verify that the box&#039;s appearance has changed.  The whole texture should be opaque, and no &#039;G&#039; should be visible.&lt;br /&gt;
# UserC: verify that the box&#039;s appearance has not changed (and you just see the image as mostly transparent with the opaque &#039;G&#039;)&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Bumpiness&#039; settings ==&lt;br /&gt;
=== Layout of Bumpiness settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like the &#039;Materials &amp;gt; Normal&#039; section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
#* Verify that the &#039;Bumpiness&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Bumpiness ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Bumpiness menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Brightness&lt;br /&gt;
#* Darkness&lt;br /&gt;
#* woodgrain&lt;br /&gt;
#* bark&lt;br /&gt;
#* bricks&lt;br /&gt;
#* checker&lt;br /&gt;
#* concrete&lt;br /&gt;
#* crustytile&lt;br /&gt;
#* cutstone&lt;br /&gt;
#* discs&lt;br /&gt;
#* gravel&lt;br /&gt;
#* petridish&lt;br /&gt;
#* siding&lt;br /&gt;
#* stonetile&lt;br /&gt;
#* stucco&lt;br /&gt;
#* suction&lt;br /&gt;
#* weave&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# For each of the bumpiness menu options *except* for &#039;None&#039;, do the following:&lt;br /&gt;
#* UserA and UserC: select the same bumpiness menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Bumpiness (normal)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; is now set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.  You should see a large &#039;001&#039; in the middle, due to the normal map effect.&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: From the &#039;Bumpiness&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect&lt;br /&gt;
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the normal map you selected&lt;br /&gt;
# UserA: Verify that &#039;Bumpiness&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no normal map effect&lt;br /&gt;
&lt;br /&gt;
=== Normal Map Texture mapping ===&lt;br /&gt;
====Normal texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Bumpiness (normal)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestNormal001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Bumpiness (normal)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of normal map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Shininess&#039; settings ==&lt;br /&gt;
&lt;br /&gt;
=== Layout of Shininess settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA: Verify the following default settings:&lt;br /&gt;
#* Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
#* Verify that the &#039;Shininess&#039; setting is currently &#039;None&#039;&lt;br /&gt;
#* Verify that &#039;Glossiness&#039; is hidden in this mode&lt;br /&gt;
#* Verify that &#039;Environment&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Color&#039; is hidden in this mode&lt;br /&gt;
#* Verify that the &#039;Mapping&#039; setting is &#039;Default&#039;, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical scale&#039; is 1.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Repeats per meter&#039; is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited&lt;br /&gt;
#* Verify that &#039;Rotation&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Horizontal offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Vertical offset&#039; is 0.0, and cannot be edited&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is disabled, and cannot be edited&lt;br /&gt;
# UserA: Deselect the object&lt;br /&gt;
# UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
&lt;br /&gt;
=== Legacy Shiny ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that you see the following options under the Shininess menu:&lt;br /&gt;
#* None&lt;br /&gt;
#* Low&lt;br /&gt;
#* Medium&lt;br /&gt;
#* High&lt;br /&gt;
# UserC: Rez a box and edit it with the build tool&lt;br /&gt;
# Do the following for Shininess settings &#039;Low&#039;, &#039;Medium&#039;, and &#039;High&#039;:&lt;br /&gt;
#* UserA and UserC: select the same Shininess menu option for your object&#039;s texture&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that UserA&#039;s box has the same appearance as UserC&#039;s box&lt;br /&gt;
#* UserA: Verify that all of the texture mapping controls (scale, offset, rotation, align planar faces, etc.) are disabled in the UI (grayed out) when in this mode&lt;br /&gt;
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.&lt;br /&gt;
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back&lt;br /&gt;
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture Selection ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot; &lt;br /&gt;
# UserA: Verify that the Texture preview is empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no specular map is set)&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; is now set to &amp;quot;Use texture&amp;quot;&lt;br /&gt;
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]&lt;br /&gt;
#** Verify that Glossiness has a default value of 51&lt;br /&gt;
#** Verify that Environment has a default value of 0&lt;br /&gt;
#** Verify that Color defaults to white&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.&lt;br /&gt;
#* The stained parts and the scratches should be less shiny than other parts of the texture&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no shiny effect&lt;br /&gt;
# UserA: From the &#039;Shininess&#039; menu, choose &#039;None&#039;&lt;br /&gt;
# UserA: Verify that the Texture preview is now empty, with a black-on-grey &amp;quot;X&amp;quot; (indicating that no normal map is set)&lt;br /&gt;
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon&lt;br /&gt;
# UserA: Verify that the Texture preview shows the specular map you selected&lt;br /&gt;
# UserA: Verify that &#039;Shininess&#039; becomes set to &amp;quot;Use Texture&amp;quot;&lt;br /&gt;
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Glossiness and Environment ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: if you don&#039;t already have them in your inventory, upload these two textures to SL&lt;br /&gt;
#* [[:File:TestDiffuse001.png]]&lt;br /&gt;
#* [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool.&lt;br /&gt;
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Texture (diffuse)&amp;quot; to &amp;quot;Shininess (specular)&amp;quot;&lt;br /&gt;
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker&lt;br /&gt;
# UserA and UserB: verify that you see the object with the specular map applied&lt;br /&gt;
# UserC: Verify that you can see the diffuse texture, but no specular map effect&lt;br /&gt;
# UserA: Verify these default settings:&lt;br /&gt;
#* Glossiness should be 51&lt;br /&gt;
#* Environment should be 0&lt;br /&gt;
# UserA: Increase the Environment setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter an Environment setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
# UserA: Increase the Glossiness setting to 204&lt;br /&gt;
# UserA and UserB: Verify that the specular highlights are now more &#039;blurred&#039;&lt;br /&gt;
# UserC: verify that you see no change&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;gt; 255, and verify that the UI slams it to 255&lt;br /&gt;
# UserA: Try to enter a Glossiness setting &amp;lt; 0, and verify that the UI slams it to 0&lt;br /&gt;
&lt;br /&gt;
=== Specular Map Texture mapping ===&lt;br /&gt;
====Specular texture, Default mapping====&lt;br /&gt;
# Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* &#039;&#039;&#039;Shininess (specular)&#039;&#039;&#039;&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: change the prim&#039;s texture to [[:File:TestSpecular001.png]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
====Normal texture, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Set [[:File:TestDiffuse001.png]] as the diffuse map, via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Materials&lt;br /&gt;
#* Shiniiness (specular)&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of specular map repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Verify functionality of &#039;Media&#039; settings ==&lt;br /&gt;
=== Layout and Default Values of Media Settings ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png&lt;br /&gt;
# UserA: Verify that the following defaults are set:&lt;br /&gt;
#* Verify that the Color appears white&lt;br /&gt;
#* Verify that Transparency is 0%&lt;br /&gt;
#* Verify that Glow is 0.00&lt;br /&gt;
#* Verify that &#039;Full Bright&#039; is disabled&lt;br /&gt;
#* Verify that &#039;Mapping&#039; is &#039;Default&lt;br /&gt;
#** Verify that &#039;Horizontal scale&#039; and &#039;Vertical scale&#039; are both 1.00&lt;br /&gt;
#** Verify that &#039;Repeats per meter&#039; is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited&lt;br /&gt;
#** Verify that &#039;Rotation&#039; is 0.00&lt;br /&gt;
#** Verify that &#039;Horizontal offset&#039; and &#039;Vertical offset&#039; are both 0.00&lt;br /&gt;
#* Verify that &#039;Align planar faces&#039; is unchecked and cannot be edited (is &#039;greyed out&#039;)&#039;&lt;br /&gt;
#  UserA, UserB, UserC: verify that the box&#039;s appearance is unchanged (was not accidentally edited)&lt;br /&gt;
=== Adding, and removing, and aligning media ===&lt;br /&gt;
# UserA, UserB, and UserC: login&lt;br /&gt;
# UserA: Rez a box, select it, and hit &#039;Edit&#039; to open the build tool&lt;br /&gt;
# UserA: Change your selection mode to &amp;quot;Select Face&amp;quot; and select only the top face&lt;br /&gt;
# UserA: In the Texture tab, change the edit mode from &amp;quot;Materials&amp;quot; to &amp;quot;Media&amp;quot;.  &lt;br /&gt;
# UserA: Click on the &amp;quot;Choose..&amp;quot; button, and verify that the &amp;quot;MEDIA SETTINGS&amp;quot; floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]&lt;br /&gt;
# UserA: Type &amp;quot;http://secondlife.com&amp;quot; into the Home Page text field in &amp;quot;MEDIA SETTINGS&amp;quot;, and hit &amp;quot;Apply&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box&#039;s top face&lt;br /&gt;
# UserA: Change the &#039;Horizontal offset&#039; value to 0.2&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset&lt;br /&gt;
# UserA: Click on the &#039;Align&#039; button to align the website with the box&#039;s edges&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;No&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged&lt;br /&gt;
# UserA: Click on the &#039;Remove&#039; button to remove the prim media&lt;br /&gt;
# UserA: Verify that you see a modal dialog, asking to confirm media removal.  Click &amp;quot;Yes&amp;quot;&lt;br /&gt;
# UserA, UserB, and UserC: Verify that the SL website has disappeared from the box, and that the changed face is back to the default plywood texture&lt;br /&gt;
&lt;br /&gt;
===Media Texture Mapping ===&lt;br /&gt;
====Media, Default mapping====&lt;br /&gt;
# UserA, UserB, UserC: login&lt;br /&gt;
# UserA: Rez a box, and edit one of its faces with the Build Tool&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#* &#039;&#039;&#039;Mapping: Default&#039;&#039;&#039;&lt;br /&gt;
# UserA: Add media to a face on the box, using &amp;quot;http://secondlife.com&amp;quot;, as in [[#Layout_and_Default_Values_of_Media_Settings]]&lt;br /&gt;
# UserA: set Horizontal Scale to 2&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value has automatically changed to 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.&lt;br /&gt;
# UserA: set Vertical Scale to 2&lt;br /&gt;
# UserA: set Vertical Offset to 0.5&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale plus the Vertical Scale: 4 repeats in a 2x2 grid&lt;br /&gt;
# UserA: set Horizontal Scale to 1&lt;br /&gt;
# UserA: set Horizontal offset to 0&lt;br /&gt;
# UserA: Verify Repeats per Meter value remains at 4.0&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, one above the other.&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode&lt;br /&gt;
&lt;br /&gt;
==== Media, Planar mapping====&lt;br /&gt;
# UserA, UserB, UserC: Login&lt;br /&gt;
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add &amp;lt;test texture&amp;gt; via the texture picker.&lt;br /&gt;
# UserA: Set the Texture panel&#039;s dropdowns to read:&lt;br /&gt;
#* Media&lt;br /&gt;
#** &#039;&#039;&#039;Mapping: Planar&#039;&#039;&#039;&lt;br /&gt;
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active&lt;br /&gt;
# Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add the texture [[:File:TestDiffuse001.png]] via the texture picker.&lt;br /&gt;
# UserA: Set Horizontal Scale to 4&lt;br /&gt;
# UserA: Set Vertical Scale to 6&lt;br /&gt;
# UserA: Verify that the read-only Repeats Per Meter changed to 3.0  (yes, this is screwy, but it seems to match the release viewer)&lt;br /&gt;
# UserA: set horizontal offset to 0.5&lt;br /&gt;
# UserA: set Vertical offset to 0.5&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically&lt;br /&gt;
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.&lt;br /&gt;
# UserA: Deselect the box&lt;br /&gt;
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.&lt;br /&gt;
# &#039;&#039;&#039;Align Planar Faces test TBD&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= Materials Loading Test =&lt;br /&gt;
This test verifies that the viewer can fetch materials data and render it properly.&lt;br /&gt;
&lt;br /&gt;
== Obtaining Test Objects ==&lt;br /&gt;
This test requires using 2 test objects which each contain many materials.&lt;br /&gt;
&lt;br /&gt;
Some prepared test objects can be found at [http://maps.secondlife.com/secondlife/Bug%20Island/148/18/27 Bug Island].  There are 2 test linksets, each containing 50 unique materials:&lt;br /&gt;
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.&lt;br /&gt;
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.&lt;br /&gt;
&lt;br /&gt;
Both link sets have prims that spin with llTargetOmega(), in order to make the specular maps more visible.  You can modify the script in the root prim to remove this effect.&lt;br /&gt;
&lt;br /&gt;
== Materials load when rezzed ==&lt;br /&gt;
# Log in&lt;br /&gt;
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border&lt;br /&gt;
# Rez &#039;MaterialsObject01-50&#039; in the region your avatar is in&lt;br /&gt;
# Without much delay, rez &#039;MaterialsObject51-100&#039; in the neighboring region&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects&lt;br /&gt;
&lt;br /&gt;
== Materials load upon login ==&lt;br /&gt;
# Complete the [[#Materials_load_when_rezzed]] test first&lt;br /&gt;
# Log out&lt;br /&gt;
# Login to the location where the objects were rezzed&lt;br /&gt;
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner&lt;br /&gt;
#* This should be relatively fast, since the viewer should have these textures in its cache&lt;br /&gt;
&lt;br /&gt;
= Materials Rendering Test =&lt;br /&gt;
&#039;&#039;Note: The following sections should be completed both above and below water. There is a trench directly to the west that replicates all test cases under water&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Rendering of Legacy Bumpmaps and Shiny ==&lt;br /&gt;
&#039;&#039;Note: this was lifted from [[Render_Correctness_Test]]&#039;&#039;&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23&lt;br /&gt;
# Set your shaders and sun position as indicated on the red sphere at that location.&lt;br /&gt;
# Verify the spheres render the same as they appear in the picture at that location.&lt;br /&gt;
# Continue testing at the 5 stations to the South.&lt;br /&gt;
# Repeat test with &#039;Advanced Lighting Model&#039; from graphics preferences both enabled and disabled (where allowed)&lt;br /&gt;
#* It is expected that &#039;Advanced Lighting Model&#039; can only be enabled if both &#039;Basic Shaders&#039; and &#039;Atmospheric Shaders&#039; settings are enabled&lt;br /&gt;
&lt;br /&gt;
==100% Transparent + Glow==&lt;br /&gt;
# Go to  http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23&lt;br /&gt;
# Set your shaders as indicated by the red sphere at that location.&lt;br /&gt;
# Verify that the sphere glows with ALM enabled.&lt;br /&gt;
# Verify that the sphere does not become opaque and black:&lt;br /&gt;
#* Under the Advanced-&amp;gt;Rendering Types menu uncheck &#039;Water&#039;&lt;br /&gt;
#* In Me-&amp;gt;Preferences-&amp;gt;Graphics uncheck and then recheck &#039;Advanced Lighting Model&#039;&lt;br /&gt;
#* The sphere should continue to glow bright white.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Note: When finished be sure to turn the water rendering back on in the Rendering Types menu&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Consistent Lighting vs Solid and Alpha Surfaces==&lt;br /&gt;
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23&lt;br /&gt;
# The white plane is actually made up of two planes linked together.&lt;br /&gt;
# The plane on the left is solid, and the plane on the right has some Transparency %.&lt;br /&gt;
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:&lt;br /&gt;
#* With Basic Shaders enabled.&lt;br /&gt;
#* With Atmospheric Shaders enabled.&lt;br /&gt;
#* With Advanced Lighting Model enabled under all Sun Settings:&lt;br /&gt;
#** Sunrise&lt;br /&gt;
#** Midday&lt;br /&gt;
#** Sunset&lt;br /&gt;
#** Midnight&lt;br /&gt;
&lt;br /&gt;
==Gamma Consistency w/ Full Bright + Alpha==&lt;br /&gt;
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23&lt;br /&gt;
# Follow the guidelines stated in the text on the red sphere at that location.&lt;br /&gt;
#* The cube with the pink circle should not be bright than the solid pink cube.&lt;br /&gt;
#* The cube with the target on it should not darken with ALM enabled.&lt;br /&gt;
&lt;br /&gt;
== Alpha Modes Rendering ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld &#039;Alpha modes sample&#039; object&lt;br /&gt;
#* &#039;Alpha blended&#039; should have a smooth transparency transition&lt;br /&gt;
#* &#039;Alpha masked&#039; should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent&lt;br /&gt;
#* &#039;Emissive mask&#039; should look bright in the areas which appear more opaque in the &#039;Alpha blended&#039; box&lt;br /&gt;
#* &#039;No Alpha&#039; should be fully opaque&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the &#039;Emissive masked&#039; box now appears the same as the &#039;No Alpha&#039; box&lt;br /&gt;
# Verify that the other boxes have not changed their basic appearance &lt;br /&gt;
&lt;br /&gt;
== Rendering with Normal Maps ==&lt;br /&gt;
# Enter the &#039;Materials rendering test room&#039; at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46&lt;br /&gt;
# Click World -&amp;gt; Sun -&amp;gt; Midday to set the viewer lighting&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm the appearance of each row roughly matches the sample screenshot on the left side.  Each Row includes a different alpha type (labelled by floating text)&lt;br /&gt;
#* The 1st row, &#039;no specular&#039;, has objects which contain a normal map but have specularity disabled.  These objects should have a totally matte appearance.&lt;br /&gt;
#* The 2nd row, &#039;low shiny&#039;, has objects which contain a normal map and use the legacy &#039;Low Shiny&#039; setting.  These objects should be slightly shiny, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 3rd row, &#039;medium shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;low shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 4th row, &#039;high shiny&#039;, has objects which contain a normal map and use the legacy &#039;Medium Shiny&#039; setting.  These objects should be slightly shinier than the &#039;medium shiny&#039; row, mostly for &#039;environment&#039; reflections.&lt;br /&gt;
#* The 5th row, &#039;0 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, but has both glossiness and environment set to 0.  These objects should look identical to the &#039;no specular&#039; row.&lt;br /&gt;
#* The 6th row, &#039;51 gloss, 0 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=0.  These objects should by mostly matte, except for shiny &#039;001&#039; sections in the upper-left and lower-right corners.&lt;br /&gt;
#* The 7th row, &#039;51 gloss, 0 env, red&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51, environment=0, and a red specular color.  These objects should appaer similar to those in the &#039;51 gloss, 0 env&#039; row, except that the shiny &#039;001&#039; parts should have a red hue.&lt;br /&gt;
#* The 8th row, &#039;51 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=51 and environment=200.  These objects should appaer metallic all over, and have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners.&lt;br /&gt;
#* The 9th row, &#039;0 gloss, 200 env&#039;, has objects which contain a normal map and the &#039;001&#039; specular map, and has both glossiness=0 and environment=200.  These objects should appear metallic all over, but should only have the shiny &#039;001&#039; lettering in the upper-left and lower-right corners when there is a direct reflection from a light source (you have to move your camera around to see it).&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Look at the wall of test objects to the East, and confirm these changes:&lt;br /&gt;
#* All &#039;emissive mask&#039; objects (far right column) now appear identical to the &#039;alpha none&#039; objects next to them&lt;br /&gt;
#* All normal maps are missing&lt;br /&gt;
#* Rows 1, 5, 6, 7, 8, 9 (that is, all except for low/medium/high shiny rows) should all look identical to each other.  None of them should appear shiny.&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;opaque&#039;, &#039;alpha none&#039;, and &#039;emissive mask&#039; objects appear identical to each other (and look shiny)&lt;br /&gt;
#* For each of rows 2-4 (low/medium/high shiny), the &#039;alpha blend&#039; and &#039;alpha mask&#039; objects all appear non-shiny&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on HUDs ==&lt;br /&gt;
Normal and specular maps should not render on objects which are attached as HUDs, due to the lack of lighting sources at the HUD layer (objects tend to render as full bright).  However, some of the new alpha modes should effect rendering of HUD objects.&lt;br /&gt;
# Take a copy of &#039;Materials test HUD&#039;, which is rezzed at http://maps.secondlife.com/secondlife/Bug%20Island%202/229/253/23 - this object is a linkset of small boxes, with plenty of floating text.&lt;br /&gt;
# Enable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Wear the &#039;Materials test HUD&#039; object from inventory.  By default, it should attach to the &#039;Center&#039; HUD attachment point&lt;br /&gt;
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set &#039;UI size&#039; to 0.75 under Preferences-&amp;gt;Advanced&lt;br /&gt;
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Verify that no normal or specular maps appear with the &#039;001&#039; pattern&lt;br /&gt;
#** The boxes labelled with &#039;X gloss, Y env&#039; should be identical to the &#039;no specular&#039; boxes on the far left column&lt;br /&gt;
#** Each of the &#039;no specular&#039; boxes on the far left column should appear identical to the non-brick &#039;Water particle 1&#039; objects on the top row&lt;br /&gt;
#** In the top row, &amp;quot;No Alpha &#039;Water Particle 1&#039; with legacy bricks&amp;quot; should look the same as &amp;quot;Emissive Masked &#039;Water Particle 1&#039; with legacy bricks&amp;quot;&lt;br /&gt;
#* Verify that &#039;Opaque &#039;001&#039; diffuse map with legacy bricks&#039; in the upper-left corner is the only box that has a visible &#039;bricks&#039; pattern (this is legacy bumpiness)&lt;br /&gt;
#* Verify that the other &#039;with legacy bricks&#039; objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled&lt;br /&gt;
#** These objects should have the same appearance as the non-&#039;brick&#039; objects on the right side of the first row&lt;br /&gt;
#* Verify that Alpha mode renders correctly&lt;br /&gt;
#** Verify that all of the &#039;opaque&#039; boxes (with the 001 texture) appear fully opaque&lt;br /&gt;
#** Verify that all of the &#039;Alpha blended&#039; objects appear alpha blended (semitransparent, with soft edges)&lt;br /&gt;
#** Verify that all of the &#039;Alpha masked&#039; objects appear alpha masked (semitransparent, with hard edges)&lt;br /&gt;
#** Verify that all &#039;emissive mask&#039; boxes match their corresponding &#039;alpha none&#039; boxes, since all HUD objects render as fully emissive (&#039;full bright&#039;)&lt;br /&gt;
#* Verify that legacy shiny objects appear darker than the others&lt;br /&gt;
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes&lt;br /&gt;
#** The shading should be more severe with increasing shiny level: &#039;high shiny&#039; objects should be darkest, while &#039;low shiny&#039; objects should not be so dark&lt;br /&gt;
# Disable &amp;quot;Advanced Lighting Model&amp;quot; in your Preferences, under Graphics-&amp;gt;Advanced&lt;br /&gt;
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]&lt;br /&gt;
#* Appearance should match what you saw when &amp;quot;Advanced Lighting Model&amp;quot; was enabled&lt;br /&gt;
&lt;br /&gt;
== Materials Rendering on Rigged Meshes ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
== Rendering of Environment and Exponent Masks ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Test Scripts]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1208320</id>
		<title>Bug Island Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1208320"/>
		<updated>2019-04-12T05:59:19Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Transparency interaction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Scripts]]&lt;br /&gt;
-In progress-&lt;br /&gt;
&lt;br /&gt;
=== Bump maps ===&lt;br /&gt;
====Bump maps look correct====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid&lt;br /&gt;
* Set Preferences &amp;gt; Graphics Quality to Mid&lt;br /&gt;
* Verify the bump map looks the same as this picture.&lt;br /&gt;
[[File:Bump_map_spheres.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Custom bump maps load for objects at a distance====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.&lt;br /&gt;
* Set Preferences &amp;gt; Graphics to Mid.&lt;br /&gt;
* Clear the cache (Preferences &amp;gt; Advanced&amp;gt; Clear Cache) and relog.&lt;br /&gt;
* Wait for the textures to load on the bumpmapped spheres.&lt;br /&gt;
* Fly to the spheres&lt;br /&gt;
* Verify the bump map looks the same as the picture above.&lt;br /&gt;
&lt;br /&gt;
====Brightness vs. Darkness bump maps====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27&lt;br /&gt;
* Set Set Preferences &amp;gt; Graphics Quality to High&lt;br /&gt;
* Verify the wood grain appears indented of the left cube and embossed on the right cube.&lt;br /&gt;
&lt;br /&gt;
=== Texture animation ===&lt;br /&gt;
&lt;br /&gt;
1.  http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27&lt;br /&gt;
A video should play on the screen in front of you shortly after you arrive. Verify the animations are cycling between the same numbers as the video. You will need to alt-zoom on the boxes to load the textures clearly.&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27&lt;br /&gt;
Verify the textures are rotating and your viewer does not experience a drop in framerate here.&lt;br /&gt;
&lt;br /&gt;
=== Target Omega ===&lt;br /&gt;
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov&lt;br /&gt;
&lt;br /&gt;
=== Dynamic texture scaling ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 1, 2, 3, 4, and 5 textures. Verify the textures scale with the objects as the objects grow taller and shorter.&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 6 texture. These objects are using Planar texture mapping. Verify the texture changes with the scale of the object, then a moment later rescales to match the object which is not scaling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prim LOD and bins ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
&lt;br /&gt;
* Go to some region other than Bug Island for at least 10 seconds.&lt;br /&gt;
* Teleport to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.&lt;br /&gt;
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
* Verify the objects from the 4 left rows appear.&lt;br /&gt;
* Verify the farthest 4 small objects in the right row do not appear.&lt;br /&gt;
&lt;br /&gt;
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Texture and color matching ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27&lt;br /&gt;
&lt;br /&gt;
* The wall of objects is made of an object with a white texture and some color next to an object with a texture of the same color and set to a white color. These should match.&lt;br /&gt;
* Verify the wall looks the same as the screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Transparency interaction ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27&lt;br /&gt;
&lt;br /&gt;
* Right-click the semitransparent objects. &lt;br /&gt;
* Verify objects with semitransparent textures, even 100% transparent, will become selected.&lt;br /&gt;
* Verify objects with face transparency (set in the texture tab) of 99% or less will become selected.&lt;br /&gt;
* Verify objects with face transparency (set in the texture tab) of 100% will allow the right-click to pass through to the object behind it.&lt;br /&gt;
&lt;br /&gt;
=== HUD (Heads Up Display) effects ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27&lt;br /&gt;
&lt;br /&gt;
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.&lt;br /&gt;
&lt;br /&gt;
Verify the following:&lt;br /&gt;
* The object does Not emit particles while attached to your HUD.&lt;br /&gt;
* The entire object is spinning from left to right.&lt;br /&gt;
* The yellow is slightly transparent.&lt;br /&gt;
* The yellow cube has one red face and 3 faces with red line.&lt;br /&gt;
* The yellow cube has 2 faces with a red &amp;quot;1&amp;quot; texture.&lt;br /&gt;
* The &amp;quot;1&amp;quot; texture on the face nearest to the red cube is animating - sliding from left to right.&lt;br /&gt;
* The red cube is shiny&lt;br /&gt;
* The red cube is spinning on an axis different than the yellow cube&lt;br /&gt;
* The red cube has bump maps&lt;br /&gt;
* The red cube has an &amp;quot;8&amp;quot; texture on one face and the other faces are the default wood texture.&lt;br /&gt;
* The black hover text is visible and is above the blue cube&lt;br /&gt;
* The blue cube is twisted&lt;br /&gt;
* The blue cube is flexible (this may be hard to see)&lt;br /&gt;
* The blue cube is shiny.&lt;br /&gt;
* The blue cube is spinning on an axis different than the yellow cube or red cube.&lt;br /&gt;
&lt;br /&gt;
=== Flexible objects ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27&lt;br /&gt;
* Verify the flexy objects look similar to the following screenshot. Note that the top left object may point in a different direction depending on the wind.&lt;br /&gt;
&lt;br /&gt;
[[File:Flexy1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)&lt;br /&gt;
&lt;br /&gt;
=== Sculpty objects ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. &lt;br /&gt;
* Make sure you Draw Distance (in Preferences &amp;gt; Graphics) is set to at least 100m so you can see the sculpty * objects at http://maps.secondlife.com/secondlife/Bug%20Island/17/100/37.  &lt;br /&gt;
* Clear your SL cache (Preferences &amp;gt; Advanced &amp;gt; Clear Cache) and relog. &lt;br /&gt;
* When the sculpties have loaded, fly to http://maps.secondlife.com/secondlife/Bug%20Island/32/99/27 and verify the sculpties look correct like the following screenshot; the shapes should be correct and not just elongated spheres, the surface textures should be loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27&lt;br /&gt;
* Verify the Scultpy objects look like this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpty1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27&lt;br /&gt;
* Set World &amp;gt; Sun &amp;gt; Midnight&lt;br /&gt;
* Set Graphics to Mid&lt;br /&gt;
* Detach any attachments that are lights.&lt;br /&gt;
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.&lt;br /&gt;
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.&lt;br /&gt;
&lt;br /&gt;
=== Small texture loading ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27&lt;br /&gt;
&lt;br /&gt;
* Verify these small textures load quickly. &lt;br /&gt;
* Verify these texture appear the same as in the picture below.&lt;br /&gt;
[[File:small_textures.png|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Parcel based media ===&lt;br /&gt;
Some of these tests require QuickTime be installed on your computer.&lt;br /&gt;
&lt;br /&gt;
Type Movie, video/mp4&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie is scaled to fill the face of the box.&lt;br /&gt;
* Go out of the parcel so the movie stops.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie covers only part of the face of the box, and the rest of the face is white.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type Web Content, text/html&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* This will look exactly the same as the previous test.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207482</id>
		<title>Bug Island Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207482"/>
		<updated>2018-08-30T05:46:10Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Prim LOD and bins */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Scripts]]&lt;br /&gt;
-In progress-&lt;br /&gt;
&lt;br /&gt;
=== Bump maps ===&lt;br /&gt;
====Bump maps look correct====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid&lt;br /&gt;
* Set Preferences &amp;gt; Graphics Quality to Mid&lt;br /&gt;
* Verify the bump map looks the same as this picture.&lt;br /&gt;
[[File:Bump_map_spheres.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Custom bump maps load for objects at a distance====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.&lt;br /&gt;
* Set Preferences &amp;gt; Graphics to Mid.&lt;br /&gt;
* Clear the cache (Preferences &amp;gt; Advanced&amp;gt; Clear Cache) and relog.&lt;br /&gt;
* Wait for the textures to load on the bumpmapped spheres.&lt;br /&gt;
* Fly to the spheres&lt;br /&gt;
* Verify the bump map looks the same as the picture above.&lt;br /&gt;
&lt;br /&gt;
====Brightness vs. Darkness bump maps====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27&lt;br /&gt;
* Set Set Preferences &amp;gt; Graphics Quality to High&lt;br /&gt;
* Verify the wood grain appears indented of the left cube and embossed on the right cube.&lt;br /&gt;
&lt;br /&gt;
=== Texture animation ===&lt;br /&gt;
&lt;br /&gt;
1.  http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27&lt;br /&gt;
A video should play on the screen in front of you shortly after you arrive. Verify the animations are cycling between the same numbers as the video. You will need to alt-zoom on the boxes to load the textures clearly.&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27&lt;br /&gt;
Verify the textures are rotating and your viewer does not experience a drop in framerate here.&lt;br /&gt;
&lt;br /&gt;
=== Target Omega ===&lt;br /&gt;
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov&lt;br /&gt;
&lt;br /&gt;
=== Dynamic texture scaling ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 1, 2, 3, 4, and 5 textures. Verify the textures scale with the objects as the objects grow taller and shorter.&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 6 texture. These objects are using Planar texture mapping. Verify the texture changes with the scale of the object, then a moment later rescales to match the object which is not scaling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prim LOD and bins ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
&lt;br /&gt;
* Go to some region other than Bug Island for at least 10 seconds.&lt;br /&gt;
* Teleport to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.&lt;br /&gt;
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
* Verify the objects from the 4 left rows appear.&lt;br /&gt;
* Verify the farthest 4 small objects in the right row do not appear.&lt;br /&gt;
&lt;br /&gt;
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Texture and color matching ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27&lt;br /&gt;
&lt;br /&gt;
* The wall of objects is made of an object with a white texture and some color next to an object with a texture of the same color and set to a white color. These should match.&lt;br /&gt;
* Verify the wall looks the same as the screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Transparency interaction ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27&lt;br /&gt;
&lt;br /&gt;
* Right-click the semitransparent objects. &lt;br /&gt;
* Verify objects with textures 87% or less transparent will become selected. &lt;br /&gt;
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.&lt;br /&gt;
&lt;br /&gt;
=== HUD (Heads Up Display) effects ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27&lt;br /&gt;
&lt;br /&gt;
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.&lt;br /&gt;
&lt;br /&gt;
Verify the following:&lt;br /&gt;
* The object does Not emit particles while attached to your HUD.&lt;br /&gt;
* The entire object is spinning from left to right.&lt;br /&gt;
* The yellow is slightly transparent.&lt;br /&gt;
* The yellow cube has one red face and 3 faces with red line.&lt;br /&gt;
* The yellow cube has 2 faces with a red &amp;quot;1&amp;quot; texture.&lt;br /&gt;
* The &amp;quot;1&amp;quot; texture on the face nearest to the red cube is animating - sliding from left to right.&lt;br /&gt;
* The red cube is shiny&lt;br /&gt;
* The red cube is spinning on an axis different than the yellow cube&lt;br /&gt;
* The red cube has bump maps&lt;br /&gt;
* The red cube has an &amp;quot;8&amp;quot; texture on one face and the other faces are the default wood texture.&lt;br /&gt;
* The black hover text is visible and is above the blue cube&lt;br /&gt;
* The blue cube is twisted&lt;br /&gt;
* The blue cube is flexible (this may be hard to see)&lt;br /&gt;
* The blue cube is shiny.&lt;br /&gt;
* The blue cube is spinning on an axis different than the yellow cube or red cube.&lt;br /&gt;
&lt;br /&gt;
=== Flexible objects ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27&lt;br /&gt;
* Verify the flexy objects look similar to the following screenshot. Note that the top left object may point in a different direction depending on the wind.&lt;br /&gt;
&lt;br /&gt;
[[File:Flexy1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)&lt;br /&gt;
&lt;br /&gt;
=== Sculpty objects ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. &lt;br /&gt;
* Make sure you Draw Distance (in Preferences &amp;gt; Graphics) is set to at least 100m so you can see the sculpty * objects at http://maps.secondlife.com/secondlife/Bug%20Island/17/100/37.  &lt;br /&gt;
* Clear your SL cache (Preferences &amp;gt; Advanced &amp;gt; Clear Cache) and relog. &lt;br /&gt;
* When the sculpties have loaded, fly to http://maps.secondlife.com/secondlife/Bug%20Island/32/99/27 and verify the sculpties look correct like the following screenshot; the shapes should be correct and not just elongated spheres, the surface textures should be loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27&lt;br /&gt;
* Verify the Scultpy objects look like this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpty1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27&lt;br /&gt;
* Set World &amp;gt; Sun &amp;gt; Midnight&lt;br /&gt;
* Set Graphics to Mid&lt;br /&gt;
* Detach any attachments that are lights.&lt;br /&gt;
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.&lt;br /&gt;
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.&lt;br /&gt;
&lt;br /&gt;
=== Small texture loading ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27&lt;br /&gt;
&lt;br /&gt;
* Verify these small textures load quickly. &lt;br /&gt;
* Verify these texture appear the same as in the picture below.&lt;br /&gt;
[[File:small_textures.png|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Parcel based media ===&lt;br /&gt;
Some of these tests require QuickTime be installed on your computer.&lt;br /&gt;
&lt;br /&gt;
Type Movie, video/mp4&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie is scaled to fill the face of the box.&lt;br /&gt;
* Go out of the parcel so the movie stops.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie covers only part of the face of the box, and the rest of the face is white.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type Web Content, text/html&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* This will look exactly the same as the previous test.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207481</id>
		<title>Bug Island Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207481"/>
		<updated>2018-08-29T06:56:53Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Parcel based media */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Scripts]]&lt;br /&gt;
-In progress-&lt;br /&gt;
&lt;br /&gt;
=== Bump maps ===&lt;br /&gt;
====Bump maps look correct====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid&lt;br /&gt;
* Set Preferences &amp;gt; Graphics Quality to Mid&lt;br /&gt;
* Verify the bump map looks the same as this picture.&lt;br /&gt;
[[File:Bump_map_spheres.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Custom bump maps load for objects at a distance====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.&lt;br /&gt;
* Set Preferences &amp;gt; Graphics to Mid.&lt;br /&gt;
* Clear the cache (Preferences &amp;gt; Advanced&amp;gt; Clear Cache) and relog.&lt;br /&gt;
* Wait for the textures to load on the bumpmapped spheres.&lt;br /&gt;
* Fly to the spheres&lt;br /&gt;
* Verify the bump map looks the same as the picture above.&lt;br /&gt;
&lt;br /&gt;
====Brightness vs. Darkness bump maps====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27&lt;br /&gt;
* Set Set Preferences &amp;gt; Graphics Quality to High&lt;br /&gt;
* Verify the wood grain appears indented of the left cube and embossed on the right cube.&lt;br /&gt;
&lt;br /&gt;
=== Texture animation ===&lt;br /&gt;
&lt;br /&gt;
1.  http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27&lt;br /&gt;
A video should play on the screen in front of you shortly after you arrive. Verify the animations are cycling between the same numbers as the video. You will need to alt-zoom on the boxes to load the textures clearly.&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27&lt;br /&gt;
Verify the textures are rotating and your viewer does not experience a drop in framerate here.&lt;br /&gt;
&lt;br /&gt;
=== Target Omega ===&lt;br /&gt;
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov&lt;br /&gt;
&lt;br /&gt;
=== Dynamic texture scaling ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 1, 2, 3, 4, and 5 textures. Verify the textures scale with the objects as the objects grow taller and shorter.&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 6 texture. These objects are using Planar texture mapping. Verify the texture changes with the scale of the object, then a moment later rescales to match the object which is not scaling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prim LOD and bins ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.&lt;br /&gt;
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
* Verify the objects from the 4 left rows appear.&lt;br /&gt;
* Verify the farthest 4 small objects in the right row do not appear.&lt;br /&gt;
&lt;br /&gt;
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texture and color matching ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27&lt;br /&gt;
&lt;br /&gt;
* The wall of objects is made of an object with a white texture and some color next to an object with a texture of the same color and set to a white color. These should match.&lt;br /&gt;
* Verify the wall looks the same as the screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Transparency interaction ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27&lt;br /&gt;
&lt;br /&gt;
* Right-click the semitransparent objects. &lt;br /&gt;
* Verify objects with textures 87% or less transparent will become selected. &lt;br /&gt;
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.&lt;br /&gt;
&lt;br /&gt;
=== HUD (Heads Up Display) effects ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27&lt;br /&gt;
&lt;br /&gt;
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.&lt;br /&gt;
&lt;br /&gt;
Verify the following:&lt;br /&gt;
* The object does Not emit particles while attached to your HUD.&lt;br /&gt;
* The entire object is spinning from left to right.&lt;br /&gt;
* The yellow is slightly transparent.&lt;br /&gt;
* The yellow cube has one red face and 3 faces with red line.&lt;br /&gt;
* The yellow cube has 2 faces with a red &amp;quot;1&amp;quot; texture.&lt;br /&gt;
* The &amp;quot;1&amp;quot; texture on the face nearest to the red cube is animating - sliding from left to right.&lt;br /&gt;
* The red cube is shiny&lt;br /&gt;
* The red cube is spinning on an axis different than the yellow cube&lt;br /&gt;
* The red cube has bump maps&lt;br /&gt;
* The red cube has an &amp;quot;8&amp;quot; texture on one face and the other faces are the default wood texture.&lt;br /&gt;
* The black hover text is visible and is above the blue cube&lt;br /&gt;
* The blue cube is twisted&lt;br /&gt;
* The blue cube is flexible (this may be hard to see)&lt;br /&gt;
* The blue cube is shiny.&lt;br /&gt;
* The blue cube is spinning on an axis different than the yellow cube or red cube.&lt;br /&gt;
&lt;br /&gt;
=== Flexible objects ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27&lt;br /&gt;
* Verify the flexy objects look similar to the following screenshot. Note that the top left object may point in a different direction depending on the wind.&lt;br /&gt;
&lt;br /&gt;
[[File:Flexy1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)&lt;br /&gt;
&lt;br /&gt;
=== Sculpty objects ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. &lt;br /&gt;
* Make sure you Draw Distance (in Preferences &amp;gt; Graphics) is set to at least 100m so you can see the sculpty * objects at http://maps.secondlife.com/secondlife/Bug%20Island/17/100/37.  &lt;br /&gt;
* Clear your SL cache (Preferences &amp;gt; Advanced &amp;gt; Clear Cache) and relog. &lt;br /&gt;
* When the sculpties have loaded, fly to http://maps.secondlife.com/secondlife/Bug%20Island/32/99/27 and verify the sculpties look correct like the following screenshot; the shapes should be correct and not just elongated spheres, the surface textures should be loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27&lt;br /&gt;
* Verify the Scultpy objects look like this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpty1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27&lt;br /&gt;
* Set World &amp;gt; Sun &amp;gt; Midnight&lt;br /&gt;
* Set Graphics to Mid&lt;br /&gt;
* Detach any attachments that are lights.&lt;br /&gt;
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.&lt;br /&gt;
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.&lt;br /&gt;
&lt;br /&gt;
=== Small texture loading ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27&lt;br /&gt;
&lt;br /&gt;
* Verify these small textures load quickly. &lt;br /&gt;
* Verify these texture appear the same as in the picture below.&lt;br /&gt;
[[File:small_textures.png|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Parcel based media ===&lt;br /&gt;
Some of these tests require QuickTime be installed on your computer.&lt;br /&gt;
&lt;br /&gt;
Type Movie, video/mp4&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie is scaled to fill the face of the box.&lt;br /&gt;
* Go out of the parcel so the movie stops.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;8&amp;quot; texture. &lt;br /&gt;
* Verify the movie covers only part of the face of the box, and the rest of the face is white.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type Web Content, text/html&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* This will look exactly the same as the previous test.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207439</id>
		<title>Bug Island Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&amp;diff=1207439"/>
		<updated>2018-08-15T22:35:54Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Lights */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Scripts]]&lt;br /&gt;
-In progress-&lt;br /&gt;
&lt;br /&gt;
=== Bump maps ===&lt;br /&gt;
====Bump maps look correct====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid&lt;br /&gt;
* Set Preferences &amp;gt; Graphics Quality to Mid&lt;br /&gt;
* Verify the bump map looks the same as this picture.&lt;br /&gt;
[[File:Bump_map_spheres.jpg]]&lt;br /&gt;
&lt;br /&gt;
====Custom bump maps load for objects at a distance====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.&lt;br /&gt;
* Set Preferences &amp;gt; Graphics to Mid.&lt;br /&gt;
* Clear the cache (Preferences &amp;gt; Advanced&amp;gt; Clear Cache) and relog.&lt;br /&gt;
* Wait for the textures to load on the bumpmapped spheres.&lt;br /&gt;
* Fly to the spheres&lt;br /&gt;
* Verify the bump map looks the same as the picture above.&lt;br /&gt;
&lt;br /&gt;
====Brightness vs. Darkness bump maps====&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27&lt;br /&gt;
* Set Set Preferences &amp;gt; Graphics Quality to High&lt;br /&gt;
* Verify the wood grain appears indented of the left cube and embossed on the right cube.&lt;br /&gt;
&lt;br /&gt;
=== Texture animation ===&lt;br /&gt;
&lt;br /&gt;
1.  http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27&lt;br /&gt;
A video should play on the screen in front of you shortly after you arrive. Verify the animations are cycling between the same numbers as the video. You will need to alt-zoom on the boxes to load the textures clearly.&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27&lt;br /&gt;
Verify the texture animations matches the video.&lt;br /&gt;
&lt;br /&gt;
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27&lt;br /&gt;
Verify the textures are rotating and your viewer does not experience a drop in framerate here.&lt;br /&gt;
&lt;br /&gt;
=== Target Omega ===&lt;br /&gt;
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov&lt;br /&gt;
&lt;br /&gt;
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov&lt;br /&gt;
&lt;br /&gt;
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov&lt;br /&gt;
&lt;br /&gt;
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27&lt;br /&gt;
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov&lt;br /&gt;
&lt;br /&gt;
=== Dynamic texture scaling ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 1, 2, 3, 4, and 5 textures. Verify the textures scale with the objects as the objects grow taller and shorter.&lt;br /&gt;
&lt;br /&gt;
Look at the objects with the 6 texture. These objects are using Planar texture mapping. Verify the texture changes with the scale of the object, then a moment later rescales to match the object which is not scaling.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Prim LOD and bins ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.&lt;br /&gt;
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27&lt;br /&gt;
* Verify the objects from the 4 left rows appear.&lt;br /&gt;
* Verify the farthest 4 small objects in the right row do not appear.&lt;br /&gt;
&lt;br /&gt;
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Texture and color matching ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27&lt;br /&gt;
&lt;br /&gt;
* The wall of objects is made of an object with a white texture and some color next to an object with a texture of the same color and set to a white color. These should match.&lt;br /&gt;
* Verify the wall looks the same as the screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Transparency interaction ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27&lt;br /&gt;
&lt;br /&gt;
* Right-click the semitransparent objects. &lt;br /&gt;
* Verify objects with textures 87% or less transparent will become selected. &lt;br /&gt;
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.&lt;br /&gt;
&lt;br /&gt;
=== HUD (Heads Up Display) effects ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27&lt;br /&gt;
&lt;br /&gt;
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.&lt;br /&gt;
&lt;br /&gt;
Verify the following:&lt;br /&gt;
* The object does Not emit particles while attached to your HUD.&lt;br /&gt;
* The entire object is spinning from left to right.&lt;br /&gt;
* The yellow is slightly transparent.&lt;br /&gt;
* The yellow cube has one red face and 3 faces with red line.&lt;br /&gt;
* The yellow cube has 2 faces with a red &amp;quot;1&amp;quot; texture.&lt;br /&gt;
* The &amp;quot;1&amp;quot; texture on the face nearest to the red cube is animating - sliding from left to right.&lt;br /&gt;
* The red cube is shiny&lt;br /&gt;
* The red cube is spinning on an axis different than the yellow cube&lt;br /&gt;
* The red cube has bump maps&lt;br /&gt;
* The red cube has an &amp;quot;8&amp;quot; texture on one face and the other faces are the default wood texture.&lt;br /&gt;
* The black hover text is visible and is above the blue cube&lt;br /&gt;
* The blue cube is twisted&lt;br /&gt;
* The blue cube is flexible (this may be hard to see)&lt;br /&gt;
* The blue cube is shiny.&lt;br /&gt;
* The blue cube is spinning on an axis different than the yellow cube or red cube.&lt;br /&gt;
&lt;br /&gt;
=== Flexible objects ===&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27&lt;br /&gt;
* Verify the flexy objects look similar to the following screenshot. Note that the top left object may point in a different direction depending on the wind.&lt;br /&gt;
&lt;br /&gt;
[[File:Flexy1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)&lt;br /&gt;
&lt;br /&gt;
=== Sculpty objects ===&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. &lt;br /&gt;
* Make sure you Draw Distance (in Preferences &amp;gt; Graphics) is set to at least 100m so you can see the sculpty * objects at http://maps.secondlife.com/secondlife/Bug%20Island/17/100/37.  &lt;br /&gt;
* Clear your SL cache (Preferences &amp;gt; Advanced &amp;gt; Clear Cache) and relog. &lt;br /&gt;
* When the sculpties have loaded, fly to http://maps.secondlife.com/secondlife/Bug%20Island/32/99/27 and verify the sculpties look correct like the following screenshot; the shapes should be correct and not just elongated spheres, the surface textures should be loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27&lt;br /&gt;
* Verify the Scultpy objects look like this screenshot.&lt;br /&gt;
&lt;br /&gt;
[[File:Sculpty1.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Lights ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27&lt;br /&gt;
* Set World &amp;gt; Sun &amp;gt; Midnight&lt;br /&gt;
* Set Graphics to Mid&lt;br /&gt;
* Detach any attachments that are lights.&lt;br /&gt;
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.&lt;br /&gt;
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.&lt;br /&gt;
&lt;br /&gt;
=== Small texture loading ===&lt;br /&gt;
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27&lt;br /&gt;
&lt;br /&gt;
* Verify these small textures load quickly. &lt;br /&gt;
* Verify these texture appear the same as in the picture below.&lt;br /&gt;
[[File:small_textures.png|200px|thumb|none|click for full image]]&lt;br /&gt;
&lt;br /&gt;
=== Parcel based media ===&lt;br /&gt;
Some of these tests require QuickTime be installed on your computer.&lt;br /&gt;
&lt;br /&gt;
Type Movie, video/mp4&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;4&amp;quot; texture. &lt;br /&gt;
* Verify the movie is scaled to fill the face of the box.&lt;br /&gt;
* Go out of the parcel so the movie stops.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27&lt;br /&gt;
* Verify a mp4 movie starts playing after a few seconds on the boxes with the &amp;quot;4&amp;quot; texture. &lt;br /&gt;
* Verify the movie covers only part of the face of the box, and the rest of the face is white.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Type Web Content, text/html&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27&lt;br /&gt;
* Verify a webpage with a Flash clock appears on the boxes with the &amp;quot;4&amp;quot; texture.&lt;br /&gt;
* This will look exactly the same as the previous test.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207232</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207232"/>
		<updated>2018-06-18T18:51:02Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Wear an animesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===An avatar may wear 1 Animesh object===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Rez the Animesh man&lt;br /&gt;
* Enable Develop &amp;gt; Render Metadata &amp;gt; Joints (requires Preferences &amp;gt; Advanced &amp;gt; Show Develop Menu)&lt;br /&gt;
* Verify joints are visible for the man and in addition joints for wings, tail, and rear legs.&lt;br /&gt;
* Disable Animated Mesh.&lt;br /&gt;
* Verify the joints are no longer visible on the Animesh man.&lt;br /&gt;
* Create a cube and enable Animated Mesh&lt;br /&gt;
* Verify no joints are visible for the cube.&lt;br /&gt;
* Disable Develop &amp;gt; Render Metadata &amp;gt; Joints&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Animated objects should continue to play animations after crossing a region boundary===&lt;br /&gt;
* Same as &amp;quot;Animated objects should be able to cross region boundaries as directed by a script&amp;quot; test.&lt;br /&gt;
* Verify that the Raptor continues to animate after crossing the region boundary.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207227</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207227"/>
		<updated>2018-06-18T07:17:16Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Enabling and Disabling Animated Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Rez the Animesh man&lt;br /&gt;
* Enable Develop &amp;gt; Render Metadata &amp;gt; Joints (requires Preferences &amp;gt; Advanced &amp;gt; Show Develop Menu)&lt;br /&gt;
* Verify joints are visible for the man and in addition joints for wings, tail, and rear legs.&lt;br /&gt;
* Disable Animated Mesh.&lt;br /&gt;
* Verify the joints are no longer visible on the Animesh man.&lt;br /&gt;
* Create a cube and enable Animated Mesh&lt;br /&gt;
* Verify no joints are visible for the cube.&lt;br /&gt;
* Disable Develop &amp;gt; Render Metadata &amp;gt; Joints&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Animated objects should continue to play animations after crossing a region boundary===&lt;br /&gt;
* Same as &amp;quot;Animated objects should be able to cross region boundaries as directed by a script&amp;quot; test.&lt;br /&gt;
* Verify that the Raptor continues to animate after crossing the region boundary.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207226</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207226"/>
		<updated>2018-06-18T04:09:38Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Enabling and Disabling Animated Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Rez the Animesh man&lt;br /&gt;
* Enable Develop &amp;gt; Render Metadata &amp;gt; Joints (requires Preferences &amp;gt; Advanced &amp;gt; Show Develop Menu)&lt;br /&gt;
* Verify joints are visible for the man in addition to joints for wings, tail, and rear legs.&lt;br /&gt;
* Disable Animated Mesh.&lt;br /&gt;
* Verify the joints are no longer visible on the Animesh man.&lt;br /&gt;
* Disable Develop &amp;gt; Render Metadata &amp;gt; Joints&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Animated objects should continue to play animations after crossing a region boundary===&lt;br /&gt;
* Same as &amp;quot;Animated objects should be able to cross region boundaries as directed by a script&amp;quot; test.&lt;br /&gt;
* Verify that the Raptor continues to animate after crossing the region boundary.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207225</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207225"/>
		<updated>2018-06-18T00:24:29Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Animated objects should continue to play animations after crossing a region boundary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Animated objects should continue to play animations after crossing a region boundary===&lt;br /&gt;
* Same as &amp;quot;Animated objects should be able to cross region boundaries as directed by a script&amp;quot; test.&lt;br /&gt;
* Verify that the Raptor continues to animate after crossing the region boundary.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207224</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207224"/>
		<updated>2018-06-18T00:24:07Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Animated objects should be able to cross region boundaries as directed by a script */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Animated objects should continue to play animations after crossing a region boundary===&lt;br /&gt;
Same as &amp;quot;Animated objects should be able to cross region boundaries as directed by a script&amp;quot; test.&lt;br /&gt;
Verify that the Raptor continues to animate after crossing the region boundary.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207201</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207201"/>
		<updated>2018-06-12T05:23:41Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* New Diagnostic Displays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should be able to cross region boundaries as directed by a script===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23&lt;br /&gt;
* Take a copy of the raptor and rez it.&lt;br /&gt;
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.&lt;br /&gt;
* Right-click the raptor and Ride&lt;br /&gt;
* Use the arrows to drive and the Page Down or C key to reset if it tips over.&lt;br /&gt;
* Verify you can drive the raptor around the region&lt;br /&gt;
* Verify you can drive the raptor to an adjacent region.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207200</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207200"/>
		<updated>2018-06-12T04:24:28Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Agent related text and controls should be hidden for Animesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;br /&gt;
&lt;br /&gt;
===New Diagnostic Displays===&lt;br /&gt;
* Verify the following diagnostics display.&lt;br /&gt;
* A new debug setting DebugAnimatedObjects defaults to false but can be set to true. This will display additional information in the debug text by each animated object.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.&lt;br /&gt;
* Develop-&amp;gt;Render Metadata-&amp;gt;Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)&lt;br /&gt;
* Develop-&amp;gt;Avatar-&amp;gt;Animation info will display any animations currently playing for an animated object, as it always has for avatars.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207199</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207199"/>
		<updated>2018-06-11T22:25:27Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Selection and Editing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Agent related text and controls should be hidden for Animesh===&lt;br /&gt;
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Verify that no hovertext appears about the object (This differs from regular objects.) &lt;br /&gt;
* Right-click the Animesh man and inspect the right-click menu.&lt;br /&gt;
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.&lt;br /&gt;
* Verify the right-click menu is a typical Object context menu.&lt;br /&gt;
[[Image:Animesh right-click1.png]]&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Animesh_right-click1.png&amp;diff=1207198</id>
		<title>File:Animesh right-click1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Animesh_right-click1.png&amp;diff=1207198"/>
		<updated>2018-06-11T22:22:28Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207195</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207195"/>
		<updated>2018-06-11T22:06:58Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Enabling and Disabling Animated Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. &lt;br /&gt;
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. &lt;br /&gt;
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the Animated Mesh box should be disabled. &lt;br /&gt;
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* Verify you can see the Animated Mesh checkbox is checked and grayed out.&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207193</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207193"/>
		<updated>2018-06-11T21:49:58Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Selection and Editing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you have modify permissions for the object. &lt;br /&gt;
** Test this with a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the box should be disabled. &lt;br /&gt;
** Test this with a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
&lt;br /&gt;
===Animated mesh can be rezzed from object inventory.===&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23&lt;br /&gt;
* Take a copy of the popgun.&lt;br /&gt;
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.&lt;br /&gt;
* Verify you see Raptors drop out of the gun and walk around.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207192</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207192"/>
		<updated>2018-06-11T21:38:03Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Enabling and Disabling Animated Mesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose, arms stretched to the sides.&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you have modify permissions for the object. &lt;br /&gt;
** Test this with a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23&lt;br /&gt;
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims (&amp;quot;Edit linked&amp;quot;), the box should be disabled. &lt;br /&gt;
** Test this with a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207191</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207191"/>
		<updated>2018-06-11T21:21:18Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Enabling and Disabling Object Animation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Animated Mesh===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207190</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207190"/>
		<updated>2018-06-11T21:18:09Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Object Animation===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear. &lt;br /&gt;
[[Image:Bear1.png]]&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=File:Bear1.png&amp;diff=1207189</id>
		<title>File:Bear1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=File:Bear1.png&amp;diff=1207189"/>
		<updated>2018-06-11T20:27:28Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207188</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207188"/>
		<updated>2018-06-11T20:26:49Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Enabling and Disabling Object Animation===&lt;br /&gt;
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Edit your bear, and uncheck the Animated Mesh checkbox&lt;br /&gt;
* Verify the bear stops dancing and is now in a T-pose.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door&lt;br /&gt;
* Wear the bear on your right hand and walk around.&lt;br /&gt;
* Verify your avatar looks like a bear.&lt;br /&gt;
&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and check the Animated Mesh checkbox.&lt;br /&gt;
* Verify the bear now appears attached to your hand and starts dancing  &lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.&lt;br /&gt;
* Verify your avatar looks like a bear again.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
* Detach the bear to Inventory&lt;br /&gt;
* Rez the bear on the ground.&lt;br /&gt;
* Verify the bear is in a T-pose&lt;br /&gt;
* Edit your bear, and check the Animated Mesh checkbox&lt;br /&gt;
* If the bear is not already dancing, click it to make it dance.&lt;br /&gt;
* Verify observers see the same thing you do.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&amp;diff=1207097</id>
		<title>Content Creation User Group</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&amp;diff=1207097"/>
		<updated>2018-05-21T21:25:38Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Content Creation User Group meeting is a weekly, public meeting intended for discussion of issues around content creation, including avatars, animations, mesh, etc. Vir Linden is the moderator. Please bring questions, requests, and especially cool new things to show off!&lt;br /&gt;
&lt;br /&gt;
Normal schedule is to meet every Thursday at 1:00PM SLT, except the first Thursday of the month. Exceptions will be noted here.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Upcoming meetings&#039;&#039;&#039;. Location: While animesh is in testing, we will be having our meetings in Aditi: secondlife://Aditi/secondlife/Animesh4/132/138/23&lt;br /&gt;
&lt;br /&gt;
* Thursday, May 24, 1:00PM SLT&lt;br /&gt;
* Thursday, May 31, 1:00PM SLT&lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
* Open Q&amp;amp;A&lt;br /&gt;
&lt;br /&gt;
Notes&lt;br /&gt;
* Animesh is out as a project viewer with test regions on Aditi. Links: [https://community.secondlife.com/blogs/entry/2258-join-the-project-animesh-beta-new-support-for-animating-mesh-objects/ blog post], [https://wiki.secondlife.com/wiki/Animesh_User_Guide user guide], [https://community.secondlife.com/forums/forum/354-animesh/ forum]&lt;br /&gt;
* Bakes On Mesh is out as a project viewer that should work anywhere - see the [https://community.secondlife.com/forums/topic/420617-bakes-on-mesh-feedback-thread/ forum post]&lt;br /&gt;
* ARCTan, a project to update rendering cost, land impact, and related things like mesh upload costs, is in progress.&lt;br /&gt;
* Project EEP, which will give advanced configurable windlight environments for regions and parcels, is in progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--======================== Please do not edit above this line ====================== Nal U.&lt;br /&gt;
Feel free to add any content creation related topic to the end of this agenda&lt;br /&gt;
by adding a numbered list entry; &lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== User Questions &amp;amp; Topics ===&lt;br /&gt;
&amp;lt;!-- Copied here for those that only edit ONLY this section.&lt;br /&gt;
Copy the following line to the end of the list below and change &#039;topic&#039; to your topic; the ~~~ will be replaced with your name:_____, Also leave no blank/empty lines between # lines.&lt;br /&gt;
# topic (~~~) &lt;br /&gt;
&lt;br /&gt;
If you refer to a Jira issue, please use the template like this:&lt;br /&gt;
  {{JiraIssue|id|description}}&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207070</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207070"/>
		<updated>2018-05-10T23:14:25Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Wear / sit on animesh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear an animesh===&lt;br /&gt;
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23&lt;br /&gt;
* Take 3 copies of the Teddy bear to your inventory.&lt;br /&gt;
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
&lt;br /&gt;
===Teleport while wearing an animesh===&lt;br /&gt;
* Wear an animesh that animates. (e.g. the Teddy bear)&lt;br /&gt;
* Teleport to a far region, one that is not adjacent or kitty corner.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Log an observer in and verify the attached animesh looks the same to them.&lt;br /&gt;
* Wait 1 minute before teleporting back.&lt;br /&gt;
* Teleport back to the original location.&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
&lt;br /&gt;
===Log in while wearing an animesh===&lt;br /&gt;
* While wearing an animesh that animates (e.g. the Teddy bear), log out.&lt;br /&gt;
* Log an observer in.&lt;br /&gt;
* Log in the avatar wearing the animesh&lt;br /&gt;
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)&lt;br /&gt;
* Verify the observe sees the same thing.&lt;br /&gt;
* Sit on an animesh&lt;br /&gt;
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23&lt;br /&gt;
* Take a copy of the animesh raptor.&lt;br /&gt;
* Rez the raptor.&lt;br /&gt;
* Right-click it and select Ride.&lt;br /&gt;
* Verify your avatar sits on the raptor.&lt;br /&gt;
&lt;br /&gt;
===Sit on an animesh while wearing an animesh===&lt;br /&gt;
* While sitting on an animating animesh, attach an animating animesh.&lt;br /&gt;
* Verify the two animesh are animating.&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). &lt;br /&gt;
* Verify the observer sees the two animesh are but they are not animating. &lt;br /&gt;
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207059</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207059"/>
		<updated>2018-05-04T18:40:34Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Any animation triggered by any prim can drive any bone in the skeleton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear / sit on animesh===&lt;br /&gt;
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Take 3 copies of the Animesh model to your inventory.&lt;br /&gt;
* Attempt to add the 3 Animesh models to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the attached Animesh model animates.&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Take a copy of the Animesh model and rez it on the ground.&lt;br /&gt;
* Sit on the Animesh model.&lt;br /&gt;
* Verify all the Animesh models animate.&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). Verify the Animesh models are visible but not animating.&lt;br /&gt;
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207058</id>
		<title>Animesh Test</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=Animesh_Test&amp;diff=1207058"/>
		<updated>2018-05-04T18:36:34Z</updated>

		<summary type="html">&lt;p&gt;Dan Linden: /* Any animation triggered by any prim can drive any bone in the skeleton */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Test Plans]]&lt;br /&gt;
[[Category:Content Tools]]&lt;br /&gt;
&lt;br /&gt;
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=&lt;br /&gt;
&lt;br /&gt;
==Purpose==&lt;br /&gt;
Test all functionality of the Animesh viewer.&lt;br /&gt;
&lt;br /&gt;
==Test Plan==&lt;br /&gt;
&lt;br /&gt;
===Stop / Start animation with LSL===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Click the black monolith and choose to start animations from the menu.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating.&lt;br /&gt;
* Move to an adjacent region&lt;br /&gt;
* Verify the Animesh model is still animating.&lt;br /&gt;
* Relog.&lt;br /&gt;
* Verify the Animesh model is animating when viewed from an adjacent region.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify Animesh model stops animating.&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify Animesh model animates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Non-root prims in an animated object should be able to start and stop animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the Animesh model animates.&lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the Animesh model stops animating.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Any animation triggered by any prim can drive any bone in the skeleton===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/248/23&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) &lt;br /&gt;
* Click the black monolith and choose to stop animations&lt;br /&gt;
* Verify the man stops animating.&lt;br /&gt;
&lt;br /&gt;
===Animated objects should play only requested animations===&lt;br /&gt;
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23&lt;br /&gt;
* Enable Develop menu -&amp;gt; Avatar -&amp;gt; Animation info&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Wear / sit on animesh===&lt;br /&gt;
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Log in an observer on an adjacent region&lt;br /&gt;
* Take 3 copies of the Animesh model to your inventory.&lt;br /&gt;
* Attempt to add the 3 Animesh models to different attachment points of your avatar.&lt;br /&gt;
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)&lt;br /&gt;
* Click the black monolith and choose to start animations.&lt;br /&gt;
* Verify the attached Animesh model animates.&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Take a copy of the Animesh model and rez it on the ground.&lt;br /&gt;
* Sit on the Animesh model.&lt;br /&gt;
* Verify all the Animesh models animate.&lt;br /&gt;
* Verify the observer sees the same thing.&lt;br /&gt;
* Log in an observer with a viewer that does not support Animesh (eg. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Release/5.1.2.512803 ). Verify the Animesh models are visible but not animating.&lt;br /&gt;
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Get list of currently playing animations===&lt;br /&gt;
Go to  secondlife://Aditi/secondlife/Animesh2/7/247/23&lt;br /&gt;
* Take a copy of an Animesh object that is playing animations&lt;br /&gt;
* Rez the Animesh object.&lt;br /&gt;
* Add the following script to the Animesh object.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
default&lt;br /&gt;
{&lt;br /&gt;
    state_entry()&lt;br /&gt;
    {&lt;br /&gt;
        llSay(0, &amp;quot;Hello, Avatar!&amp;quot;);&lt;br /&gt;
        llSetTimerEvent(1);&lt;br /&gt;
    }&lt;br /&gt;
    timer()&lt;br /&gt;
    {&lt;br /&gt;
        list curr_anims = llGetObjectAnimationNames();&lt;br /&gt;
        llOwnerSay(&amp;quot;curr_anims are &amp;quot; + (string) curr_anims);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Verify all playing animations are listed while it is animating and none are listed while animations not playing&lt;br /&gt;
* Cleanup: delete the animesh object.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selection and Editing===&lt;br /&gt;
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. &lt;br /&gt;
* Verify all selected animated objects pause all of their animations for the person selecting them.&lt;br /&gt;
* Verify observers see the selected Animesh continue to animate.&lt;br /&gt;
* Unselecting any animated object should resume its animations.&lt;br /&gt;
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)&lt;br /&gt;
* Verify you can select an animating Animesh with right-click. The standard object right-click menu will appear and the object will be shown with a wireframe.&lt;br /&gt;
* Verify selecting an animated object via the Build menu -&amp;gt; Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)&lt;br /&gt;
* Editing the translation and rotation of an animated object should work.&lt;br /&gt;
* Editing the scale of an animated object will not work.&lt;br /&gt;
* Moving an Animesh object across region boundaries while editing should work.&lt;/div&gt;</summary>
		<author><name>Dan Linden</name></author>
	</entry>
</feed>