https://wiki.secondlife.com/w/api.php?action=feedcontributions&user=Dan+Linden&feedformat=atomSecond Life Wiki - User contributions [en]2024-03-29T13:23:47ZUser contributionsMediaWiki 1.36.1https://wiki.secondlife.com/w/index.php?title=Default_Private_Region_RAW_Files&diff=1212924Default Private Region RAW Files2023-01-05T18:23:01Z<p>Dan Linden: </p>
<hr />
<div>This article features download locations for the four basic types of Private Region terrain, saved as .raw files. We're also including a .raw file for flat terrain.<br />
<br />
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'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.<br />
<br />
{{KBnote| Uploading a .raw file will not change or remove objects on your land.}}<br />
<br />
{| style="border: 1px dashed #7f7c75" width="600" cellpadding="3"<br />
| style="border: 1px dotted #7f7c75" |<br />
[[Image:kbsd_Islandtype1.png]]<br />
| style="border: 1px dotted #7f7c75" |<br />
[https://torley.s3.amazonaws.com/kb/Islandtype1.raw Island terrain .raw file type 1 (Ruth's Retreat)]<br />
|-<br />
| style="border: 1px dotted #7f7c75" |<br />
[[Image:kbsd_Islandtype2.png]]<br />
| style="border: 1px dotted #7f7c75" |<br />
[https://torley.s3.amazonaws.com/kb/Islandtype2.raw Island terrain .raw file type 2 (Hill and Dale)]<br />
|-<br />
| style="border: 1px dotted #7f7c75" |<br />
[[Image:kbsd_Islandtype3.png]]<br />
| style="border: 1px dotted #7f7c75" |<br />
[https://torley.s3.amazonaws.com/kb/Islandtype3.raw Island terrain .raw file type 3 (Loch Lake)]<br />
|-<br />
| style="border: 1px dotted #7f7c75" |<br />
[[Image:kbsd_Islandtype4.png]]<br />
| style="border: 1px dotted #7f7c75" |<br />
[https://torley.s3.amazonaws.com/kb/Islandtype4.raw Island terrain .raw file type 4 (Prima Point)]<br />
|-<br />
| style="border: 1px dotted #7f7c75" |<br />
[[Image:kbsd_flatgreen.png]]<br />
| style="border: 1px dotted #7f7c75" |<br />
[https://torley.s3.amazonaws.com/kb/flatgreen.raw Flat green RAW file (Plain Plains)]<br />
|}<br />
<br />
If you open one of these in Photoshop, it may ask you to describe the file. Tell Photoshop the following:<br />
<br />
* 256 x 256 pixels<br />
* 13 channels<br />
* Interleaved<br />
* 8 bit depth<br />
* No header<br />
[[Category:Land]]<br />
[[Category:Content creation]]<br />
[[Category:Land]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=PRIM_OMEGA&diff=1212746PRIM OMEGA2022-11-10T18:36:30Z<p>Dan Linden: </p>
<hr />
<div><onlyinclude>{{#if:<br />
<br />
{{#vardefine:omega_const|{{LSL Const|PRIM_OMEGA|integer|18|c=Used to {{GetSet|{{{1|}}}|get the object's llTargetOmega settings|rotate the object at on the given axis at the given rate|/}} }}}}<br />
<br />
{{#vardefine:caveats|{{#var:caveats}}<br />
*[[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.<br />
*[[PRIM_OMEGA]] cannot be used on avatars sitting on the object. It will emit the error message "PRIM_OMEGA disallowed on agent".<br />
*If [[PRIM_OMEGA]] does not appear to be working, make sure that that Develop > Network > Velocity Interpolate Objects is enabled on the viewer.}}<br />
<br />
{{#vardefine:p_axis_desc|arbitrary axis to rotate the object around}}<br />
{{#vardefine:p_spinrate_desc|rate of rotation in radians per second}}<br />
{{#vardefine:p_gain_desc|also modulates the final spinrate and disables the rotation behavior if zero}}<br />
<br />
}}</onlyinclude>{{#if:<br />
<br />
}}{{LSL Constant<br />
|inject-2={{LSL PrimitiveParam Categorize|Prim}}<br />
|name=PRIM_OMEGA<br />
|type=integer<br />
|value=32<br />
|desc=Used to make the object spin at the specified axis and rate, or retrieve spin settings. See [[llTargetOmega]] for specification.<br />
|examples=<source lang="lsl2"><br />
// Set this prim rotating<br />
llTargetOmega(<1.0,3.0,0.5>, TWO_PI, 1.0);<br />
<br />
// Read back this prim's current target omega<br />
list current_omega = llGetPrimitiveParams([PRIM_OMEGA]); // should be [PRIM_OMEGA, axis, spinrate, gain]<br />
vector axis = llList2Vector(current_omega, 1); // Should be <1.0,3.0,0.5><br />
float spinrate = llList2Float(current_omega, 2); // Should be TWO_PI<br />
float gain = llList2Float(current_omega, 3); // Should be 1.0<br />
<br />
// Set all child prims rotating<br />
llSetLinkPrimitiveParamsFast(LINK_ALL_CHILDREN, [PRIM_OMEGA, <1.0,3.0,0.5>, TWO_PI, 1.0]);<br />
</source><br />
Also, can use llSetPrimitiveParams for the root prim.<br />
<source lang="lsl2">// will need two prims linked together for this script.<br />
default<br />
{<br />
state_entry()<br />
{<br />
// make some sort of rotation angle for the omega...<br />
vector rotationAngle = <2.3, 5.5, 9.7> * llTan(85); <br />
<br />
// rotate the main prim slowly using the same rotataion angle, rate, and gain...<br />
llSetPrimitiveParams([ PRIM_OMEGA, rotationAngle * 0.3, 1.0, 1.0 ]);<br />
<br />
// rotate the link satellite prim separately around its own axis <br />
// it will rotate also around the main prim because the main prim is rotating.<br />
llSetLinkPrimitiveParams(2, [ PRIM_OMEGA, rotationAngle, 1.0, 1.0 ]);<br />
}<br />
}<br />
</source><br />
|constants<br />
|pa={{LSL Constant/List|i_front=[&#32;{{#var:omega_const}},&#32;|i_end=&nbsp;]<br />
|text=When used with [[llSetPrimitiveParams]] & [[llSetLinkPrimitiveParams]]<br />
|i1_type=vector|i1_name=axis<br />
|i2_type=float|i2_name=spinrate<br />
|i3_type=float|i3_name=gain<br />
|toc=llSetPrimitiveParams<br />
}}<br />
|pb={{LSL Constant/List|i_front=[[llGetPrimitiveParams]]([&nbsp;{{#var:omega_const}}&nbsp;]);|<br />
|r_front=Returns the [[list]] [&nbsp;|r_end=&nbsp;]<br />
|text<br />
|toc=llGetPrimitiveParams<br />
|r1_type=vector|r1_name=axis<br />
|r2_type=float|r2_name=spinrate<br />
|r3_type=float|r3_name=gain<br />
}}<br />
|functions=<br />
{{LSL DefineRow||[[llSetPrimitiveParams]]|}}<br />
{{LSL DefineRow||[[llSetLinkPrimitiveParams]]|}}<br />
{{LSL DefineRow||[[llGetPrimitiveParams]]|}}<br />
{{LSL DefineRow||[[llTargetOmega]]|}}<br />
|events<br />
|location<br />
|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<br />
*Rolled to main server channel the week of 7/11/2011<br />
|cat1<br />
|cat2=Effects<br />
|cat3=Physics<br />
|cat4=Rotation<br />
}}</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Puppetry_Development&diff=1211095Puppetry Development2022-08-30T18:21:44Z<p>Dan Linden: </p>
<hr />
<div>Puppetry Development<br />
<br />
<br />
<h2>Summary</h2><br />
<br />
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.<br />
<br />
<h2>Second Life Open Source Viewer</h2><br />
<br />
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'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].<br />
<br />
<h2>Puppetry feature detection</h2><br />
<br />
To avoid compatibility problems when deploying experimental features Second Life uses a system called "capabilities". 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 "caps" in some documentation.<br />
<br />
<h2>LEAP Plug-ins</h2><br />
<br />
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.<br />
<br />
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/.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<h2>Try it out</h2><br />
<br />
When Puppetry is available the following menu item should be enabled:<br />
<br />
Advanced → Puppetry → Launch LEAP plug-in...<br />
<br />
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.<br />
<br />
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's a work in progress - at first release, head motion is reasonably good, but we're not satisfied with arm and hand movement, and have not explored fingers, facial or lips motion.<br />
<br />
<h2>Developing Puppetry Plug-ins</h2> <br />
<br />
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'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.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<h2>Puppetry data</h2><br />
<br />
The Puppetry data stream is a series of events. Each event is effectively a key:value pair where the key is the joint'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.<br />
<br />
The position is always in the root-frame of the avatar skeleton, where the root is the avatar's pelvis and the distance units are "normalized" such that the furthest end of the hand of the avatar'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.<br />
<br />
The position coordinate frame is "right handed" (e.g. Z equals X cross Y) and the axes are: X=forward, Y=left, Z=up.<br />
<br />
The orientation can be specified in the root-frame, or in the joint'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.<br />
<br />
An example Puppetry event might look something like this:<br />
<br />
'mWristLeft':{'pos':[0.05,0.1665,0.5359]},'rot':[-0.07608,0.06912,-0.05754]}<br />
<br />
In the example above the orientation is specified in the root-frame. For parent-frame the key would be 'local_rot'.<br />
<br />
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:<br />
<br />
Advanced → Puppetry → Use my server data<br />
<br />
With this on, you will watch your animations as others in-world see it: sent from the region server.<br />
<br />
<h2>Viewer Code Changes</h2><br />
<br />
If you want to experiment with viewer source code, you'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.<br />
<br />
You will need to switch your source code to the DRTVWR-558 branch.<br />
<br />
git checkout DRTVWR-558<br />
<br />
Search the codebase for "puppetry" and you'll get an idea of where the code is, or for "llik" 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..<br />
<br />
If you modify this code, you'll need to re-build the viewer, launch it and then start your Puppetry module to test your changes.<br />
<br />
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.<br />
<br />
<h2>The Inverse Kinematics algorithm</h2><br />
<br />
The "Inverse Kinematics problem" 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 "known" while those of the rest of the system are "unknown". The bones with known transforms are called "end-effectors" and their target transforms are called "goals". 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.<br />
<br />
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 "close enough" 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 "constrained" 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.<br />
<br />
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.<br />
<br />
<h2>Working Together</h2><br />
<br />
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.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Puppetry_Development&diff=1211093Puppetry Development2022-08-30T18:18:17Z<p>Dan Linden: </p>
<hr />
<div>Puppetry Development<br />
<br />
<br />
<h2>Summary</h2><br />
<br />
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.<br />
<br />
<h2>Second Life Open Source Viewer</h2><br />
<br />
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'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].<br />
<br />
<h2>Puppetry feature detection</h2><br />
<br />
To avoid compatibility problems when deploying experimental features Second Life uses a system called "capabilities". 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 "caps" in some documentation.<br />
<br />
<h2>LEAP Plug-ins</h2><br />
<br />
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.<br />
<br />
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/.<br />
<br />
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.<br />
<br />
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.<br />
<br />
<h2>Try it out</h2><br />
<br />
When Puppetry is available the following menu item should be enabled:<br />
<br />
Advanced → Puppetry → Launch LEAP plug-in...<br />
<br />
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.<br />
<br />
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's a work in progress - at first release, head motion is reasonably good, but we're not satisfied with arm and hand movement, and have not explored fingers, facial or lips motion.<br />
<br />
<h2>Developing Puppetry Plug-ins</h2> <br />
<br />
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&sa=D&source=editors&ust=1661829588240027&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'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.<br />
<br />
puppetry.py depends on the leap.py util module, which uses [https://www.google.com/url?q=https://pypi.org/project/eventlet/&sa=D&source=editors&ust=1661829588241012&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.<br />
<br />
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.<br />
<br />
<h2>Puppetry data</h2><br />
<br />
The Puppetry data stream is a series of events. Each event is effectively a key:value pair where the key is the joint'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.<br />
<br />
The position is always in the root-frame of the avatar skeleton, where the root is the avatar's pelvis and the distance units are "normalized" such that the furthest end of the hand of the avatar'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.<br />
<br />
The position coordinate frame is "right handed" (e.g. Z equals X cross Y) and the axes are: X=forward, Y=left, Z=up.<br />
<br />
The orientation can be specified in the root-frame, or in the joint'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.<br />
<br />
An example Puppetry event might look something like this:<br />
<br />
'mWristLeft':{'pos':[0.05,0.1665,0.5359]},'rot':[-0.07608,0.06912,-0.05754]}<br />
<br />
In the example above the orientation is specified in the root-frame. For parent-frame the key would be 'local_rot'.<br />
<br />
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:<br />
<br />
Advanced → Puppetry → Use my server data<br />
<br />
With this on, you will watch your animations as others in-world see it: sent from the region server.<br />
<br />
<h2>Viewer Code Changes</h2><br />
<br />
If you want to experiment with viewer source code, you'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&sa=D&source=editors&ust=1661829588244562&usg=AOvVaw2dzTEr89Ra3--R4I1CmPjd available on Bitbucket]. Follow the instructions there to download and build the code.<br />
<br />
You will need to switch your source code to the DRTVWR-558 branch.<br />
<br />
git checkout DRTVWR-558<br />
<br />
Search the codebase for "puppetry" and you'll get an idea of where the code is, or for "llik" 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..<br />
<br />
If you modify this code, you'll need to re-build the viewer, launch it and then start your Puppetry module to test your changes.<br />
<br />
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&sa=D&source=editors&ust=1661829588245875&usg=AOvVaw3rf7OykcDFdf5dV_kebCfHOpen Source contributions to Second Life] apply.<br />
<br />
<h2>The Inverse Kinematics algorithm</h2><br />
<br />
The "Inverse Kinematics problem" 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 "known" while those of the rest of the system are "unknown". The bones with known transforms are called "end-effectors" and their target transforms are called "goals". 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.<br />
<br />
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 "close enough" 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 "constrained" 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.<br />
<br />
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&sa=D&source=editors&ust=1661829588247012&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.<br />
<br />
<h2>Working Together</h2><br />
<br />
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.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Puppetry_Mocap&diff=1211091Puppetry Mocap2022-08-30T18:10:56Z<p>Dan Linden: </p>
<hr />
<div><h2>Puppetry Mocap</h2><br />
<br />
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.<br />
<br />
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.<br />
<br />
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's good to experiment with camera placement and see how it interacts with the positions.<br />
<br />
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't right. <br />
<br />
There are a lot of complexities to solve to get this right, factoring in the camera setup, person'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.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=PRIM_PHYSICS_SHAPE_NONE&diff=1210991PRIM PHYSICS SHAPE NONE2022-08-09T13:20:51Z<p>Dan Linden: </p>
<hr />
<div>{{LSL Constant<br />
|type=integer<br />
|name=PRIM_PHYSICS_SHAPE_NONE<br />
|value=1<br />
|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]]<br />
|notes=[[File:Physics_shape_none.png|thumb|700px|center|'''The physics shape type attribute can be found in the Features tab of the Edit window.''']]<br />
<div style="clear:both;"></div><br />
|examples<br />
|constants<br />
|functions<br />
|events<br />
|location<br />
|history=<br />
*Introduced in [[Release Notes/Second Life RC LeTigre/11#11.09.09.240509|Second Life RC LeTigre 11.09.09.240509]], September 9, 2011<br />
*[http://www.sluniverse.com/php/vb/scripting/61203-future-physics-functions-tease.html#post1305775 SLUniverse:Future physics functions tease]<br />
|cat1=Prim<br />
|cat2=Physics<br />
|cat3<br />
|cat4<br />
}}</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=LSL_Tutorial&diff=1210764LSL Tutorial2022-05-16T16:10:51Z<p>Dan Linden: </p>
<hr />
<div>{{LSL Header|ml=*}}<br />
<br />
== Beginner Tutorials ==<br />
'''[[Getting Ready to Learn LSL]]:''' Before learning LSL, it is helpful to learn the basics of Second Life. Here are some pointers to getting started.<br />
<br />
'''[[Help:Getting started with LSL|Getting Started with LSL]]:''' Tutorial for absolute beginners. Basic SL inventory and navigation required.<br />
<br />
'''[[Hello Avatar]]:''' A place to try next after Getting Started in LSL.<br />
<br />
'''[[A Basic LSL Tutorial]]:''' A tutorial for people who are new to LSL scripting, with basic tasks and LSL scripting terms explained in quick short answers.<br />
<br />
'''[[LSL 101: The Wikibook]]:''' A collaborative project to create a "complete" narrative guide to LSL scripting, starting with no assumptions of previous programming experience, and going to ... who knows where?<br />
<br />
'''[[Chatbot]]:''' 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.<br />
<br />
'''[[DialogMenus|Building a dialog menu step by step]]:''' A tutorial for beginning scripters on implementing a simple menu dialog system. Designed to illustrate the basic principles in layman's language.<br />
<br />
'''[[Video Tutorial/Script editor featurettes|Video Tutorial: Script editor featurettes]]:''' Features of the inworld Script editor. Look at [[LSL Alternate Editors]] for external 3rd party editors.<br />
<br />
== In-World Tutorials ==<br />
<br />
'''[http://slurl.com/secondlife/Star%20Beach%20Island/150/212/22/?x=300&y=300&img=http%3A//cd.bromley.ac.uk/bteccourses/sl/images/shimmer_island.jpg&title=Learning%20in%20Virtual%20Reality&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]:''' Please feel free to come over and look around<br />
<br />
'''[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]:''' Come by to learn scripting and building.<br />
<br />
'''Swiss Projects Tutorial, the Swiss Tutorial for Second Life®; interactive, inworld and in the Web, in German:''' das schweizer Tutorial zu Second Life®; interaktiv, inworld und im Web, in deutscher Sprache. SLURL: '''[http://slurl.com/secondlife/swiss%20projects]'''<br />
<br />
== External Tutorials ==<br />
'''[http://www.ddj.com/dept/ai/197008520?pgno=1 Using LSL introductory tutorial]''' Dr. Dobb's tutorial<br />
<br />
'''[http://xahlee.org/sl/sl/ls.html Linden Scripting Language (LSL) Tutorial]''' Xah Lee's tutorial on LSL<br />
<br />
'''[http://people.cc.ku.edu/~grobe/intro-to-LSL/ Using the Linden Script Language]:''' A very comprehensive tutorial on basic scripting from Kan-ed.<br />
<br />
== Scripting Tools ==<br />
These tools are designed to '''ease the process of scripting''', whether it'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's Autoscript post]:<br />
<br />
<videoflash>xW619vHfYeg</videoflash><br />
<br />
<br />
----<br />
<br />
<br />
* '''[http://conwylie.co.uk/ScriptGenerator Con Wylie's Script Generator]''' - '''Con Wylie's up-to-date tool''' 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<br />
'''[http://yes.torley.com/post/6321621554/new-super-fast-and-easy-online-scripting-tool-second Torley Linden's Post about Con Wylie's Tool]''' - 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!<br />
<br />
<br />
* '''[http://www.3greeneggs.com/autoscript/ Autoscript]''' - Ann Enigma'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.<br />
<br />
* '''[http://web.mit.edu/~eric_r/Public/S4SL/ Scratch for Second Life]''' - 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:<br />
<br />
* '''[http://particles-lsl-generator.bashora.com/ Particle script generator]''' - This formatted webpage may be easier to use than SL’s own script editor. Change your parameters and try it out inworld.<br />
<br />
* '''[http://www.miceonabeam.com MiceOnABeam Visual Scripting Tool]''' - 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 '''[http://bit.ly/ihCqyf here]''' or on '''[http://www.youtube.com/watch?v=LBA8wvoA9EI YouTube]'''. A Free version can be downloaded from '''[http://www.miceonabeam.com here]'''.<br />
<br />
== Books on LSL ==<br />
These are real-world books with significant content on LSL and the process of scripting.<br />
----<br />
<br />
* '''[http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470171146.html Creating Your World: The Official Guide to Advanced Content Creation for Second Life]''' - '''Creating Your World''' 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's site. The book is available from [http://www.amazon.com/Creating-Your-World-Official-Advanced/dp/0470171146/ bookstores] everywhere.<br />
<br />
* '''[http://syw.fabulo.us Scripting Your World: The Official Guide to Second Life Scripting]''' - '''Scripting Your World''' 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.<br />
<br />
* '''[http://www.heatonresearch.com/category/programming-language/linden-scripting-language Jeff Heaton's books on LSL]''' '''Introduction to Linden Scripting Language for Second Life''' and '''Scripting Recipes for Second Life''' 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.<br />
<br />
[[Category:Tutorials]]<br />
[[Category:LSL Tutorials]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_parameters&diff=1210713Viewer parameters2022-05-02T21:42:55Z<p>Dan Linden: /* Command line */</p>
<hr />
<div>{{Help|Viewer=*}}<br />
<br />
For versions of Second Life prior 1.20 see: [[Pre 1.20 Client parameters]]<br />
<br />
== Using Viewer parameters ==<br />
There are many ways of passing command line parameters to the Viewer. <br />
<br />
=== Command line ===<br />
<br />
When running the Viewer from a command shell you may specify parameters directly on the command line. For example, on Windows:<br />
<br />
SecondLife.exe --channel "Test 123" --settings settings_workspace.xml --set InstallLanguage en<br />
<br />
Add --args on Mac:<br />
<br />
open ./Second\ Life\ Viewer.app --args --channel "Test 123" --settings settings_workspace.xml --set InstallLanguage en<br />
<br />
=== Settings Files ===<br />
<br />
On all platforms, you can also construct a settings file and specify that with the <tt>--sessionsettings</tt> command line switch. Please see the table below to understand the settings variables engaged by each command-line switch.<br />
<br />
If you edit the user_settings/settings.xml file, that affects future Second Life sessions initiated from your OS account.<br />
<br />
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 "FooBar Baz", you should find that file in foobar_baz/settings.xml. (Caution: this file uses a different XML format than the other settings files.)<br />
<br />
=== Mac OS X AppleScripts ===<br />
An alternative (and often easier) way to launch Second Life with command line parameters is to use an AppleScript.<br />
<br />
Follow these steps:<br />
<br />
<ol><br />
<li> In <code>/Applications/AppleScript</code> open Script Editor.<br />
<li> Open a new document and paste the following text into it:<br />
<pre>do shell script "\"/Applications/Second Life.app/Contents/MacOS/Second Life\" -grid Aditi"</pre><br />
The script includes an example parameter that will cause the Viewer to log in to the beta grid; change the parameters as desired.<br />
<li> Once you're happy with the parameters, click "Compile"<br />
<li> Choose File > Save As<br />
<li> Save the script as an Application, and select "Run Only" (may be "Execute" 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 "Script".<br />
</ol><br />
<br />
Double-click the application you've compiled to launch the Viewer with the specified parameters.<br />
<br />
NOTE: If the Viewer launches then immediately quits, open it normally since there is likely an update available:<br />
download it and your script will work again. There is a [http://jira.secondlife.com/browse/VWR-5835 JIRA issue] for this.<br />
<br />
=== Visual Studio ===<br />
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.<br />
<br />
=== XCode ===<br />
In XCode, first select "newview" under the "Executables" group in XCode. Then open the "Get Info" dialog and click the "Arguments" tab. Add any of the following options to the "Arguments to be passed on launch" pane.<br />
<br />
== Parameter reference ==<br />
<br />
NOTE: A ''parameter'' refers to a directive provided on the command-line following a double-dash (--).<br />
An ''argument'' is a value provided for a parameter. For example in <code>--port 13001</code>, "port" is the parameter<br />
and "13001" is the argument.<br />
<br />
<br />
{| {{Prettytable}}<br />
<br />
|-{{Hl2}} <br />
! Parameter<br />
! Argument (if any)<br />
! Description<br />
! Overridden Setting<br />
<br />
|- <br />
| --analyzeperformance<br />
| None<br />
| Compare gathered metrics with baseline. Must be used with --logmetrics or --logperformance.<br />
| AnalyzePerformance<br />
<br />
|- <br />
| --autologin<br />
| None<br />
| Login in as last saved user.<br />
| AutoLogin<br />
<br />
|- <br />
| --channel <name><br />
| Channel name<br />
| Specify version channel name. (For Testing)<br />
| CmdLineChannel<br />
<br />
|- <br />
| --console <show><br />
| TRUE ''or'' '''FALSE'''<br />
| Show a debugging console (Windows only)<br />
| ShowConsoleWindow<br />
<br />
|- <br />
| --cooperative <ms to yield><br />
| Milliseconds to yield per frame<br />
| Yield specified time to host on each frame. <br />
| YieldTime<br />
<br />
|-<br />
| --crashonstartup<br />
| None<br />
| Crashes on startup. For debugging.<br />
| CrashOnStartup<br />
<br />
|- <br />
| --debugsession<br />
| None<br />
| Run as if RenderDebugGL is TRUE, but log errors until end of session.<br />
| DebugSession<br />
<br />
|- <br />
| --debugviews<br />
| None<br />
| Enable UI view debugging information.<br />
| DebugViews<br />
<br />
|- <br />
| --disablecrashlogger<br />
| None<br />
| Disables the crash logger and lets the OS handle crashes.<br />
| DisableCrashLogger<br />
<br />
|- <br />
| --drop <percentage><br />
| Percentage to drop (0 - 100)<br />
| Specify a percentage of packets to drop. <br />
| PacketDropPercentage<br />
<br />
|- <br />
| --god<br />
| None<br />
| Login in [[God Mode|god mode]] if you are authorized.<br />
| ConnectAsGod<br />
<br />
|-<br />
| --graphicslevel<br />
| integer level <br />
| override the level that would be selected based on your gpu<br />
| RenderQualityPerformance<br />
<br />
|- <br />
| --grid <grid name><br />
| Grid name<br />
| Specify the grid to connect to. Must specify either a hard-coded grid (agni or aditi), or one defined in grids.xml <br />
| CmdLineGridChoice<br />
<br />
|-<br />
| --help<br />
| None<br />
| Show a message box with available options listed.<br />
| N/A<br />
<br />
|- <br />
| --helperuri <URI><br />
| <br />
| '''Obsolete'''- no longer supported. May only be set in the grid definition (grids.xml)<br />
| <br />
<br />
|- <br />
| --ignorepixeldepth<br />
| None<br />
| Ignore pixel depth settings.<br />
| IgnorePixelDepth<br />
<br />
|- <br />
| --inbw <bits><br />
| Bits per second <br />
| Specify input bandwidth limit. <br />
| InBandwidth<br />
<br />
|-<br />
| --loginpage <URL><br />
| <br />
| '''Obsolete'''- no longer supported. May only be set in the grid definition (grids.xml)<br />
| <br />
<br />
|- <br />
| --loginuri <URI><br />
| <br />
| '''Obsolete'''- no longer supported. May only be set in the grid definition (grids.xml)<br />
| <br />
<br />
|- <br />
| --logfile <filename><br />
| File name<br />
| Specify a file name for log output.<br />
| UserLogFile<br />
<br />
|- <br />
| --login <firstname> <lastname> <password><br />
| Account first name, last name, and password with which to log in.<br />
| Specify login values.<br />
| UserLoginInfo<br />
<br />
|- <br />
| --logmetrics<br />
| MetricName<br />
| Log metrics data in MetricName.slp. See [[Performance Testers]] for details.<br />
| LogMetrics<br />
<br />
|- <br />
| --logperformance<br />
| None<br />
| Log performance data in performance.slp. See [[Performance Testers]] for details.<br />
| LogPerformance<br />
<br />
|- <br />
| --multiple<br />
| None<br />
| Allow multiple viewers running concurrently.<br />
| AllowMultipleViewers<br />
<br />
|- <br />
| --no-verify-ssl-cert<br />
| None<br />
| Disable SSL certificate verification.<br />
| NoVerifySSLCert<br />
<br />
|- <br />
| --noaudio<br />
| None<br />
| Disable sound from the client.<br />
| NoAudio<br />
<br />
|- <br />
| --noinvlib<br />
| None<br />
| Do not request inventory library.<br />
| NoInventoryLibrary<br />
<br />
|- <br />
| --nopreload<br />
| None<br />
| Disable precaching of sound and bitmaps used by the client.<br />
| NoPreload<br />
<br />
|- <br />
| --noprobe<br />
| None<br />
| Disable hardware checking at startup.<br />
| NoHardwareProbe<br />
<br />
|- <br />
| --noquicktime<br />
| None<br />
| Disable use of quicktime by the client.<br />
| NoQuickTime<br />
<br />
|- <br />
| --nosound<br />
| None<br />
| Disable sound from the client.<br />
| NoAudio<br />
<br />
|- <br />
| --novoice<br />
| None<br />
| Disable voice chat.<br />
| CmdLineDisableVoice<br />
<br />
|- <br />
| --outbw <bits><br />
| Bits per second<br />
| Specify output bandwidth limit. <br />
| OutBandwidth<br />
<br />
|-<br />
| --port <n><br />
| Port number<br />
| 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)<br />
| UserConnectionPort<br />
<br />
|- <br />
| --purge<br />
| None<br />
| Force the client to clear cached downloads during startup.<br />
| PurgeCacheOnNextStartup<br />
<br />
|- <br />
| --qa<br />
| None<br />
| Enable UI features for used for testing.<br />
| QAMode<br />
<br />
|- <br />
| --quitafter <secs><br />
| Number of seconds to wait before quitting<br />
| Have the client quit after the specified duration.<br />
| QuitAfterSeconds<br />
<br />
|- <br />
| --replaysession<br />
| None<br />
| Use a saved autoplay file to perform viewer actions automatically. Must be used with --autologin.<br />
| ReplaySession<br />
<br />
|- <br />
| --rotate<br />
| None<br />
| Force the avatar to rotate to the right. (For Testing)<br />
| RotateRight<br />
<br />
|- <br />
| --safe<br />
| None<br />
| Reset preferences and run in safe mode.<br />
| SafeMode<br />
<br />
|-<br />
| --sessionsettings <filename><br />
| name of a file in app_settings<br />
| Use '''settings_minimal.xml''' to force Basic mode on login, an invalid name like '''none''' to force Advanced mode. Note that currently (2.6) the login screen mode menu will show "Basic" if this setting appears at all, but the command line setting will still override on actual login.<br />
| <br />
<br />
|- <br />
| --set <parameter> <value><br />
| First argument is the name of setting; second is the value to assign to it.<br />
| Specify the value of the named setting (view a full list [[Debug_Settings|here]]).<br />
| Maps to <setting> arg.<br />
<br />
|- <br />
| --setdefault <parameter> <value><br />
| First argument is the name of setting; second is the value to assign to it.<br />
| Specify the value of a particular configuration variable which can be overridden by settings.xml.<br />
| Maps to <setting> arg.<br />
<br />
|- <br />
| --settings <filename><br />
| Local file name<br />
| Specify the name of the user settings file.<br />
| <br />
<br />
|- <br />
| --skin <folder><br />
| Folder name<br />
| Specify the skin folder to use. (eg. korean, spanish)<br />
| SkinCurrent<br />
<br />
|- <br />
| --slurl <SLurl><br />
| SLurl<br />
| Specify the starting region and position (for example, secondlife://Ahern/128/128). <br />
This must be the last parameter on the command line.<br />
| CmdLineLoginLocation<br />
<br />
|- <br />
| --update-service <url><br />
| base url for the viewer version manager update query<br />
| Specify the viewer version manager service to use (primarily for upgrade testing)<br />
| CmdLineUpdateService<br />
<br />
|- <br />
| --url <SLurl><br />
| SLurl<br />
| Specify the starting region and position (for example, secondlife://Ahern/128/128). <br />
This must be the last parameter on the command line.<br />
| CmdLineLoginLocation<br />
<br />
|-<br />
| --usersessionsettings <filename><br />
| name of a file in app_settings<br />
| Specify the filename of a configuration file that contains temporary per-session configuration user overrides.<br />
| <br />
<br />
|}<br />
<br />
== Specifying new command line parameters ==<br />
<br />
To add a new command line parameter, use the configuration file ''app_settings/cmd_line.xml'' to map a command line paramter to a user setting. <br />
A parameter can have the following options:<br />
* desc - A description of the paramter. <br />
* short - a single character to map to the paramter.<br />
* count - the number of tokens to follow a option.<br />
* compose - true if the option can be specified multiple times.<br />
* positional - true if the option can be specified without --name.<br />
* last_option - true if the option should be the last option.<br />
* map-to - specify a user setting to map the option to.<br />
The file uses [[LLSD]] syntax. Use the existing options as reference.<br />
<br />
== Examples ==<br />
=== Setting a Custom Cache Location ===<br />
To set a custom cache location when launching Second Life, you should use the <code>set</code> parameter with a value of <code>NewCacheLocation</code> followed by the desired cache folder to use. This will tell Second Life to startup using this location as a new cache location.<br><br />
<br />
'''Example:''' <code>--set CacheLocation j:\SL_Cache --set NewCacheLocation j:\SL_Cache</code><br />
<br />
'''NOTE''': <br />
Per '''STORM-334 ''' The double command above <span style="text-decoration: line-through;">will</span> should retain the previous cache and switch to the new cache.<br />
<br />
Using just NewChacheLocation will clear any existing cache folder that it has been using. So, to prevent this you can also the <code>CacheLocation</code> setting to the same value and ahead of NewCacheLocation, which will preserve any cache folder saved in your viewer settings. <br />
<br />
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's speed, before saving the contents to disk afterwards.<br />
<br />
{{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.}}</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Render_Correctness_Test&diff=1210509Render Correctness Test2022-03-03T19:39:33Z<p>Dan Linden: /* Water rendering */</p>
<hr />
<div>{{OSWikiFeatureNav|parent=Render Correctness}}<br />
[[Category:Test Scripts]]<br />
<br />
<br />
== Purpose ==<br />
Test expected render behavior for 3.0 and newer viewers.<br />
<br />
=== Terrain rendering ===<br />
<br />
* Verify terrain mesh detail defaults to High when Graphics Quality is set to Mid or higher.<br />
* Verify terrain mesh detail defaults to Low when Graphics Quality is set to Low.<br />
* Verify terrain detail textures change according to elevation. (screenshot from http://maps.secondlife.com/secondlife/Bug%20Island%202/88/98/23)<br />
[[File:Terrain_rendering.jpg]]<br />
<br />
=== Windlight rendering ===<br />
* Set Graphics quality to High.<br />
* If Atmospheric shaders is still disabled, skip to the next section.<br />
* Verify you can see clouds in the sky like this picture from http://maps.secondlife.com/secondlife/Bug%20Island%202/88/98/23<br />
[[File:Windlight_clouds.jpg]]<br />
<br />
=== Water rendering ===<br />
<br />
* Verify that the Transparent Water shader is disabled when Graphics Quality is set to Low.<br />
* Verify that the Transparent Water shader is enabled when Graphics Quality is set to Low-Mid or higher.<br />
* Uncheck Transparent Water and verify the water surface appears opaque from above and below water.<br />
* Check Transparent Water and verify the water surface appears transparent from above and below water.<br />
* Put camera under water, verify that fog changes. There is generally more fog below water than above water.<br />
* Turn on Preferences > Graphics > Advances Settings > Basic Shaders and Transparent Water. ''(Basic shaders cannot be enabled if OpenGL < 2.0. The OpenGL version can be found in Help menu -> About Second Life. If OpenGL < 2.0, skip to the next section.)''<br />
* Verify that sun/moon reflections appear on surface of water.<br />
* Verify that water appears to have animated waves.<br />
* Put camera under water and verify that objects above water appear distorted by the waves.<br />
* Move the sun to Midday ({{KeyCombo|ctrl=*|shift=*|Y}}) and verify that water looks appropriate.<br />
[[File:Water1.jpg]]<br />
<br />
=== Water Reflections ===<br />
<br />
* Confirm Basic Shaders and either Transparent Water or Bump mapping is enabled in Preferences > Graphics > Advanced Settings.<br />
* Find Water Reflections in Preferences > Graphics > Advanced Settings<br />
* Select "Terrain and Trees" water reflections and verify you see the land and trees reflected in the water.<br />
* Select "All Static Objects" and verify that now in addition to the trees and terrain, you see unmoving objects reflected.<br />
* Select "All Avatars and Objects" and verify that you and other avatars are now being reflected as well.<br />
* Select "Everything" and verify that all terrain, trees, objects, avatars, and particles are now reflected in the water.<br />
<br />
=== Avatar rendering ===<br />
<br />
* Verify that the avatar is lit by the sun/moon<br />
* Right click on your avatar and Edit My Shape.<br />
* Verify that avatar renders properly in the preview panels.<br />
* Repeat with Hardware Skinning enabled/disabled in preferences.<br />
<br />
=== UI Rendering===<br />
<br />
* Turn on property lines and land owners from World > Show menu.<br />
* Verify all appear correctly.<br />
* Turn on stats bar with ctrl-shift-1<br />
* Verify that text appears correctly in statistics bar.<br />
* Enable World menu > Show > Beacons, and check the Scripted check box.<br />
* Enable Beacons and Highlights<br />
* Verify Beacons and Highlights appear on scripted objects [need a picture here]<br />
* Open the Develop menu with Ctrl-Alt-Q, turn on Develop > Show Info > Show Updates to Objects.<br />
* 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).<br />
* Hold mouse cursor over an avatar and verify the tooltip renders properly. <br />
[[File:Tooltip1.jpg]]<br />
* Select an object. (eg. the Kart from the Library)<br />
* Verify silhouette outline renders correctly.<br />
[[File:Object select.jpg]]<br />
* Edit an object.<br />
* Verify that the root prim (the seat) has a yellow outline while the other prims have a blue outline.<br />
[[File:Object_edit_2.jpg]]<br />
* Verify a particle beam projects from your hand to the object you are editing.<br />
<br />
=== Object Rendering ===<br />
''[make objects for these tests to speed testing]''<br />
* Make a cube.<br />
* Change its color.<br />
* Move the cube. '''Verify''' color remains the same.<br />
* Make cube transparent.<br />
* Move the cube. '''Verify''' color remains the same.<br />
* Turn on the Bump mapping and shiny shader in preferences.<br />
* Give cube a texture with an alpha mask that is 100 transparent in some area. (eg. Inventory/Library/Textures/*Default Transparent Texture)<br />
* Close the edit tools<br />
* '''Verify''' you can click through the mask (the transparent section) with alt-zoom.<br />
* '''Verify''' you can right-click your avatar through the mask.<br />
* Attach the cube to your HUD.<br />
* '''Verify''' 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.<br />
* '''Verify''' the HUD attachment is not lit by the sun or moon when you look around.<br />
* '''Verify''' the mask part of the HUD attachment does not block alt-zoom unless in edit mode.<br />
* '''Verify''' you can select the HUD attachment when in edit mode.<br />
* Attach a default script to the cube HUD attachment.<br />
* '''Verify''' HUD attachment responds to left click.<br />
* '''Verify''' you can right click your avatar through the cube attachment's mask.<br />
* Detach the cube<br />
* Make a sphere<br />
* Change the sphere's color.<br />
* Make it shiny medium and '''verify''' it appears shiny.<br />
* Move the sphere. '''Verify''' color remains the same.<br />
* Give the sphere a bump map.<br />
* '''Verify''' that bump map is visible.<br />
* Attach the sphere to your HUD.<br />
* '''Verify''' the sphere is still shiny and bump mapped.<br />
* '''Verify''' the sphere is not lit by the sun or moon when you look around. [https://jira.secondlife.com/browse/SH-2646 SH-2646]<br />
<br />
=== Sculpty Rendering ===<br />
<br />
* Rez the sculpty horse from My Inventory/Library/Objects/Sculpt Prims - Examples/Horse (Sculpt Prim Example) - by Nomasha Syaka<br />
* Verify you see a collection of blobs that resolves into a brown and white running horse withing a few seconds.<br />
[[File:sculpty_horse.jpg]]<br />
<br />
=== Highlight rendering ===<br />
* Create 2 cubes, make one 100% transparent and the other 50% transparent.<br />
* Enable the Advanced menu with ctrl-alt-D or with Preferences > Advanced > Show Advanced Menu<br />
* Turn on Advanced menu > Highlighting and Visibility > Highlight Transparent. <br />
* Verify both cubes are highlighted with a red tint.<br />
* Attach both cubes to your HUD<br />
* Verify both cubes on your HUD are highlighted with a red tint.<br />
* Turn off Advanced menu > Highlighting and Visibility > Highlight Transparent.<br />
<br />
=== Render order ===<br />
* Attach a semi-transparent cube to your HUD if you don't already have one.<br />
* Turn on World menu > Show > Property Lines. Verify the property lines do not draw in front of hills or solid objects or your semi-transparent HUD object.<br />
* Open the world map and click on a location nearby, and close the world map<br />
* Verify the red column is only visible above ground, and not as it passes below ground.<br />
* Turn off World menu > Show > Property Lines.<br />
[[File:Render_order1.jpg]]<br />
<br />
=== llSetText rendering ===<br />
<br />
* Attach a semi-transparent cube to your HUD if you don't already have one.<br />
* Add the following script to the cube attachment. <br />
<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
while(1)<br />
llSetText("Hello, Avatar!",<llFrand(1),llFrand(1),llFrand(1)>,llFrand(1));<br />
}<br />
}<br />
</pre><br />
<br />
* Verify you can see the SetText message rapidly changing colors on the HUD object.<br />
<br />
=== Appearance mode rendering ===<br />
<br />
* Right click your Avatar and "Edit My Shape".<br />
* Verify you can see the thumbnail images for your avatar.<br />
* Edit your Skin.<br />
* Change your skin color, Save All, and exit appearance mode.<br />
* Verify your avatar textures rebake after a few seconds and that your skin color is correct.<br />
<br />
=== Shaders ===<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
* Set your shaders and sun position as indicated on the red sphere at that location.<br />
* Verify the spheres render the same as they appear in the picture at that location.<br />
* Continue testing at the 5 stations to the South.<br />
<br />
<br />
=== Glow + transparent ===<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/244/175/23<br />
* Verify the sphere is invisible when Basic Shaders are off.<br />
* Verify the sphere is glowing when Basic Shaders are on.<br />
<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Quality Assurance]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&diff=1209822Content Creation User Group2021-01-14T21:05:39Z<p>Dan Linden: </p>
<hr />
<div>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!<br />
<br />
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]<br />
<br />
== Upcoming meetings ==<br />
<br />
Location: meetings are held on the main grid at http://maps.secondlife.com/secondlife/Hippotropolis/71/172/29<br />
<br />
The meeting schedule is maintained on the [https://second.life/calendar SL Public Calendar]<br />
<br />
== Agenda ==<br />
* Open Q&A<br />
<br />
Notes<br />
* 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]<br />
* 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]<br />
* 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.<br />
* ARCTan, a project to update rendering cost, land impact, and related things like mesh upload costs, is in progress.<br />
<br />
<!--======================== Please do not edit above this line ====================== Nal U.<br />
Feel free to add any content creation related topic to the end of this agenda<br />
by adding a numbered list entry; <br />
--><br />
=== User Questions & Topics ===<br />
<!-- Copied here for those that only edit ONLY this section.<br />
Copy the following line to the end of the list below and change 'topic' to your topic; the ~~~ will be replaced with your name:_____, Also leave no blank/empty lines between # lines.<br />
# topic (~~~) <br />
<br />
If you refer to a Jira issue, please use the template like this:<br />
{{JiraIssue|id|description}}<br />
--></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Newbie_Test&diff=1209821Newbie Test2021-01-13T21:58:38Z<p>Dan Linden: /* Newbie's Experience */</p>
<hr />
<div>{{OSWikiFeatureNav|parent=First Login}}<br />
[[Category:Test Scripts]]<br />
<br />
= Newbie's Experience =<br />
<br />
<br />
== Setup ==<br />
<br />
* Create a new user account using the usertool or via secondlife.com.<br />
** for this test, skip the avatar selection test when signing up via secondlife.com.<br />
** for this test, skip the part that gives you some L$.<br />
* Uninstall all versions of Second Life to clear all settings and cache files. <br />
* Install Second Life.<br />
<br />
* This test requires a second user which does not need to be new.<br />
<br />
== Log on to the new account. ==<br />
<br />
* After logging in you should see the Terms of Service Agreement. Accept it.<br />
<br />
* A Critical Messge containing Second Life Community Standards should appear. Click "Continue".<br />
<br />
* You will continue to log in and be asked if you wish to play streaming media.<br />
<br />
* 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)<br />
<br />
* Click one of the buttons to choose a gender.<br />
<br />
* The "Play Music"/"Disable" modeless dialog is now visible. Click the "Play Music" button. Verify you hear something.<br />
<br />
* Press the F1 key to open Help, Read thru several pages of online help and verify links/buttons work and are correct.<br />
<br />
* Verify Home takes you to a help index page listing the various help topics available.<br />
<br />
* Verify the "Back" and "Forward" buttons behave as expected for a browser<br />
<br />
* Check that previously visited links are highlighted in a different color. (this no longer happens. should it?)<br />
<br />
* Close the help. <br />
<br />
* Click on Help/Message of the Day. Verify that multiple clicks will not bring up multiple copies. (this doesn't exist? -[[User:Maestro Linden|Maestro Linden]] 14:47, 9 October 2008 (PDT))<br />
<br />
* Check the build/sim info is correct from the Help/About SecondLife... Verify that multiple clicks will not bring up multiple copies.<br />
<br />
* Verify that you are in a Orientation Island / Help Island sim at an appropriate start location.<br />
<br />
* Check your Edit/Preference, they should all have default values. (this should be detailed and tested in some other test)<br />
<br />
* Verify you are the gender you chose, you are fully clothed & you look good.<br />
<br />
* Check your profile. See that the name is correct and all data fields are empty. Your reputation should be zero.<br />
<br />
* Verify your World/Account History with correct name, data & balance of L$0. Verify balance matches what is shown at top right of screen.<br />
<br />
* Verify you cannot create objects at the start location.<br />
<br />
* Verify the minimap is open. (it's not. should it be?)<br />
<br />
* Verify you appear on the minimap as a green dot. (you should appear as a ''yellow'' dot with a white center... -Merov)<br />
<br />
* Open you Inventory by clicking the Inventory button.<br />
<br />
* 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&found, also now have sounds folder - Pixel 1/14/2010)<br />
<br />
* 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)<br />
<br />
* Verify you have no calling cards.<br />
<br />
* 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)<br />
<br />
* Verify that there is a Welcome Note in the Library/Note Cards folder, and that you can read it.<br />
<br />
* Verify that there are several snapshots in the Library/Photo Album folder, and that you can view them.<br />
<br />
* Verify that there is a Rotation Script in the Library/Scripts folder, and that you can read it.<br />
<br />
* Verify a few of the textures in Library/Texture subfolders have correct descriptions and can be viewed.<br />
<br />
* Verify trash in inventory is empty. (assuming trash == lost and found - Pixel 1/14/2010)<br />
<br />
* Teleport off Orientation Island to mainland using the Library/Landmarks/Welcome Area on Mainland landmark.<br />
<br />
* Rez out each object from the Library/Objects inventory: examine each object is intact, looks right and has correct name & description<br />
<br />
* Verify all inventory scripted objects work accordingly<br />
<br />
* Delete all rezed objects<br />
<br />
* Verify all audio sounds works in Library/Sounds inventory<br />
<br />
* Verify a few randomly sampled gestures work in the Active Gesture window.<br />
<br />
* Teleport Home using World/Teleport Home<br />
<br />
== Appearance: ==<br />
<br />
* Login in with two accounts A and B<br />
<br />
* With B observing A and vice versa, verifying each step<br />
<br />
* 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.<br />
<br />
* 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<br />
<br />
* A: Interchange the outfits by dragging the whole folder from inventory to the avatar.<br />
<br />
* A: Verify that items you are wearing are identified by a "(worn)" behind it<br />
<br />
* A: Take off worn clothing items by right-clicking on the items from inventory/Clothing and click on "Take off of Avatar"<br />
<br />
* A: Verify that you cannot take off body parts that you are wearing.<br />
<br />
* A: Try on single items by double clicking on item from Inventory/body Parts and Inventory/Clothing <br />
<br />
* A: try on single pieces of body parts/clothing by right-clicking on items from Inventory/body Parts and Inventory/Clothing and click on "Wear on Avatar"<br />
<br />
* A: Delete some clothing items and verify they are moved to trash<br />
<br />
* A: Verify you can not delete items that you are currently wearing<br />
<br />
* A: Verify you cannot move items that you are currently wearing into trash.<br />
<br />
* A: Verify you can not delete/move to trash, the clothing folder that you are currently wearing<br />
<br />
* A: offer individual items in body parts and clothing to B by dragging the items to B<br />
<br />
* B: accepts some and denies some. Open the inventory window and verify items that are accepted end up in the clothing folder<br />
<br />
* B: Try on the newly accepted items.<br />
<br />
* A: offer the 4 newly created outfits to B by dragging the folders one at a time to B<br />
<br />
* B: Accept 3 outfits: 2 male, and the Female-fat and deny Female-skinny. B should have 3 new folders of clothing. in inventory<br />
<br />
* B: Verify that the accepted folders are in inventory's top level, and they contain exactly the same items in A's inventory<br />
<br />
* B: Try on all 3 new outfits. Make sure they come out correct<br />
<br />
* B: Delete Female-fat folder and empty trash in inventory<br />
<br />
* A: Logout. Re-install SecondLife. Log back in. Verify you look the same<br />
<br />
* B: Check out A and make sure it looks the same before and after logout./in.<br />
<br />
* A: Verify your contents in the inventory are the same<br />
<br />
* A: Try on all the outfits again. Make sure they come out correct.<br />
<br />
<br />
<br />
== Tracking: ==<br />
<br />
<br />
* A: Right-click B and Add friend<br />
<br />
* B: Accept A's friendship<br />
<br />
* A+B: Open the Friends window, click on the other's name and enable "Can see me on the map"<br />
<br />
* A+B: Verify that your calling card folder indicates B/A online and B/A's names are enabled in Map/Tracking drop down menu<br />
<br />
* A: Logout<br />
<br />
* B: Verify A in calling card folder says offline, and A in Map/Tracking drop down menu is disabled.<br />
<br />
* A: Log back in<br />
<br />
* A+B: Same state as #68<br />
<br />
* A: Fly a to a different region<br />
<br />
* B: Track A from Map/Tracking as a red circle on the map<br />
<br />
* A: Fly across a boundary<br />
<br />
* B: Verify the red circle moves according to A's motion/direction<br />
<br />
* 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.<br />
<br />
* B: When the green dot meets the red circle, look for a red column entrapping A<br />
<br />
* A: Fly across two regions<br />
<br />
* B: Follow A by click on the name A from the Map's Tracking pull down menu. Fly in the direction of the red arrow to reach A<br />
<br />
* B: See the green dot approaching the red circle on the map. When you stop flying, look for a red column entrapping A<br />
<br />
<br />
<br />
== Attachments: ==<br />
<br />
With B observing A and verifying each step<br />
<br />
* A: Rez in the party hat, attach it to your head<br />
<br />
* 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<br />
<br />
* A: Rez in the parrot. Attach it to your shoulder<br />
<br />
* A: Rez in the popgun. Follow the instructions and learn how to attach, target and shoot it. <br />
<br />
* B: Rez in the hand lamp, attach it to your right hand. Make it bigger change the color and rotate it.<br />
<br />
* B: Detach it and attach it back to the right hand. Make sure it goes back to the previous state.<br />
<br />
* A: fly to a different region. Verify that your attachments: hat, Pop gun and Parrot are still in the same state<br />
<br />
* B: follow A and make sure A looks the same before and after crossing region<br />
<br />
* A: Teleport to the Boardwalk from the Inventory/landmark. <br />
<br />
* A: Verify that your attachments: hat, Pop gun and Parrot are still intact<br />
<br />
* B: follow A by teleporting and make sure A looks the same <br />
<br />
* A: log out and log back in, make sure all the attachments stay the same<br />
<br />
* B: check that A looks the same before and after logout/login<br />
<br />
* 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<br />
<br />
* A: Go back home using World/Teleport Home. <br />
<br />
* A: Verify that your attachments: hat, Pop gun and Parrot are still intact<br />
<br />
* B: follow A by teleporting and make sure A looks the same <br />
<br />
* B: create a box, and sit on it<br />
<br />
* A: sit on the box next to B, verify the attachments are still good<br />
<br />
* A: Get up. Verify the attachments are still good<br />
<br />
* B: Verify A's attachments are still good<br />
<br />
<br />
== Profile: ==<br />
<br />
<br />
* A: click on pie menu/my profile and start modifying your profile. Click OK to save<br />
<br />
* B: Check A's profile, make sure it's updated.<br />
<br />
* A: log out and log back in. check that the profile is preserved.<br />
<br />
* B: Verify A's profile is the same before A's login and logout.<br />
<br />
* A: Modify the profile. Click OK, and close. Reopen to see the updates.<br />
<br />
* B: Verify A's profile is updated appropriately.<br />
<br />
== Clean up ==<br />
<br />
<br />
* B: Get up and delete the box. Detach the hand lamp, delete it. Empty the trash<br />
<br />
* A: detach the popgun, the parrot and the hat. Delete them all. Empty the trash</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Third_Party_Viewer_Directory/Kokua&diff=1209818Third Party Viewer Directory/Kokua2021-01-11T21:53:29Z<p>Dan Linden: </p>
<hr />
<div>=={{TPVD-Icon|Kokua}} Kokua==<br />
<br />
{{TPVD-Detail<br />
|home=https://kokua.atlassian.net/wiki/spaces/KKA/overview?mode=global<br />
|privacy=https://kokua.atlassian.net/wiki/spaces/KKA/pages/15237184/Privacy+Policy<br />
|download=https://kokua.atlassian.net/wiki/spaces/KKA/pages/15237201/Downloads<br />
|source=https://bitbucket.org/kokua<br />
|supportemail=chorazinallen'' at ''gmail'' dot '' com<br />
|slcontact=Chorazin Allen<br />
|rlcontact=<br />
|platforms={{TPVD-Platform|Windows|showtext=1}}{{TPVD-Platform|MacOS|showtext=1}}{{TPVD-Platform|Linux|showtext=1}}{{TPVD-Platform|Linux64|showtext=1}}<br />
}}<br />
Kokua provides releases for PC, Mac and Linux with and without Marine Kelley's RLV together with a broad selection of original features and the best from other viewers.<br />
<br />
Kokua aims to be the viewer of choice for RLV users who want Marine Kelley's original implementation with more bells and whistles than Marine's own viewer.<br />
<br />
{{TPVD-Footer}}</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1209324Viewer Materials Smoke Test2020-05-28T00:27:27Z<p>Dan Linden: /* Rendering with Normal Maps */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing word 'KART' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no word 'KART' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should not have the shiny '001' lettering in the upper-left and lower-right corners.<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1208773Viewer Materials Smoke Test2019-10-15T22:27:15Z<p>Dan Linden: /* Media, Planar mapping */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing word 'KART' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no word 'KART' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should only have the shiny '001' 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).<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1208597Viewer Materials Smoke Test2019-07-03T22:34:04Z<p>Dan Linden: /* Emissive Mask */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing word 'KART' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no word 'KART' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add <test texture> via the texture picker.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should only have the shiny '001' 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).<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1208596Viewer Materials Smoke Test2019-07-03T22:33:42Z<p>Dan Linden: /* No Mask (on a texture with an alpha channel) */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing 'KART' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque 'KART')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with the word "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no word 'KART' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque word 'KART')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add <test texture> via the texture picker.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should only have the shiny '001' 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).<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1208595Viewer Materials Smoke Test2019-07-03T22:31:56Z<p>Dan Linden: /* Emissive Mask */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_KART_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with "KART" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing 'KART' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque 'KART')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_G_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a "G" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no 'G' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque 'G')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add <test texture> via the texture picker.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should only have the shiny '001' 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).<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=File:Kart_screenshot_with_KART_alpha.png&diff=1208594File:Kart screenshot with KART alpha.png2019-07-03T22:28:46Z<p>Dan Linden: </p>
<hr />
<div></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Viewer_Materials_Smoke_Test&diff=1208581Viewer Materials Smoke Test2019-07-03T00:00:49Z<p>Dan Linden: /* Texture Mapping: Diffuse texture, Default mode */</p>
<hr />
<div>= Overview =<br />
* 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<br />
* A high-level specification of this featureset can be found at [[Material_Data]]<br />
<br />
= Build Tool Test =<br />
<br />
== Required Materials ==<br />
* A region which supports normal and specular maps<br />
** 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.<br />
* Three test users<br />
** UserA, who uses a viewer which supports normal and specular maps, and does the building (actually performs operations) <br />
** UserB, who uses a viewer which supports normal and specular maps, and only observes the results of UserA's work<br />
*** The purpose of this user is to verify that build tool edits sent by UserA's viewer produce congruent results<br />
** UserC, who uses an 'old' (no support for normal and specular maps) viewer, and only observes the results of UserA's work<br />
*** 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.<br />
** UserA and UserB should have "Advanced Lighting Model" enabled under Preferences -> Graphics settings, under "Advanced". This setting is required for the viewer to render normal and specular maps properly.<br />
* Upload the following textures to use in this test:<br />
** [[:File:TestDiffuse001.png]]<br />
** [[:File:TestNormal001.png]]<br />
** [[:File:TestSpecular001.png]]<br />
<br />
== Verify Basic Build Tool Layout ==<br />
<br />
=== Verify that non-Texture portions of the build tool have not changed ===<br />
# UserA, UserB, and UserC: login<br />
# UserA and UserC: each rez a box<br />
# UserA and UserC: select the box that you rezzed, and select Edit from the context menu<br />
# UserA and UserC: verify that your build tools appear, and that the appearance is identical in the following tabs:<br />
#* General<br />
#* Object<br />
#* Features<br />
#* Content<br />
# UserA and UserC: verify that the build tool UI is the same for each of the build tool modes (top row of buttons)<br />
#* Focus (magnifying glass icon)<br />
#* Move (hand icon)<br />
#* Edit (mouse cursor icon)<br />
#* Create (magic wand icon)<br />
#* Land (bulldozer icon)<br />
# UserA: deselect the box<br />
# UserA, UserB, and UserC: verify that UserA's box still looks like a default box (has not changed appearance)<br />
<br />
=== Verify layout and default values of build tool's Texture tab ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# 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:<br />
#* Verify that "Materials" is the default face edit mode<br />
#* Verify that "Texture (diffuse)" is the default texture edit mode<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that the texture preview shows the default plywood texture<br />
#* Verify that 'Alpha mode' is 'Alpha blending'<br />
#* Verify that 'Mask cutoff' does *not* appear (this option is not applicable in this alpha mode)<br />
<br />
=== Verify layout and default values for Mapping option ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
#* Verify that 'Repeats' is 'per face (default)'<br />
#** Verify that the texture mapping settings match the 'Mapping = default' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is *not* visible<br />
# UserA: Deselect the box<br />
# UserA, UserB, and UserC: verify that the box's appearance has not changed (since no edits have been made)<br />
# UserA: Reselect the box, and 'Edit' it again<br />
# UserA: Under the Texture tab, change the 'Mapping' setting to 'Planar'<br />
#* Verify that the texture mapping settings match the 'Mapping = planar' section in '2b' of this reference image: [[:File:MaterialsBuildUI1.png]].. Verify that the following defaults are set:<br />
#** Verify that 'Number of repeats' is 2.00, and *cannot* be edited (is read-only)<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#** Verify that 'Align planar faces' is visible, unchecked and enabled (*can* be edited)<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has not changed (since the change to 'planar' mapping by itself has no visible effect on this box)<br />
<br />
=== Verify build tool editing of texture settings === <br />
#* Note: UserA: run the following tests for texture settings., for both planar and default texture mapping modes <br />
#*Note: UserB, and UserC: throughout the test, verify that you see the expected results based on the observer Viewer in use.<br />
<br />
====Texture Mapping: Diffuse texture, Default mode====<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* Mapping: Default<br />
# UserA: Create a new cube prim for use in this test.<br />
# UserA: Verify that clicking Texture box will open the Pick: Texture floating window, allowing you to select a new texture.<br />
# UserA: Verify that you can drag a texture from your Inventory window to the Texture box.<br />
# UserA: Verify that if the Select Face item is NOT selected, texture changes are applied to all sides at once.<br />
# 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. <br />
# 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.<br />
# 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 "100" image should appear on only one face.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show two textures, one on a single face the other on all other faces<br />
# UserA: Verify that clicking Color box will open the Color Picker floating window. <br />
# UserA: Verify that color tints selected are additive to the color of the base texture.<br />
# UserA: Verify that using Transparency you can choose transparency level of the object. <br />
# 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%.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to show a color tint and is semi-transparent.<br />
# 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.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box's appearance has changed to add glow.<br />
# UserA: Enable Full Bright.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that the box renders as if fully day-lighted, regardless of the environment day cycle position of the sun. <br />
#* (Use World > Sun > <time of day> to change sun position.)<br />
# UserA: Change Transparency and Glow settings back to 0, and disable Full Bright.<br />
# Rez a 0.5 (default-size) cube and add <test texture> via the texture picker.<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0 (since this value now reflects the maximum density between horizontal and vertical scales)<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Texture Mapping: Diffuse texture, Planar mode====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Texture (diffuse)<br />
#* '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Alpha mode' option ==<br />
=== No Mask is forced for textures without an alpha channel ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Take a snapshot (ctrl+S) and 'Save to inventory'<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the snapshot as the texture on the box<br />
# UserA: Verify that the 'Alpha mode' setting is 'None', and that the UI for changing 'Alpha mode is disabled'<br />
#* Verify that the 'Mask cutoff' setting is hidden<br />
# UserA, UserB, and UserC: Verify that the snapshot appears on the box, and that it is fully opaque<br />
=== Alpha Blending ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory: [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool.<br />
# UserA: Using the texture picker from the build tool, set the image you uploaded on all faces of the box<br />
# UserA, UserB, and UserC: verify that you see a 'smooth' 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 'Alpha mode' is set to the default 'Alpha blending' setting<br />
<br />
=== Alpha Masking ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Maestro_alpha_gradient.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA: Set the 'Alpha mode' to 'Alpha masking'<br />
#* Verify that the 'Mask cutoff' setting appears, and that the default value for it is 0<br />
# UserA, UserB: verify that the box's texture appears (almost) completely opaque<br />
# UserC: verify that you see no change (since your viewer doesn't support alpha masking)<br />
# UserA: set the 'Mask cutoff' setting to 76<br />
# UserA, UserB: Verify that the top 30% of the texture is now invisible, but the bottom 70% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 178<br />
# UserA, UserB: Verify that the top 70% of the texture is now invisible, but the bottom 30% is totally opaque<br />
# UserC: verify that you see no change<br />
# UserA: set the 'Mask cutoff' setting to 255<br />
# UserA, UserB: Verify that the texture is now almost completely invisible (except perhaps a strip at the bottom)<br />
# UserC: verify that you see no change<br />
# UserA: Try to input 'Mask cutoff' settings < 0, and verify that they get slammed to 0 by the build tool UI<br />
# UserA: Try to input 'Mask cutoff' settings > 255, and verify that they get slammed to 255 by the build tool UI<br />
<br />
=== Emissive Mask ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_G_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a "G" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'Emissive mask'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, but there should be a glowing 'G' in the texture.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque 'G')<br />
<br />
=== No Mask (on a texture with an alpha channel) ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Upload this alpha-mapped image to your inventory (if you don't already have it): [[:File:Kart_screenshot_with_G_alpha.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool. Open the Texture tab of the build tool, and set the texture to the one you just uploaded.<br />
# UserA, UserB, and UserC: Verify that the image on the box appears mostly transparent, with a "G" in the middle as an opaque section<br />
# UserA: Set the 'Alpha mode' to 'None'<br />
#* Verify that the 'Mask cutoff' setting remains hidden<br />
# UserA and UserB: verify that the box's appearance has changed. The whole texture should be opaque, and no 'G' should be visible.<br />
# UserC: verify that the box's appearance has not changed (and you just see the image as mostly transparent with the opaque 'G')<br />
<br />
== Verify functionality of 'Bumpiness' settings ==<br />
=== Layout of Bumpiness settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the build tool layout looks like the 'Materials > Normal' section from this mockup [[:File:BuildTool_Bumpiness_Shininess.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
#* Verify that the 'Bumpiness' setting is currently 'None'<br />
#* Verify that the 'Mapping' setting is 'Default'<br />
#* Verify that 'Horizontal scale' is 1.0<br />
#* Verify that 'Vertical scale' is 1.0<br />
#* Verify that 'Repeats per meter' is enabled, and is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object)<br />
#* Verify that 'Rotation' is 0.0<br />
#* Verify that 'Horizontal offset' is 0.0<br />
#* Verify that 'Vertical offset' is 0.0<br />
#* Verify that 'Align planar faces' is disabled and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Bumpiness ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that you see the following options under the Bumpiness menu:<br />
#* None<br />
#* Brightness<br />
#* Darkness<br />
#* woodgrain<br />
#* bark<br />
#* bricks<br />
#* checker<br />
#* concrete<br />
#* crustytile<br />
#* cutstone<br />
#* discs<br />
#* gravel<br />
#* petridish<br />
#* siding<br />
#* stonetile<br />
#* stucco<br />
#* suction<br />
#* weave<br />
# UserC: Rez a box and edit it with the build tool<br />
# For each of the bumpiness menu options *except* for 'None', do the following:<br />
#* UserA and UserC: select the same bumpiness menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
<br />
=== Normal Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestNormal001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Bumpiness (normal)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded normal map using the texture picker<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' is now set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned. You should see a large '001' in the middle, due to the normal map effect.<br />
# UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: From the 'Bumpiness' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no bump map effect<br />
# UserA: Drag the uploaded normal map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the normal map you selected<br />
# UserA: Verify that 'Bumpiness' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that you see both the normal map and diffuse map applied on the rendered box<br />
# UserC: Verify that you can see the diffuse texture, but no normal map effect<br />
<br />
=== Normal Map Texture mapping ===<br />
====Normal texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Bumpiness (normal)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestNormal001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Bumpiness (normal)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestNormal001.png]] as the normal map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the normal map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Shininess' settings ==<br />
<br />
=== Layout of Shininess settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the build tool layout looks like this mockup: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA: Verify the following default settings:<br />
#* Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
#* Verify that the 'Shininess' setting is currently 'None'<br />
#* Verify that 'Glossiness' is hidden in this mode<br />
#* Verify that 'Environment' is hidden in this mode<br />
#* Verify that the 'Color' is hidden in this mode<br />
#* Verify that the 'Mapping' setting is 'Default', and cannot be edited<br />
#* Verify that 'Horizontal scale' is 1.0, and cannot be edited<br />
#* Verify that 'Vertical scale' is 1.0, and cannot be edited<br />
#* Verify that 'Repeats per meter' is 2.0 (this corresponds to a horizontal scale of 1.0 for a 50cm object), and cannot be edited<br />
#* Verify that 'Rotation' is 0.0, and cannot be edited<br />
#* Verify that 'Horizontal offset' is 0.0, and cannot be edited<br />
#* Verify that 'Vertical offset' is 0.0, and cannot be edited<br />
#* Verify that 'Align planar faces' is disabled, and cannot be edited<br />
# UserA: Deselect the object<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
<br />
=== Legacy Shiny ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that you see the following options under the Shininess menu:<br />
#* None<br />
#* Low<br />
#* Medium<br />
#* High<br />
# UserC: Rez a box and edit it with the build tool<br />
# Do the following for Shininess settings 'Low', 'Medium', and 'High':<br />
#* UserA and UserC: select the same Shininess menu option for your object's texture<br />
#* UserA, UserB, and UserC: Verify that UserA's box has the same appearance as UserC's box<br />
#* 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<br />
#* UserA: Verify that Glossiness, Environment, and Color settings are not visible when in this mode.<br />
#* UserA: Verify that Mapping drop down may be switched from Default to Planar and back<br />
#* UserA: Verify that any prior changes made to; scale, repeats, rotation and offset are preserved when switching between Default and Planar<br />
<br />
=== Specular Map Texture Selection ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)" <br />
# UserA: Verify that the Texture preview is empty, with a black-on-grey "X" (indicating that no specular map is set)<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' is now set to "Use texture"<br />
#* Verify that the floater has new elements, and now looks like [[:File:BuildtoolSpecular-UseTexture.png]]<br />
#** Verify that Glossiness has a default value of 51<br />
#** Verify that Environment has a default value of 0<br />
#** Verify that Color defaults to white<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned.<br />
#* The stained parts and the scratches should be less shiny than other parts of the texture<br />
# UserC: Verify that you can see the diffuse texture, but no shiny effect<br />
# UserA: From the 'Shininess' menu, choose 'None'<br />
# UserA: Verify that the Texture preview is now empty, with a black-on-grey "X" (indicating that no normal map is set)<br />
# UserA: Verify that the build tool layout has reverted to the style shown here: [[:File:BuildtoolSpecular-NoTexture.png]]<br />
# UserA, UserB, and UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Drag the uploaded specular map from your inventory onto the Texture preview icon<br />
# UserA: Verify that the Texture preview shows the specular map you selected<br />
# UserA: Verify that 'Shininess' becomes set to "Use Texture"<br />
# UserA and UserB: Verify that the uploaded textures appear on the box face at full scale, and are aligned<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
<br />
=== Specular Map Glossiness and Environment ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: if you don't already have them in your inventory, upload these two textures to SL<br />
#* [[:File:TestDiffuse001.png]]<br />
#* [[:File:TestSpecular001.png]]<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool.<br />
# UserA: Set the uploaded diffuse texture as the diffuse texture on your object<br />
# UserA: In the Texture tab, change the edit mode from "Texture (diffuse)" to "Shininess (specular)"<br />
# UserA: Click on the texture icon, then choose the uploaded specular map using the texture picker<br />
# UserA and UserB: verify that you see the object with the specular map applied<br />
# UserC: Verify that you can see the diffuse texture, but no specular map effect<br />
# UserA: Verify these default settings:<br />
#* Glossiness should be 51<br />
#* Environment should be 0<br />
# UserA: Increase the Environment setting to 204<br />
# UserA and UserB: Verify that the reflected color of the object now includes more of the environment (blue highlights from the sky color)<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter an Environment setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter an Environment setting < 0, and verify that the UI slams it to 0<br />
# UserA: Increase the Glossiness setting to 204<br />
# UserA and UserB: Verify that the specular highlights are now more 'blurred'<br />
# UserC: verify that you see no change<br />
# UserA: Try to enter a Glossiness setting > 255, and verify that the UI slams it to 255<br />
# UserA: Try to enter a Glossiness setting < 0, and verify that the UI slams it to 0<br />
<br />
=== Specular Map Texture mapping ===<br />
====Specular texture, Default mapping====<br />
# Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* '''Shininess (specular)'''<br />
#* '''Mapping: Default'''<br />
# UserA: change the prim's texture to [[:File:TestSpecular001.png]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
====Normal texture, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# 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.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Materials<br />
#* Shiniiness (specular)<br />
#* '''Mapping: Planar'''<br />
# USerA: Set [[:File:TestSpecular001.png]] as the specular map, via the texture picker.<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify that the diffuse texture appearance remains unchanged<br />
#* 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<br />
# UserA: Verify that Rotation controls rotation of the specular map relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
== Verify functionality of 'Media' settings ==<br />
=== Layout and Default Values of Media Settings ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Verify that the build tool layout looks like this mockup: File:BuildToolMediaMode.png<br />
# UserA: Verify that the following defaults are set:<br />
#* Verify that the Color appears white<br />
#* Verify that Transparency is 0%<br />
#* Verify that Glow is 0.00<br />
#* Verify that 'Full Bright' is disabled<br />
#* Verify that 'Mapping' is 'Default<br />
#** Verify that 'Horizontal scale' and 'Vertical scale' are both 1.00<br />
#** Verify that 'Repeats per meter' is 2.0 (2.0/meter corresponds to 1.0/face on a 50cm cube face), and can be edited<br />
#** Verify that 'Rotation' is 0.00<br />
#** Verify that 'Horizontal offset' and 'Vertical offset' are both 0.00<br />
#* Verify that 'Align planar faces' is unchecked and cannot be edited (is 'greyed out')'<br />
# UserA, UserB, UserC: verify that the box's appearance is unchanged (was not accidentally edited)<br />
=== Adding, and removing, and aligning media ===<br />
# UserA, UserB, and UserC: login<br />
# UserA: Rez a box, select it, and hit 'Edit' to open the build tool<br />
# UserA: Change your selection mode to "Select Face" and select only the top face<br />
# UserA: In the Texture tab, change the edit mode from "Materials" to "Media". <br />
# UserA: Click on the "Choose.." button, and verify that the "MEDIA SETTINGS" floater appears, and looks like this: [[:File:BuildToolMediaSettings.png]]<br />
# UserA: Type "http://secondlife.com" into the Home Page text field in "MEDIA SETTINGS", and hit "Apply"<br />
# UserA, UserB, and UserC: Verify that you see the SL website appear on the box's top face<br />
# UserA: Change the 'Horizontal offset' value to 0.2<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now slightly offset<br />
# UserA: Click on the 'Align' button to align the website with the box's edges<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is now aligned with the box edges<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "No"<br />
# UserA, UserB, and UserC: Verify that the SL website on the box is unchanged<br />
# UserA: Click on the 'Remove' button to remove the prim media<br />
# UserA: Verify that you see a modal dialog, asking to confirm media removal. Click "Yes"<br />
# 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<br />
<br />
===Media Texture Mapping ===<br />
====Media, Default mapping====<br />
# UserA, UserB, UserC: login<br />
# UserA: Rez a box, and edit one of its faces with the Build Tool<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#* '''Mapping: Default'''<br />
# UserA: Add media to a face on the box, using "http://secondlife.com", as in [[#Layout_and_Default_Values_of_Media_Settings]]<br />
# UserA: set Horizontal Scale to 2<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: Verify Repeats per Meter value has automatically changed to 4.0<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each prim face matches the Horizontal Scale setting: 2 repeats, side-by-side.<br />
# UserA: set Vertical Scale to 2<br />
# UserA: set Vertical Offset to 0.5<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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<br />
# UserA: set Horizontal Scale to 1<br />
# UserA: set Horizontal offset to 0<br />
# UserA: Verify Repeats per Meter value remains at 4.0<br />
# UserA: Deselect the box<br />
#* 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.<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# UserA: Verify that Align Planar Faces is disabled/greyed out when in the Mapping Default mode<br />
<br />
==== Media, Planar mapping====<br />
# UserA, UserB, UserC: Login<br />
# UserA: Rez a cube and resize it to 1m per side. Reposition the cube so the entire prim can be viewed. Add <test texture> via the texture picker.<br />
# UserA: Set the Texture panel's dropdowns to read:<br />
#* Media<br />
#** '''Mapping: Planar'''<br />
# UserA: Verify that the Repeats/Meter value is disabled/greyed out when in the Mapping Planar mode is active<br />
# 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.<br />
# UserA: Set Horizontal Scale to 4<br />
# UserA: Set Vertical Scale to 6<br />
# 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)<br />
# UserA: set horizontal offset to 0.5<br />
# UserA: set Vertical offset to 0.5<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: Verify the number of repeats visible on each plane of each prim face matches 4 repeats horizontally, 6 vertically<br />
# UserA: Verify that Rotation controls rotation of the texture relative to vertical. Range is -360° to 360°.<br />
# UserA: Deselect the box<br />
#* UserA, UserB, and UserC: verify that for Rotation Degrees edits, the shift is along the texture, not the object face.<br />
# '''Align Planar Faces test TBD'''<br />
<br />
= Materials Loading Test =<br />
This test verifies that the viewer can fetch materials data and render it properly.<br />
<br />
== Obtaining Test Objects ==<br />
This test requires using 2 test objects which each contain many materials.<br />
<br />
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:<br />
* MaterialsObject01-50 contains 50 boxes, numbered by 01-50 with matching diffuse, normal, and specular maps.<br />
* MaterialsObject51-100 contains 50 boxes, numbered by 51-100 with matching diffuse, normal, and specular maps.<br />
<br />
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.<br />
<br />
== Materials load when rezzed ==<br />
# Log in<br />
# Find a pair of neighboring regions which both allow you to rez objects, and move near the sim border<br />
# Rez 'MaterialsObject01-50' in the region your avatar is in<br />
# Without much delay, rez 'MaterialsObject51-100' in the neighboring region<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This may take a short while, since the viewer needs to download 300 separate textures for these objects<br />
<br />
== Materials load upon login ==<br />
# Complete the [[#Materials_load_when_rezzed]] test first<br />
# Log out<br />
# Login to the location where the objects were rezzed<br />
# Verify that all diffuse/normal/specular maps for both linksets load in a timely manner<br />
#* This should be relatively fast, since the viewer should have these textures in its cache<br />
<br />
= Materials Rendering Test =<br />
''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''<br />
<br />
== Rendering of Legacy Bumpmaps and Shiny ==<br />
''Note: this was lifted from [[Render_Correctness_Test]]''<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/243/247/23<br />
# Set your shaders and sun position as indicated on the red sphere at that location.<br />
# Verify the spheres render the same as they appear in the picture at that location.<br />
# Continue testing at the 5 stations to the South.<br />
# Repeat test with 'Advanced Lighting Model' from graphics preferences both enabled and disabled (where allowed)<br />
#* It is expected that 'Advanced Lighting Model' can only be enabled if both 'Basic Shaders' and 'Atmospheric Shaders' settings are enabled<br />
<br />
==100% Transparent + Glow==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/240/174/23<br />
# Set your shaders as indicated by the red sphere at that location.<br />
# Verify that the sphere glows with ALM enabled.<br />
# Verify that the sphere does not become opaque and black:<br />
#* Under the Advanced->Rendering Types menu uncheck 'Water'<br />
#* In Me->Preferences->Graphics uncheck and then recheck 'Advanced Lighting Model'<br />
#* The sphere should continue to glow bright white.<br />
<br />
''Note: When finished be sure to turn the water rendering back on in the Rendering Types menu''<br />
<br />
==Consistent Lighting vs Solid and Alpha Surfaces==<br />
# Go to http://maps.secondlife.com/secondlife/Bug%20Island%202/239/170/23<br />
# The white plane is actually made up of two planes linked together.<br />
# The plane on the left is solid, and the plane on the right has some Transparency %.<br />
# With Local Lights on Verify under the following conditions that the two planes appear to be one plane:<br />
#* With Basic Shaders enabled.<br />
#* With Atmospheric Shaders enabled.<br />
#* With Advanced Lighting Model enabled under all Sun Settings:<br />
#** Sunrise<br />
#** Midday<br />
#** Sunset<br />
#** Midnight<br />
<br />
==Gamma Consistency w/ Full Bright + Alpha==<br />
# Got to http://maps.secondlife.com/secondlife/Bug%20Island%202/241/164/23<br />
# Follow the guidelines stated in the text on the red sphere at that location.<br />
#* The cube with the pink circle should not be bright than the solid pink cube.<br />
#* The cube with the target on it should not darken with ALM enabled.<br />
<br />
== Alpha Modes Rendering ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/233/251/42<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that row of 4 boxes on the northern side roughly match the appearance shown on the inworld 'Alpha modes sample' object<br />
#* 'Alpha blended' should have a smooth transparency transition<br />
#* 'Alpha masked' should have an abrupt transparency transition, with each pixel either fully opaque or fully transparent<br />
#* 'Emissive mask' should look bright in the areas which appear more opaque in the 'Alpha blended' box<br />
#* 'No Alpha' should be fully opaque<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the 'Emissive masked' box now appears the same as the 'No Alpha' box<br />
# Verify that the other boxes have not changed their basic appearance <br />
<br />
== Rendering with Normal Maps ==<br />
# Enter the 'Materials rendering test room' at http://maps.secondlife.com/secondlife/Bug%20Island%202/235/248/46<br />
# Click World -> Sun -> Midday to set the viewer lighting<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# 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)<br />
#* The 1st row, 'no specular', has objects which contain a normal map but have specularity disabled. These objects should have a totally matte appearance.<br />
#* The 2nd row, 'low shiny', has objects which contain a normal map and use the legacy 'Low Shiny' setting. These objects should be slightly shiny, mostly for 'environment' reflections.<br />
#* The 3rd row, 'medium shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'low shiny' row, mostly for 'environment' reflections.<br />
#* The 4th row, 'high shiny', has objects which contain a normal map and use the legacy 'Medium Shiny' setting. These objects should be slightly shinier than the 'medium shiny' row, mostly for 'environment' reflections.<br />
#* The 5th row, '0 gloss, 0 env', has objects which contain a normal map and the '001' specular map, but has both glossiness and environment set to 0. These objects should look identical to the 'no specular' row.<br />
#* The 6th row, '51 gloss, 0 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=0. These objects should by mostly matte, except for shiny '001' sections in the upper-left and lower-right corners.<br />
#* The 7th row, '51 gloss, 0 env, red', has objects which contain a normal map and the '001' specular map, and has both glossiness=51, environment=0, and a red specular color. These objects should appaer similar to those in the '51 gloss, 0 env' row, except that the shiny '001' parts should have a red hue.<br />
#* The 8th row, '51 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=51 and environment=200. These objects should appaer metallic all over, and have the shiny '001' lettering in the upper-left and lower-right corners.<br />
#* The 9th row, '0 gloss, 200 env', has objects which contain a normal map and the '001' specular map, and has both glossiness=0 and environment=200. These objects should appear metallic all over, but should only have the shiny '001' 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).<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Look at the wall of test objects to the East, and confirm these changes:<br />
#* All 'emissive mask' objects (far right column) now appear identical to the 'alpha none' objects next to them<br />
#* All normal maps are missing<br />
#* 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.<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'opaque', 'alpha none', and 'emissive mask' objects appear identical to each other (and look shiny)<br />
#* For each of rows 2-4 (low/medium/high shiny), the 'alpha blend' and 'alpha mask' objects all appear non-shiny<br />
<br />
== Materials Rendering on HUDs ==<br />
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.<br />
# Take a copy of 'Materials test HUD', 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.<br />
# Enable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Wear the 'Materials test HUD' object from inventory. By default, it should attach to the 'Center' HUD attachment point<br />
# If you have trouble seeing the floating text about each HUD object (the text can be crowded), set 'UI size' to 0.75 under Preferences->Advanced<br />
# Position your camera so that you can see the attachments clearly - I used a blank-textured large prim as background<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Verify that no normal or specular maps appear with the '001' pattern<br />
#** The boxes labelled with 'X gloss, Y env' should be identical to the 'no specular' boxes on the far left column<br />
#** Each of the 'no specular' boxes on the far left column should appear identical to the non-brick 'Water particle 1' objects on the top row<br />
#** In the top row, "No Alpha 'Water Particle 1' with legacy bricks" should look the same as "Emissive Masked 'Water Particle 1' with legacy bricks"<br />
#* Verify that 'Opaque '001' diffuse map with legacy bricks' in the upper-left corner is the only box that has a visible 'bricks' pattern (this is legacy bumpiness)<br />
#* Verify that the other 'with legacy bricks' objects in the top row do *not* have any bumpiness effect, and that the alpha modes render as labelled<br />
#** These objects should have the same appearance as the non-'brick' objects on the right side of the first row<br />
#* Verify that Alpha mode renders correctly<br />
#** Verify that all of the 'opaque' boxes (with the 001 texture) appear fully opaque<br />
#** Verify that all of the 'Alpha blended' objects appear alpha blended (semitransparent, with soft edges)<br />
#** Verify that all of the 'Alpha masked' objects appear alpha masked (semitransparent, with hard edges)<br />
#** Verify that all 'emissive mask' boxes match their corresponding 'alpha none' boxes, since all HUD objects render as fully emissive ('full bright')<br />
#* Verify that legacy shiny objects appear darker than the others<br />
#** Opaque-rendered objects (no alpha, emissive mask, or opaque) set to low/medium/high shiny boxes appear darker than the other boxes<br />
#** The shading should be more severe with increasing shiny level: 'high shiny' objects should be darkest, while 'low shiny' objects should not be so dark<br />
# Disable "Advanced Lighting Model" in your Preferences, under Graphics->Advanced<br />
# Verify that the HUD appears like this screen shot: [[:File:Materials_test_HUD_appearance.png]]<br />
#* Appearance should match what you saw when "Advanced Lighting Model" was enabled<br />
<br />
== Materials Rendering on Rigged Meshes ==<br />
TODO<br />
<br />
== Rendering of Environment and Exponent Masks ==<br />
TODO<br />
<br />
[[Category:QA Portal]]<br />
[[Category:Test Scripts]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&diff=1208320Bug Island Test2019-04-12T05:59:19Z<p>Dan Linden: /* Transparency interaction */</p>
<hr />
<div>[[Category:Test Scripts]]<br />
-In progress-<br />
<br />
=== Bump maps ===<br />
====Bump maps look correct====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid<br />
* Set Preferences > Graphics Quality to Mid<br />
* Verify the bump map looks the same as this picture.<br />
[[File:Bump_map_spheres.jpg]]<br />
<br />
====Custom bump maps load for objects at a distance====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.<br />
* Set Preferences > Graphics to Mid.<br />
* Clear the cache (Preferences > Advanced> Clear Cache) and relog.<br />
* Wait for the textures to load on the bumpmapped spheres.<br />
* Fly to the spheres<br />
* Verify the bump map looks the same as the picture above.<br />
<br />
====Brightness vs. Darkness bump maps====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27<br />
* Set Set Preferences > Graphics Quality to High<br />
* Verify the wood grain appears indented of the left cube and embossed on the right cube.<br />
<br />
=== Texture animation ===<br />
<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27<br />
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.<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27<br />
Verify the texture animations matches the video.<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27<br />
Verify the texture animations matches the video.<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27<br />
Verify the texture animations matches the video.<br />
<br />
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27<br />
Verify the texture animations matches the video.<br />
<br />
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27<br />
Verify the textures are rotating and your viewer does not experience a drop in framerate here.<br />
<br />
=== Target Omega ===<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov<br />
<br />
=== Dynamic texture scaling ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27<br />
<br />
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.<br />
<br />
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.<br />
<br />
<br />
=== Prim LOD and bins ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
<br />
* Go to some region other than Bug Island for at least 10 seconds.<br />
* Teleport to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.<br />
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
* Verify the objects from the 4 left rows appear.<br />
* Verify the farthest 4 small objects in the right row do not appear.<br />
<br />
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Texture and color matching ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27<br />
<br />
* 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.<br />
* Verify the wall looks the same as the screenshot below.<br />
<br />
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Transparency interaction ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27<br />
<br />
* Right-click the semitransparent objects. <br />
* Verify objects with semitransparent textures, even 100% transparent, will become selected.<br />
* Verify objects with face transparency (set in the texture tab) of 99% or less will become selected.<br />
* 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.<br />
<br />
=== HUD (Heads Up Display) effects ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27<br />
<br />
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.<br />
<br />
Verify the following:<br />
* The object does Not emit particles while attached to your HUD.<br />
* The entire object is spinning from left to right.<br />
* The yellow is slightly transparent.<br />
* The yellow cube has one red face and 3 faces with red line.<br />
* The yellow cube has 2 faces with a red "1" texture.<br />
* The "1" texture on the face nearest to the red cube is animating - sliding from left to right.<br />
* The red cube is shiny<br />
* The red cube is spinning on an axis different than the yellow cube<br />
* The red cube has bump maps<br />
* The red cube has an "8" texture on one face and the other faces are the default wood texture.<br />
* The black hover text is visible and is above the blue cube<br />
* The blue cube is twisted<br />
* The blue cube is flexible (this may be hard to see)<br />
* The blue cube is shiny.<br />
* The blue cube is spinning on an axis different than the yellow cube or red cube.<br />
<br />
=== Flexible objects ===<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27<br />
* 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.<br />
<br />
[[File:Flexy1.jpg]]<br />
<br />
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)<br />
<br />
=== Sculpty objects ===<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. <br />
* Make sure you Draw Distance (in Preferences > 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. <br />
* Clear your SL cache (Preferences > Advanced > Clear Cache) and relog. <br />
* 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.<br />
<br />
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27<br />
* Verify the Scultpy objects look like this screenshot.<br />
<br />
[[File:Sculpty1.jpg]]<br />
<br />
=== Lights ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27<br />
* Set World > Sun > Midnight<br />
* Set Graphics to Mid<br />
* Detach any attachments that are lights.<br />
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.<br />
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.<br />
<br />
=== Small texture loading ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27<br />
<br />
* Verify these small textures load quickly. <br />
* Verify these texture appear the same as in the picture below.<br />
[[File:small_textures.png|200px|thumb|none|click for full image]]<br />
<br />
=== Parcel based media ===<br />
Some of these tests require QuickTime be installed on your computer.<br />
<br />
Type Movie, video/mp4<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie is scaled to fill the face of the box.<br />
* Go out of the parcel so the movie stops.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie covers only part of the face of the box, and the rest of the face is white.<br />
<br />
<br />
Type Web Content, text/html<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* This will look exactly the same as the previous test.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&diff=1207482Bug Island Test2018-08-30T05:46:10Z<p>Dan Linden: /* Prim LOD and bins */</p>
<hr />
<div>[[Category:Test Scripts]]<br />
-In progress-<br />
<br />
=== Bump maps ===<br />
====Bump maps look correct====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid<br />
* Set Preferences > Graphics Quality to Mid<br />
* Verify the bump map looks the same as this picture.<br />
[[File:Bump_map_spheres.jpg]]<br />
<br />
====Custom bump maps load for objects at a distance====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.<br />
* Set Preferences > Graphics to Mid.<br />
* Clear the cache (Preferences > Advanced> Clear Cache) and relog.<br />
* Wait for the textures to load on the bumpmapped spheres.<br />
* Fly to the spheres<br />
* Verify the bump map looks the same as the picture above.<br />
<br />
====Brightness vs. Darkness bump maps====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27<br />
* Set Set Preferences > Graphics Quality to High<br />
* Verify the wood grain appears indented of the left cube and embossed on the right cube.<br />
<br />
=== Texture animation ===<br />
<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27<br />
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.<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27<br />
Verify the texture animations matches the video.<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27<br />
Verify the texture animations matches the video.<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27<br />
Verify the texture animations matches the video.<br />
<br />
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27<br />
Verify the texture animations matches the video.<br />
<br />
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27<br />
Verify the textures are rotating and your viewer does not experience a drop in framerate here.<br />
<br />
=== Target Omega ===<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov<br />
<br />
=== Dynamic texture scaling ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27<br />
<br />
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.<br />
<br />
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.<br />
<br />
<br />
=== Prim LOD and bins ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
<br />
* Go to some region other than Bug Island for at least 10 seconds.<br />
* Teleport to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.<br />
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
* Verify the objects from the 4 left rows appear.<br />
* Verify the farthest 4 small objects in the right row do not appear.<br />
<br />
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Texture and color matching ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27<br />
<br />
* 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.<br />
* Verify the wall looks the same as the screenshot below.<br />
<br />
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Transparency interaction ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27<br />
<br />
* Right-click the semitransparent objects. <br />
* Verify objects with textures 87% or less transparent will become selected. <br />
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.<br />
<br />
=== HUD (Heads Up Display) effects ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27<br />
<br />
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.<br />
<br />
Verify the following:<br />
* The object does Not emit particles while attached to your HUD.<br />
* The entire object is spinning from left to right.<br />
* The yellow is slightly transparent.<br />
* The yellow cube has one red face and 3 faces with red line.<br />
* The yellow cube has 2 faces with a red "1" texture.<br />
* The "1" texture on the face nearest to the red cube is animating - sliding from left to right.<br />
* The red cube is shiny<br />
* The red cube is spinning on an axis different than the yellow cube<br />
* The red cube has bump maps<br />
* The red cube has an "8" texture on one face and the other faces are the default wood texture.<br />
* The black hover text is visible and is above the blue cube<br />
* The blue cube is twisted<br />
* The blue cube is flexible (this may be hard to see)<br />
* The blue cube is shiny.<br />
* The blue cube is spinning on an axis different than the yellow cube or red cube.<br />
<br />
=== Flexible objects ===<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27<br />
* 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.<br />
<br />
[[File:Flexy1.jpg]]<br />
<br />
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)<br />
<br />
=== Sculpty objects ===<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. <br />
* Make sure you Draw Distance (in Preferences > 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. <br />
* Clear your SL cache (Preferences > Advanced > Clear Cache) and relog. <br />
* 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.<br />
<br />
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27<br />
* Verify the Scultpy objects look like this screenshot.<br />
<br />
[[File:Sculpty1.jpg]]<br />
<br />
=== Lights ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27<br />
* Set World > Sun > Midnight<br />
* Set Graphics to Mid<br />
* Detach any attachments that are lights.<br />
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.<br />
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.<br />
<br />
=== Small texture loading ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27<br />
<br />
* Verify these small textures load quickly. <br />
* Verify these texture appear the same as in the picture below.<br />
[[File:small_textures.png|200px|thumb|none|click for full image]]<br />
<br />
=== Parcel based media ===<br />
Some of these tests require QuickTime be installed on your computer.<br />
<br />
Type Movie, video/mp4<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie is scaled to fill the face of the box.<br />
* Go out of the parcel so the movie stops.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie covers only part of the face of the box, and the rest of the face is white.<br />
<br />
<br />
Type Web Content, text/html<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* This will look exactly the same as the previous test.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&diff=1207481Bug Island Test2018-08-29T06:56:53Z<p>Dan Linden: /* Parcel based media */</p>
<hr />
<div>[[Category:Test Scripts]]<br />
-In progress-<br />
<br />
=== Bump maps ===<br />
====Bump maps look correct====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid<br />
* Set Preferences > Graphics Quality to Mid<br />
* Verify the bump map looks the same as this picture.<br />
[[File:Bump_map_spheres.jpg]]<br />
<br />
====Custom bump maps load for objects at a distance====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.<br />
* Set Preferences > Graphics to Mid.<br />
* Clear the cache (Preferences > Advanced> Clear Cache) and relog.<br />
* Wait for the textures to load on the bumpmapped spheres.<br />
* Fly to the spheres<br />
* Verify the bump map looks the same as the picture above.<br />
<br />
====Brightness vs. Darkness bump maps====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27<br />
* Set Set Preferences > Graphics Quality to High<br />
* Verify the wood grain appears indented of the left cube and embossed on the right cube.<br />
<br />
=== Texture animation ===<br />
<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27<br />
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.<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27<br />
Verify the texture animations matches the video.<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27<br />
Verify the texture animations matches the video.<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27<br />
Verify the texture animations matches the video.<br />
<br />
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27<br />
Verify the texture animations matches the video.<br />
<br />
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27<br />
Verify the textures are rotating and your viewer does not experience a drop in framerate here.<br />
<br />
=== Target Omega ===<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov<br />
<br />
=== Dynamic texture scaling ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27<br />
<br />
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.<br />
<br />
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.<br />
<br />
<br />
=== Prim LOD and bins ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.<br />
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
* Verify the objects from the 4 left rows appear.<br />
* Verify the farthest 4 small objects in the right row do not appear.<br />
<br />
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
=== Texture and color matching ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27<br />
<br />
* 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.<br />
* Verify the wall looks the same as the screenshot below.<br />
<br />
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Transparency interaction ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27<br />
<br />
* Right-click the semitransparent objects. <br />
* Verify objects with textures 87% or less transparent will become selected. <br />
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.<br />
<br />
=== HUD (Heads Up Display) effects ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27<br />
<br />
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.<br />
<br />
Verify the following:<br />
* The object does Not emit particles while attached to your HUD.<br />
* The entire object is spinning from left to right.<br />
* The yellow is slightly transparent.<br />
* The yellow cube has one red face and 3 faces with red line.<br />
* The yellow cube has 2 faces with a red "1" texture.<br />
* The "1" texture on the face nearest to the red cube is animating - sliding from left to right.<br />
* The red cube is shiny<br />
* The red cube is spinning on an axis different than the yellow cube<br />
* The red cube has bump maps<br />
* The red cube has an "8" texture on one face and the other faces are the default wood texture.<br />
* The black hover text is visible and is above the blue cube<br />
* The blue cube is twisted<br />
* The blue cube is flexible (this may be hard to see)<br />
* The blue cube is shiny.<br />
* The blue cube is spinning on an axis different than the yellow cube or red cube.<br />
<br />
=== Flexible objects ===<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27<br />
* 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.<br />
<br />
[[File:Flexy1.jpg]]<br />
<br />
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)<br />
<br />
=== Sculpty objects ===<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. <br />
* Make sure you Draw Distance (in Preferences > 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. <br />
* Clear your SL cache (Preferences > Advanced > Clear Cache) and relog. <br />
* 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.<br />
<br />
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27<br />
* Verify the Scultpy objects look like this screenshot.<br />
<br />
[[File:Sculpty1.jpg]]<br />
<br />
=== Lights ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27<br />
* Set World > Sun > Midnight<br />
* Set Graphics to Mid<br />
* Detach any attachments that are lights.<br />
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.<br />
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.<br />
<br />
=== Small texture loading ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27<br />
<br />
* Verify these small textures load quickly. <br />
* Verify these texture appear the same as in the picture below.<br />
[[File:small_textures.png|200px|thumb|none|click for full image]]<br />
<br />
=== Parcel based media ===<br />
Some of these tests require QuickTime be installed on your computer.<br />
<br />
Type Movie, video/mp4<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie is scaled to fill the face of the box.<br />
* Go out of the parcel so the movie stops.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "8" texture. <br />
* Verify the movie covers only part of the face of the box, and the rest of the face is white.<br />
<br />
<br />
Type Web Content, text/html<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* This will look exactly the same as the previous test.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Bug_Island_Test&diff=1207439Bug Island Test2018-08-15T22:35:54Z<p>Dan Linden: /* Lights */</p>
<hr />
<div>[[Category:Test Scripts]]<br />
-In progress-<br />
<br />
=== Bump maps ===<br />
====Bump maps look correct====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/83/22/27 and sit on the red pyramid<br />
* Set Preferences > Graphics Quality to Mid<br />
* Verify the bump map looks the same as this picture.<br />
[[File:Bump_map_spheres.jpg]]<br />
<br />
====Custom bump maps load for objects at a distance====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/75/110/31 and face south.<br />
* Set Preferences > Graphics to Mid.<br />
* Clear the cache (Preferences > Advanced> Clear Cache) and relog.<br />
* Wait for the textures to load on the bumpmapped spheres.<br />
* Fly to the spheres<br />
* Verify the bump map looks the same as the picture above.<br />
<br />
====Brightness vs. Darkness bump maps====<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/103/24/27<br />
* Set Set Preferences > Graphics Quality to High<br />
* Verify the wood grain appears indented of the left cube and embossed on the right cube.<br />
<br />
=== Texture animation ===<br />
<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/49/15/27<br />
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.<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/46/16/27<br />
Verify the texture animations matches the video.<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/42/16/27<br />
Verify the texture animations matches the video.<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/38/16/27<br />
Verify the texture animations matches the video.<br />
<br />
5. http://maps.secondlife.com/secondlife/Bug%20Island/34/15/27<br />
Verify the texture animations matches the video.<br />
<br />
6. http://maps.secondlife.com/secondlife/Bug%20Island/27/16/27<br />
Verify the textures are rotating and your viewer does not experience a drop in framerate here.<br />
<br />
=== Target Omega ===<br />
1. http://maps.secondlife.com/secondlife/Bug%20Island/29/23/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega1.mov<br />
<br />
2. http://maps.secondlife.com/secondlife/Bug%20Island/20/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega2.mov<br />
<br />
3. http://maps.secondlife.com/secondlife/Bug%20Island/15/18/28<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega3.mov<br />
<br />
4. http://maps.secondlife.com/secondlife/Bug%20Island/23/28/27<br />
Verify the motion matches https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/targetomega4.mov<br />
<br />
=== Dynamic texture scaling ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/45/30/27<br />
<br />
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.<br />
<br />
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.<br />
<br />
<br />
=== Prim LOD and bins ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/80/36/27 and look West.<br />
* Walk to http://maps.secondlife.com/secondlife/Bug%20Island/32/36/27<br />
* Verify the objects from the 4 left rows appear.<br />
* Verify the farthest 4 small objects in the right row do not appear.<br />
<br />
[[File:PrimLOD2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
=== Texture and color matching ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/50/27<br />
<br />
* 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.<br />
* Verify the wall looks the same as the screenshot below.<br />
<br />
[[File:Color_and_texture_matching.jpg|200px|thumb|none|click for full image]]<br />
<br />
=== Transparency interaction ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/65/27<br />
<br />
* Right-click the semitransparent objects. <br />
* Verify objects with textures 87% or less transparent will become selected. <br />
* Verify objects with textures 88% or more transparent will allow the right-click to pass through to the object behind it.<br />
<br />
=== HUD (Heads Up Display) effects ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/31/72/27<br />
<br />
Take a copy of the small rotating object on the ground. Wear it to attach it to the top left of your screen.<br />
<br />
Verify the following:<br />
* The object does Not emit particles while attached to your HUD.<br />
* The entire object is spinning from left to right.<br />
* The yellow is slightly transparent.<br />
* The yellow cube has one red face and 3 faces with red line.<br />
* The yellow cube has 2 faces with a red "1" texture.<br />
* The "1" texture on the face nearest to the red cube is animating - sliding from left to right.<br />
* The red cube is shiny<br />
* The red cube is spinning on an axis different than the yellow cube<br />
* The red cube has bump maps<br />
* The red cube has an "8" texture on one face and the other faces are the default wood texture.<br />
* The black hover text is visible and is above the blue cube<br />
* The blue cube is twisted<br />
* The blue cube is flexible (this may be hard to see)<br />
* The blue cube is shiny.<br />
* The blue cube is spinning on an axis different than the yellow cube or red cube.<br />
<br />
=== Flexible objects ===<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/79/27<br />
* 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.<br />
<br />
[[File:Flexy1.jpg]]<br />
<br />
Known issue: Flexible objects which are twisted do not appear twisted when you are zoomed in close. (MAINT-960)<br />
<br />
=== Sculpty objects ===<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/100/200/27 and face West. <br />
* Make sure you Draw Distance (in Preferences > 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. <br />
* Clear your SL cache (Preferences > Advanced > Clear Cache) and relog. <br />
* 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.<br />
<br />
[[File:Sculpties2.jpg|200px|thumb|none|click for full image]]<br />
<br />
<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/31/105/27<br />
* Verify the Scultpy objects look like this screenshot.<br />
<br />
[[File:Sculpty1.jpg]]<br />
<br />
=== Lights ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/131/27<br />
* Set World > Sun > Midnight<br />
* Set Graphics to Mid<br />
* Detach any attachments that are lights.<br />
* There are 8 green lights shining on 8 spheres in front of you, but only 6 lights will show at a time.<br />
* Move back and forth and verify that only 6 of the 8 lights appear at any one time.<br />
<br />
=== Small texture loading ===<br />
http://maps.secondlife.com/secondlife/Bug%20Island/32/151/27<br />
<br />
* Verify these small textures load quickly. <br />
* Verify these texture appear the same as in the picture below.<br />
[[File:small_textures.png|200px|thumb|none|click for full image]]<br />
<br />
=== Parcel based media ===<br />
Some of these tests require QuickTime be installed on your computer.<br />
<br />
Type Movie, video/mp4<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/214/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "4" texture. <br />
* Verify the movie is scaled to fill the face of the box.<br />
* Go out of the parcel so the movie stops.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/246/208/27<br />
* Verify a mp4 movie starts playing after a few seconds on the boxes with the "4" texture. <br />
* Verify the movie covers only part of the face of the box, and the rest of the face is white.<br />
<br />
<br />
Type Web Content, text/html<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/214/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* Go to http://maps.secondlife.com/secondlife/Bug%20Island/242/208/27<br />
* Verify a webpage with a Flash clock appears on the boxes with the "4" texture.<br />
* This will look exactly the same as the previous test.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207232Animesh Test2018-06-18T18:51:02Z<p>Dan Linden: /* Wear an animesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===An avatar may wear 1 Animesh object===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Rez the Animesh man<br />
* Enable Develop > Render Metadata > Joints (requires Preferences > Advanced > Show Develop Menu)<br />
* Verify joints are visible for the man and in addition joints for wings, tail, and rear legs.<br />
* Disable Animated Mesh.<br />
* Verify the joints are no longer visible on the Animesh man.<br />
* Create a cube and enable Animated Mesh<br />
* Verify no joints are visible for the cube.<br />
* Disable Develop > Render Metadata > Joints<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.<br />
<br />
<br />
===Animated objects should continue to play animations after crossing a region boundary===<br />
* Same as "Animated objects should be able to cross region boundaries as directed by a script" test.<br />
* Verify that the Raptor continues to animate after crossing the region boundary.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207227Animesh Test2018-06-18T07:17:16Z<p>Dan Linden: /* Enabling and Disabling Animated Mesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Rez the Animesh man<br />
* Enable Develop > Render Metadata > Joints (requires Preferences > Advanced > Show Develop Menu)<br />
* Verify joints are visible for the man and in addition joints for wings, tail, and rear legs.<br />
* Disable Animated Mesh.<br />
* Verify the joints are no longer visible on the Animesh man.<br />
* Create a cube and enable Animated Mesh<br />
* Verify no joints are visible for the cube.<br />
* Disable Develop > Render Metadata > Joints<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.<br />
<br />
<br />
===Animated objects should continue to play animations after crossing a region boundary===<br />
* Same as "Animated objects should be able to cross region boundaries as directed by a script" test.<br />
* Verify that the Raptor continues to animate after crossing the region boundary.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207226Animesh Test2018-06-18T04:09:38Z<p>Dan Linden: /* Enabling and Disabling Animated Mesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
* Take a copy of the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Rez the Animesh man<br />
* Enable Develop > Render Metadata > Joints (requires Preferences > Advanced > Show Develop Menu)<br />
* Verify joints are visible for the man in addition to joints for wings, tail, and rear legs.<br />
* Disable Animated Mesh.<br />
* Verify the joints are no longer visible on the Animesh man.<br />
* Disable Develop > Render Metadata > Joints<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.<br />
<br />
<br />
===Animated objects should continue to play animations after crossing a region boundary===<br />
* Same as "Animated objects should be able to cross region boundaries as directed by a script" test.<br />
* Verify that the Raptor continues to animate after crossing the region boundary.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207225Animesh Test2018-06-18T00:24:29Z<p>Dan Linden: /* Animated objects should continue to play animations after crossing a region boundary */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.<br />
<br />
<br />
===Animated objects should continue to play animations after crossing a region boundary===<br />
* Same as "Animated objects should be able to cross region boundaries as directed by a script" test.<br />
* Verify that the Raptor continues to animate after crossing the region boundary.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207224Animesh Test2018-06-18T00:24:07Z<p>Dan Linden: /* Animated objects should be able to cross region boundaries as directed by a script */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.<br />
<br />
<br />
===Animated objects should continue to play animations after crossing a region boundary===<br />
Same as "Animated objects should be able to cross region boundaries as directed by a script" test.<br />
Verify that the Raptor continues to animate after crossing the region boundary.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207201Animesh Test2018-06-12T05:23:41Z<p>Dan Linden: /* New Diagnostic Displays */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.<br />
<br />
===Animated objects should be able to cross region boundaries as directed by a script===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/75/247/23<br />
* Take a copy of the raptor and rez it.<br />
* The Raptor has the Kart script in it. The Kart script is from the Library/Objects/Kart 1.0 object.<br />
* Right-click the raptor and Ride<br />
* Use the arrows to drive and the Page Down or C key to reset if it tips over.<br />
* Verify you can drive the raptor around the region<br />
* Verify you can drive the raptor to an adjacent region.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207200Animesh Test2018-06-12T04:24:28Z<p>Dan Linden: /* Agent related text and controls should be hidden for Animesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]<br />
<br />
===New Diagnostic Displays===<br />
* Verify the following diagnostics display.<br />
* 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.<br />
* Develop->Render Metadata->Triangle count gives triangle information for objects in the scene. Shows a triangle count for the current LOD. Not restricted to animated objects.<br />
* Develop->Render Metadata->Collision Skeleton will show the collision volumes for animated objects in red (avatars are blue)<br />
* Develop->Avatar->Animation info will display any animations currently playing for an animated object, as it always has for avatars.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207199Animesh Test2018-06-11T22:25:27Z<p>Dan Linden: /* Selection and Editing */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.<br />
<br />
<br />
===Agent related text and controls should be hidden for Animesh===<br />
* Hover the mouse cursor over the Animesh man at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Verify that no hovertext appears about the object (This differs from regular objects.) <br />
* Right-click the Animesh man and inspect the right-click menu.<br />
* Verify there are no Agent related menu items, such as View Profile, Add friend, IM, Call, etc.<br />
* Verify the right-click menu is a typical Object context menu.<br />
[[Image:Animesh right-click1.png]]</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=File:Animesh_right-click1.png&diff=1207198File:Animesh right-click1.png2018-06-11T22:22:28Z<p>Dan Linden: </p>
<hr />
<div></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207195Animesh Test2018-06-11T22:06:58Z<p>Dan Linden: /* Enabling and Disabling Animated Mesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Take a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23 and rez it. <br />
* Verify the Animated Mesh checkbox cannot be modified because you do not have modify permissions for the object. <br />
* Take a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the Animated Mesh box should be disabled. <br />
* Right-click edit the bear at secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* Verify you can see the Animated Mesh checkbox is checked and grayed out.<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207193Animesh Test2018-06-11T21:49:58Z<p>Dan Linden: /* Selection and Editing */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Verify the Animated Mesh checkbox can only be modified if you have modify permissions for the object. <br />
** Test this with a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the box should be disabled. <br />
** Test this with a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
<br />
===Animated mesh can be rezzed from object inventory.===<br />
* Go to secondlife://Aditi/secondlife/Animesh2/101/248/23<br />
* Take a copy of the popgun.<br />
* Attach the popgun, press M to enter mouselook mode, and left-click to fire.<br />
* Verify you see Raptors drop out of the gun and walk around.<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207192Animesh Test2018-06-11T21:38:03Z<p>Dan Linden: /* Enabling and Disabling Animated Mesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose, arms stretched to the sides.<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
* Verify the Animated Mesh checkbox can only be modified if you have modify permissions for the object. <br />
** Test this with a copy of box1 at secondlife://Aditi/secondlife/Animesh2/92/247/23<br />
* Verify the Animated Mesh checkbox can only be modified if you are modifying the whole linkset. If you are editing component prims ("Edit linked"), the box should be disabled. <br />
** Test this with a copy of boxes2 at secondlife://Aditi/secondlife/Animesh2/95/248/23<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207191Animesh Test2018-06-11T21:21:18Z<p>Dan Linden: /* Enabling and Disabling Object Animation */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Animated Mesh===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207190Animesh Test2018-06-11T21:18:09Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Object Animation===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear. <br />
[[Image:Bear1.png]]<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=File:Bear1.png&diff=1207189File:Bear1.png2018-06-11T20:27:28Z<p>Dan Linden: </p>
<hr />
<div></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207188Animesh Test2018-06-11T20:26:49Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
<br />
<br />
===Enabling and Disabling Object Animation===<br />
* Rez a copy of the bear from secondlife://Aditi/secondlife/Animesh2/90/247/23<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Edit your bear, and uncheck the Animated Mesh checkbox<br />
* Verify the bear stops dancing and is now in a T-pose.<br />
* Verify observers see the same thing you do.<br />
* Wear the default male avatar from Library / Clothing / Older Outfits / Boy Next Door<br />
* Wear the bear on your right hand and walk around.<br />
* Verify your avatar looks like a bear.<br />
<br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and check the Animated Mesh checkbox.<br />
* Verify the bear now appears attached to your hand and starts dancing <br />
* Verify observers see the same thing you do.<br />
* Edit the bear you are wearing and uncheck the Animated Mesh checkbox. Deselect the mesh.<br />
* Verify your avatar looks like a bear again.<br />
* Verify observers see the same thing you do.<br />
* Detach the bear to Inventory<br />
* Rez the bear on the ground.<br />
* Verify the bear is in a T-pose<br />
* Edit your bear, and check the Animated Mesh checkbox<br />
* If the bear is not already dancing, click it to make it dance.<br />
* Verify observers see the same thing you do.<br />
<br />
<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&diff=1207097Content Creation User Group2018-05-21T21:25:38Z<p>Dan Linden: </p>
<hr />
<div>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!<br />
<br />
Normal schedule is to meet every Thursday at 1:00PM SLT, except the first Thursday of the month. Exceptions will be noted here.<br />
<br />
'''Upcoming meetings'''. Location: While animesh is in testing, we will be having our meetings in Aditi: secondlife://Aditi/secondlife/Animesh4/132/138/23<br />
<br />
* Thursday, May 24, 1:00PM SLT<br />
* Thursday, May 31, 1:00PM SLT<br />
<br />
== Agenda ==<br />
* Open Q&A<br />
<br />
Notes<br />
* 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]<br />
* 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]<br />
* ARCTan, a project to update rendering cost, land impact, and related things like mesh upload costs, is in progress.<br />
* Project EEP, which will give advanced configurable windlight environments for regions and parcels, is in progress.<br />
<br />
<!--======================== Please do not edit above this line ====================== Nal U.<br />
Feel free to add any content creation related topic to the end of this agenda<br />
by adding a numbered list entry; <br />
--><br />
=== User Questions & Topics ===<br />
<!-- Copied here for those that only edit ONLY this section.<br />
Copy the following line to the end of the list below and change 'topic' to your topic; the ~~~ will be replaced with your name:_____, Also leave no blank/empty lines between # lines.<br />
# topic (~~~) <br />
<br />
If you refer to a Jira issue, please use the template like this:<br />
{{JiraIssue|id|description}}<br />
--></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207070Animesh Test2018-05-10T23:14:25Z<p>Dan Linden: /* Wear / sit on animesh */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear an animesh===<br />
* Test is at secondlife://Aditi/secondlife/Animesh2/65/247/23<br />
* Take 3 copies of the Teddy bear to your inventory.<br />
* Attempt to add the 3 Teddy bears to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
<br />
===Teleport while wearing an animesh===<br />
* Wear an animesh that animates. (e.g. the Teddy bear)<br />
* Teleport to a far region, one that is not adjacent or kitty corner.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Log an observer in and verify the attached animesh looks the same to them.<br />
* Wait 1 minute before teleporting back.<br />
* Teleport back to the original location.<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
<br />
===Log in while wearing an animesh===<br />
* While wearing an animesh that animates (e.g. the Teddy bear), log out.<br />
* Log an observer in.<br />
* Log in the avatar wearing the animesh<br />
* Verify the animesh attachment continues to animate as expected. (e.g. the Teddy bear hold your hand and nods its head)<br />
* Verify the observe sees the same thing.<br />
* Sit on an animesh<br />
* Go to secondlife://Aditi/secondlife/Animesh2/78/247/23<br />
* Take a copy of the animesh raptor.<br />
* Rez the raptor.<br />
* Right-click it and select Ride.<br />
* Verify your avatar sits on the raptor.<br />
<br />
===Sit on an animesh while wearing an animesh===<br />
* While sitting on an animating animesh, attach an animating animesh.<br />
* Verify the two animesh are animating.<br />
* Log in an observer on an adjacent region<br />
* Verify the observer sees the same thing.<br />
* 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 ). <br />
* Verify the observer sees the two animesh are but they are not animating. <br />
* Verify the avatar is bent to to the shape of the animesh they are wearing. This is expected.<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207059Animesh Test2018-05-04T18:40:34Z<p>Dan Linden: /* Any animation triggered by any prim can drive any bone in the skeleton */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.<br />
<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207058Animesh Test2018-05-04T18:36:34Z<p>Dan Linden: /* Any animation triggered by any prim can drive any bone in the skeleton */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/248/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
* Click the black monolith and choose to stop animations<br />
* Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.<br />
<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207057Animesh Test2018-05-04T18:35:45Z<p>Dan Linden: /* Any animation triggered by any prim can drive any bone in the skeleton */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Go to secondlife://Aditi/secondlife/Animesh2/37/248/23<br />
Click the black monolith and choose to start animations.<br />
Verify the man animates typing and turning at the same time. (Two scripts in the 2 boxes are playing animations on the skeleton.) <br />
Click the black monolith and choose to stop animations<br />
Verify the man stops animating.<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.<br />
<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1207044Animesh Test2018-04-30T23:11:11Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates typing and walking at the same time. (He will halt frequently. That's expected)<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.<br />
<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.<br />
<br />
<br />
===Selection and Editing===<br />
* Verify you can select an animating Animesh by dragging a selection box around it while the Edit Tools (ctrl+3) are open. <br />
* Verify all selected animated objects pause all of their animations for the person selecting them.<br />
* Verify observers see the selected Animesh continue to animate.<br />
* Unselecting any animated object should resume its animations.<br />
* Verify you can select an animating Animesh with left-click while the Edit Tools (ctrl+3) are open. (known issue MAINT-7709)<br />
* 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.<br />
* Verify selecting an animated object via the Build menu -> Region Objects floater behaves similarly - the animation is stopped. (This is only testable if you are estate owner or manager or parcel owner)<br />
* Editing the translation and rotation of an animated object should work.<br />
* Editing the scale of an animated object will not work.<br />
* Moving an Animesh object across region boundaries while editing should work.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Content_Creation_User_Group&diff=1207028Content Creation User Group2018-04-26T18:06:45Z<p>Dan Linden: </p>
<hr />
<div>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!<br />
<br />
Normal schedule is to meet every Thursday at 1:00PM SLT, except the first Thursday of the month. Exceptions will be noted here.<br />
<br />
'''Upcoming meetings'''. Location: due to voice issues on aditi, for now we will be meeting on the main grid (agni) at http://maps.secondlife.com/secondlife/Hippotropolis/71/172/29 (some people may remember this as the old project-bento-era meeting location). Once voice on aditi is working, we will revert to our aditi animesh test region location.<br />
<br />
* Thursday, March 29, 1:00PM SLT<br />
* Thursday, April 5, 1:00PM SLT<br />
* '''No meeting''' Thursday, April 12<br />
* Thursday, April 19, 1:00PM SLT<br />
* Thursday, April 26, 1:00PM SLT (meeting on Agni. see above)<br />
<br />
== Agenda ==<br />
* Open Q&A<br />
<br />
Notes<br />
* 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]<br />
* 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]<br />
* ARCTan, a project to update rendering cost, land impact, and related things like mesh upload costs, is in progress.<br />
* Project EEP, which will give advanced configurable windlight environments for regions and parcels, is in progress.<br />
<br />
<!--======================== Please do not edit above this line ====================== Nal U.<br />
Feel free to add any content creation related topic to the end of this agenda<br />
by adding a numbered list entry; <br />
--><br />
=== User Questions & Topics ===<br />
<!-- Copied here for those that only edit ONLY this section.<br />
Copy the following line to the end of the list below and change 'topic' to your topic; the ~~~ will be replaced with your name:_____, Also leave no blank/empty lines between # lines.<br />
# topic (~~~) <br />
<br />
If you refer to a Jira issue, please use the template like this:<br />
{{JiraIssue|id|description}}<br />
--></div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Simulator_Smoke_Test&diff=1206824Simulator Smoke Test2018-03-21T21:51:22Z<p>Dan Linden: /* Parcel ownership. Divide, join, sell, deed, access, media, music */</p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:QA Portal]]<br />
[[Category:Quality Assurance]]<br />
[[Category:Test Scripts]]<br />
<br />
== Setup/Requirements ==<br />
* Two user accounts.<br />
* Three regions.<br />
** 2 adjacent and 1 remote.<br />
* One account should be an Estate Manager on the testing region.<br />
<br />
== Legacy Objects ==<br />
* This is needed to test that objects in the old file format (from 2006 and before) still work.<br />
*# Open your Library/Objects folder.<br />
*# Rez "Kart 1.0" to the ground.<br />
*# If it rezzes to the ground then the legacy object updater works.<br />
<br />
== Mesh Objects ==<br />
=== Mesh Upload and Rez===<br />
# Ensure that you have completed the [[Mesh#Mesh_tutorial|mesh tutorial]] for the grid you are testing on<br />
# Obtain [http://www.c3dl.org/wp-content/2.0Release/Resources/duck.dae duck.dae], which is a simple mesh duck<br />
# Upload duck.dae, using Build->Upload->Model.. in the viewer<br />
#* Edit the model name to something meaningful, but otherwise keep the default settings<br />
# Verify that you are charged L$17 to upload it<br />
# Verify that your inventory Objects folder contains a new object with the name you specified<br />
# Rez the object from inventory<br />
#* Verify that it loads and appears as to be a duck<br />
#* Select the duck and verify that the Build Tool shows 12 land impact<br />
<br />
=== Mesh Region Crossing ===<br />
# Rez a mesh object near the region boundary. The duck from the [[#Mesh_Upload_and_Rez|upload test]] is a good choice.<br />
# Select the object and move it into the adjacent region using the build tool<br />
# Verify that your avatar collides with the object in the new region<br />
<br />
== Create, save, load, destroy scripts ==<br />
* Creating a new script<br />
*# Open the Statistics Bar from the View menu [or press CTRL-SHIFT-1], and note the # of Active Scripts <br />
*# Make an object, name it "Spammer", and add the following script to it.<br />
*# Verify the # of Active Scripts has increased by one.<br />
<br />
<br />
// Chat spam script<br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
llWhisper(0, (string)llFrand(1));<br />
}<br />
touch(integer num_detected)<br />
{<br />
llWhisper(0, "item ID = "+(string)llGetKey());<br />
}<br />
}<br />
<br />
<br />
* Derezzing an object<br />
*# Take the Spammer into your inventory.<br />
*# Verify you no longer hear the chat spam.<br />
<br />
* Rez an object into the world from inventory<br />
*# Rez the Spammer into world again<br />
*# Verify the script is chatting once per second.<br />
*# Delete the Spammer<br />
<br />
* Load script from a simstate file on startup [To do this, you need to restart your sim. You will need Estate Manager level access to the region.]<br />
*# Rez the Spammer<br />
*# Click the spammer and note the item ID<br />
*# Note the # of Active Scripts in the Statistics Bar [CTRL-SHIFT-1]<br />
*# From the Region/Estate window click the Debug tab.<br />
*# Restart the sim using the "Restart Region" button.<br />
*# Teleport to another region, then teleport back after the region has restarted.<br />
*# Verify the Spammer is chatting once per second.<br />
*# Note the # of Active Scripts is the same as before the sim was restarted.<br />
*# Click the spammer and verify the item ID is the same as before.<br />
<br />
* Rez an attachment from inventory<br />
*# Attach the Spammer to your avatar from your inventory.<br />
*# Verify the script is chatting once per second.<br />
<br />
* Derezzing an attachment<br />
*# Detach the Spammer by right clicking it in your inventory, and detach.<br />
*# Verify you no longer hear the chat spam.<br />
<br />
* On an agent teleporting<br />
*# Attach the Spammer to your avatar from your inventory.<br />
*# Teleport, and verify the script is chatting once per second. (If it's not, make sure you are in over script enabled land)<br />
*# Detach the Spammer back to inventory<br />
<br />
* Duplicating an object in-world<br />
*# Dupe the object by editing it and hitting ctrl-D. Rename the duplicate to "dupe".<br />
*# Verify both objects are chatting.<br />
*# Delete the "dupe" object.<br />
<br />
* Deleting a script from an object<br />
*# Edit the "Spammer" and delete the script from the contents.<br />
*# Verify you no longer hear the chat spam.<br />
*# Delete the "Spammer" object.<br />
<br />
* On an object crossing a region boundary<br />
*# Rez the Spammer near a region boundary<br />
*# Open the Statistics Bar, and note the # of Active Scripts<br />
*# Drag the object into the next region<br />
*# Verify the # of Active Scripts decreased by one.<br />
*# Verify the Spammer is still spamming<br />
*# Drag the object back into the region you are in<br />
*# Verify the # of Active Scripts increased by one.<br />
<br />
* On an attachment/vehicle crossing a region boundary<br />
*# Rez the Spammer near a region boundary and rename it "Car"<br />
*# Sit on the Car<br />
*# Attach the Spammer from your inventory<br />
*# Verify both objects are spamming.<br />
*# Drag the Car into the adjacent region.<br />
*# Verify both objects are still spamming.<br />
*# Delete the Car<br />
<br />
* Running on an object entering/exiting a no-scripts area<br />
*# Rez the Spammer near a parcel that is set to "No Outside Scripts"<br />
*# Open the Statistics Bar from the View menu, and note the # of Active Scripts<br />
*# Drag the object into the "No Outside Scripts" parcel<br />
*# Verify the # of Active Scripts does not change<br />
*# Verify the Spammer stopped spamming<br />
*# Drag the object back out of the "No Outside Scripts"<br />
*# Verify the # of Active Scripts does not change<br />
<br />
* Running on a vehicle/attachment entering/exiting a no-scripts area<br />
*# Rez the Spammer near a parcel that is set to "No Outside Scripts" and rename it "Car"<br />
*# Sit on the Car<br />
*# Attach the Spammer from your inventory<br />
*# Verify both objects are spamming.<br />
*# Drag the Car into the no script parcel.<br />
*# Verify both objects have stopped spamming.<br />
*# Drag the Car out of the no script parcel.<br />
*# Verify that both objects have resumed spamming.<br />
*# Delete the Car and detach the spammer.<br />
<br />
* Stop a script on an object<br />
*# Rez the Spammer<br />
*# Note the # of Active Scripts in the Statistics Bar<br />
*# Edit the script on the spammer and uncheck the Running box.<br />
*# Verify the # of Active Scripts decreased by one.<br />
<br />
* Start a script on an object<br />
*# Edit the script on the spammer and check the Running box.<br />
*# Verify the Spammer resumed spamming and the # of Active Scripts increased by one.<br />
*# Delete the spammer.<br />
<br />
* Drop a script into an object in-world<br />
*# Rez the Spammer, edit the spammer and drag the script from the Spammer's contents to your inventory.<br />
*# Note the # of Active Scripts in the Statistics Bar<br />
*# Delete the script from the Spammer.<br />
*# Verify the Spammer stopped spamming and the # of Active Scripts decreased by one.<br />
*# Drag the script from your inventory to the Spammer object.<br />
*# Verify the Spammer resumed spamming and the # of Active Scripts increased by one.<br />
<br />
* Compiling a script successfully<br />
*# Note the # of Active Scripts in the Statistics Bar<br />
*# Make a box, add the default script, and save it.<br />
*# Verify the # of Active Scripts increased by one.<br />
<br />
* Failing to compile a script<br />
*# Edit the script, change "default" to "defaul" and save it.<br />
*# Verify the # of Active Scripts decreased by one.<br />
*# Delete the box<br />
<br />
== XML-RPC testscript ==<br />
Oskar update this section<br />
<br />
<br />
<br />
== Teleport ==<br />
* Teleport within the same region<br />
# Attach the popgun from the Library.<br />
# Teleport to another location within the same region.<br />
# Verify the teleport is quick and all your attachments arrive.<br />
<br />
* Teleport to a far, non-adjacent regions (that doesn't have a child agent)<br />
# Teleport to a region that is not adjacent to the sim you're in.<br />
# Verify all your attachments arrive.<br />
<br />
* Teleport to an adjacent region<br />
# Walk up to sim boundary, but don't walk across it. Teleport across the boundary to the other region.<br />
# Verify all your attachments arrive.<br />
<br />
* Users cannot teleport onto parcels they are banned from<br />
# Ban a test account from a parcel you own.<br />
# With the test account, attempt to teleport onto the parcel.<br />
# Verify the test account arrives at a parcel that is nearby the parcel they are banned from.<br />
<br />
* Users can teleport others to their location bypassing telehubs and landing points.<br />
# Put your User A on an island that has a Telehub and a Landing point, then move away from the landing point. (try Bug Island - http://slurl.com/secondlife/Bug%20Island/150/150/30)<br />
# Have User A search for User B a and offer a teleport.<br />
# Have User B accept the teleport offer. (User B should not be an estate manager for the region)<br />
# Verify that User B arrives in front of and facing User A.<br />
<br />
* Users can teleport to their friend's location<br />
# Have User A and User B befriend each other. In the Friend list, click the button to allow the other to see your location on the map.<br />
# Have User B teleport away.<br />
# Have User B, open User A's Profile, click Show on Map, then teleport to that location.<br />
# Verify that User B arrives at the region's telehub, and a red beacon is highlighting the User A's position.<br />
<br />
== llHTTPRequest test ==<br />
# Add the following script to an object and verify the script says "http test passes".<br />
<br />
<pre><br />
key my_http_request;<br />
string http_url="http://www.google.com";<br />
default<br />
{<br />
state_entry()<br />
{<br />
//llSay(0, "http test start");<br />
my_http_request = llHTTPRequest(http_url, [] ,"");<br />
}<br />
<br />
http_response(key id,integer status, list meta, string body)<br />
{<br />
if(my_http_request == id)<br />
{<br />
llSay(0, "http test passes");<br />
}<br />
} <br />
}<br />
</pre><br />
<br />
<br />
<br />
== Region handoffs ==<br />
* Region handoffs and attachments<br />
# Wear the Popgun from the Inventory Library.<br />
# Enter mouselook and verify the popgun fires. (if it fails, make sure you're on a parcel that allows running scripts and rezzing objects)<br />
# Edit the popgun, and move it away from your hand.<br />
# Fly across a region boundary.<br />
# Verify the popgun is still positioned away from your hand.<br />
# Enter mouselook and verify the popgun still fires.<br />
<br />
* Region handoffs while sitting.<br />
# Rez the Kart from the inventory and sit on it.<br />
# Drive into another region.<br />
# Verify you are sitting in the same position, and your avatar is playing the same sit animation.<br />
# Verify the Kart still has your controls and you are able to drive it.<br />
<br />
<br />
<br />
== Run physics. Rez, derez, link, delink, handle collisions, etc. ==<br />
* Link and delink retains positions and rotations of prims.<br />
# Make a complicated linked object with more than three pinned primitives, each piece with a non-trivial rotation, and preferably not all the same shape:<br />
# Unlink and link the collection a few times... the primitives should not change position/rotation between link/unlink cycles.<br />
# Duplicate the linked object with ctrl-D. Verify the copy looks the same as the original.<br />
<br />
* Throwing objects across region boundaries<br />
# Set the linked object physical and use Grab to throw it around. Verify it collides with the ground correctly.<br />
# Throw the object across the region boundary. Verify that it crossed the region boundary correctly.<br />
# Grab the same object in the remote region, and drag it back into your avatar's region. Verify it collides with the ground correctly.<br />
<br />
* Prim Fights<br />
# Create two boxes at the same position.<br />
# Select both boxes and set them physical<br />
# Verify that one box slowly moves above the other box, and rests on top of it with a small gap.<br />
<br />
== Pathfinding ==<br />
=== Basic Navmesh Generation ===<br />
# Login to a region<br />
# Open Build->Pathfinding->View/Test in the viewer, and enable the 'Navmesh' option to view the current navmesh of the region<br />
# Rez a box several meters above the ground, and scale it to be 30m * 30m, making it a large platform<br />
# Open the 'Pathfinding Linksets' floater in the viewer, and set your platform to be "Walkable". Apply this change.<br />
# Hit Build->Pathfinding->Rebake Region to regenerate the navmesh<br />
# After a minute or so, verify that the navmesh has been updated, in the "Pathfinding view/test" floater<br />
#* The platform should appear in the navmesh<br />
#* The navmesh should otherwise appear as it did before you added the platform<br />
<br />
=== Basic Character Movement ===<br />
# Rez a box on a walkable surface, such as the platform created in [[Basic_Nav_Mesh_Generation|the previous test]]<br />
# Save [[LSL_Example_Pathfinding_Wanderer|this wandering character script]] in the box<br />
# Select the box, and verify that the build tool shows this in the General tab:<br />
#* Pathfinding attributes: character<br />
#* land impact 15 (this is derived from the fixed physics cost of 15 for pathfinding characters)<br />
# Touch the box, and verify that it wanders around the nearby area<br />
<br />
=== Cross Region Pathfinding ===<br />
# Find a region border which is amenable to object crossing<br />
#* Parcels on both sides of the region boundary allow scripts and object entry for everybody<br />
#* Reasonably flat terrain around the region border<br />
#* If you change any settings which would affect the navmesh, rebake the navmeshes and wait a minute for the regions to share navmeshes<br />
# Rez a box on the ground, close to the region border<br />
# Save [[LSL_Example_Pathfinding_Wanderer|this wandering character script]] in the box<br />
# Select the box, and verify that the build tool shows this in the General tab:<br />
#* Pathfinding attributes: character<br />
#* land impact 15 (this is derived from the fixed physics cost of 15 for pathfinding characters)<br />
# Touch the box to initiate pathfinding movement<br />
# Verify that the box (eventually) wanders into both regions. The destinations chosen by the box should be within the area specified by the script.<br />
<br />
== Script and URL limit reporting ==<br />
*Requires a viewer that supports script limits (e.g. viewer2)<br />
# Go to a parcel you do not own (and not owned by a group that you own)<br />
# In a viewer that supports script limits (e.g. viewer2), select the parcel and open "About Land"<br />
# Verify that the "About Land" floater has a visible "Script Info" button<br />
# Click on the "Script Info" button, and note the total memory and URLs used in the parcel. Also verify that individual scripted items are *not* listed.<br />
# Rez a box in the parcel, and name it "WWW Server"<br />
# Save the "www server" script (shown below) in "WWW Server" as Mono <br />
# The WWW Server should supply you with a URL. Verify that you can visit this URL in a browser, and browser shows "Hello World!"<br />
# Refresh the Script Info floater while selecting the parcel, and verify that the URLs usage increases by 1, and that the script memory usage increases by 64KB. Also verify that individual scripted items are *not* listed.<br />
# Open the "My Avatar" tab on the Script Info floater, and verify that "WWW Server" appears in the list of scripted items, at "Location: Right Hand". Verify that it's still using 64KB of memory and 1 URL.<br />
# Detach "WWW Server"<br />
# Refresh list of items under the Script Info floater's "My Avatar" tab. Verify that "WWW Server" no longer appears in the list, and that your avatar's memory and URL usage decreased by 64KB and 1 URL, respectively.<br />
<br />
'''Script: www server'''<br />
default<br />
{<br />
on_rez(integer reznum)<br />
{<br />
llResetScript();<br />
}<br />
attach(key id)<br />
{<br />
if(id!=NULL_KEY) llResetScript();<br />
}<br />
state_entry()<br />
{<br />
llRequestURL();<br />
}<br />
<br />
http_request(key id, string method, string body)<br />
{<br />
if (method == URL_REQUEST_GRANTED)<br />
{<br />
llSay(0,"URL: " + body);<br />
}<br />
else if (method == URL_REQUEST_DENIED)<br />
{<br />
llSay(0, "Something went wrong, no url. " + body);<br />
}<br />
else if (method == "GET")<br />
{<br />
llHTTPResponse(id,200,"Hello World!");<br />
}<br />
else<br />
{<br />
llHTTPResponse(id,405,"Unsupported Method");<br />
}<br />
}<br />
}<br />
<br />
<br />
<br />
== Camera avatar-anti-occlusion (Keep your avatar visible) ==<br />
* Camera should move to keep your avatar in view, but should not oscillate.<br />
#Create a 10x10x10m prim.<br />
# Back up to the 10x10x10m prim. Verify the camera dollies in until it's right above your head.<br />
#Create a 10x01x10m prim wall.<br />
# Back up to a 10x01x10m wall. Verify your camera stays on the same side of the wall as the avatar, and does not pop through to the other side.<br />
# Stand back to back with an avatar that is the same height as you. Verify the camera does not bob around or zoom in and out repeatedly.<br />
<br />
* Phantom object have no effect on the camera.<br />
# Test: Walk through a 10x10x10m Phantom box. Verify your camera follows your avatar through the box without any automatic dollying.<br />
<br />
<br />
<br />
== Object Selection management ==<br />
* Selection order is maintained when linking objects<br />
// Link number script<br />
default {<br />
state_entry() { }<br />
changed(integer what_changed) {<br />
if (what_changed & CHANGED_LINK)<br />
{<br />
llSetText("Link #" + (string)llGetLinkNumber(), <1,.5,0>,1 );<br />
}<br />
}<br />
}<br />
#Create a box on the ground and add the above script to the box. (Click the Content tab, click New Script, open the script, replace the script text with the following script text, click Save)<br />
#Duplicated the box 2 times so you have 3 boxes.<br />
#Enter edit mode, Ctrl-3.<br />
#Shift-click each of the boxes (from left to right) to select them.<br />
#Link the boxes by hitting Ctrl-L.<br />
#Verify the first box you selected is Link #3, and the last box you selected is Link #1.<br />
#Unlink the object by hitting Ctrl-Shift-L.<br />
#Link the boxes again by hitting Ctrl-L.<br />
#Verify the link order is the same as before.<br />
#Unlink the object again. (Ctrl-Shift-L)<br />
#Shift-click the middle prim to deselect it, then shift-click it to select it again.<br />
#Link the boxes again by hitting Ctrl-L.<br />
#Verify the link numbers from left to right are #3, #1, #2.<br />
#Unlink and deselect the boxes.<br />
<br />
* Drag select selection order matches shift select order<br />
#Enter edit mode, Ctrl-3.<br />
#Drag-select the ground around the 3 boxes from right to left.<br />
#Link the boxes.<br />
#Verify the link numbers from left to right are #1, #2, #3.<br />
#Unlink the boxes and click the ground to deselect them.<br />
<br />
* Collection of prims remain selected after rez<br />
#Enter edit mode, Ctrl-3.<br />
#Shift-click each of the 3 boxes to select them (order isn't important).<br />
#Right-click one of the boxes and choose Take.<br />
#Remain in edit mode, open your inventory, find the object you took, and rez it.<br />
#Verify all prims remain selected.<br />
<br />
* Object remains selected after rez<br />
#Link the 3 boxes by hitting Ctrl-L.<br />
#Remaining in edit mode, take the object to inventory, then rez it again.<br />
#Verify all prims remain selected.<br />
<br />
* Your attachments remain selected after being dropped.<br />
#Right-click your attachment and Wear it.<br />
# Now, Drop it.<br />
#Verify the dropped attachment remains selected even after walking around with the arrow keys.<br />
<br />
* You cannot edit other people's attachments.<br />
#Enter edit mode, Ctrl-3.<br />
#Click another person's attachment.<br />
#Verify you cannot modify the attachment either by dragging it nor via the Edit tools window.<br />
<br />
* Objects retain selection when dragged across a region boundary.<br />
# Edit an object and drag it across a region boundary, then release.<br />
# Verify the object remains selected and you are able to change its properties (eg. color).<br />
<br />
<br />
<br />
== Terrain Selection management ==<br />
* Right-click About Land selects the entire parcel.<br />
#Right click a parcel and choose About Land from the pie menu.<br />
#Verify a yellow "fence" surrounds the entire parcel.<br />
#Verify the About Land window displays the Owner of the parcel.<br />
<br />
* Edit Terrain, then drag selects part of a parcel.<br />
#Right click the terrain and choose Edit Terrain from the pie menu.<br />
#Left-click and drag on the terrain to select a rectangle of land.<br />
#Verify a rectangular yellow "fence" highlights the area you selected.<br />
<br />
<br />
<br />
== Parcel ownership. Divide, join, sell, deed, access, media, music ==<br />
*Sell and buy a parcel.<br />
#User A sets a parcel for sale to anyone.<br />
#User B purchases the parcel.<br />
#Verify the parcel turns green and says User B is the owner in About Land.<br />
<br />
*Divide your parcel<br />
#Right click the terrain and choose Edit Terrain from the pie menu.<br />
#Turn on show Parcel Owners.<br />
#Left-click and drag on the terrain to select a portion of your parcel.<br />
#Click the Subdivide button in the Edit Terrain tools.<br />
#Verify your parcel has its own border now.<br />
#Verify the parcel's name, description, and owner remained the same.<br />
<br />
* Join two parcels<br />
#Enter Edit Terrain mode<br />
#Left-click and drag on the terrain to select two or more of your parcels.<br />
#Click the Join button in the Edit Terrain tools.<br />
#Verify the parcel border has updated to show all the parcels are now one parcel.<br />
<br />
* Deed the parcel.<br />
#Open the About Land window for your parcel.<br />
#In the General tab, set the parcel's group to one of your groups for which you have ability to buy land (usually officer or owner)<br />
#Check the Allow Deed and Make Contribution boxes<br />
#Click the Deed button and confirm.<br />
#Verify the parcel info now says group owned, and indicates which group owns it.<br />
#Verify the parcel overlay is teal in color.<br />
<br />
* Parcel access<br />
#With User A, open the About Land window for a parcel owned by you, choose the Access tab, and add User B to the ban list.<br />
#User B, attempt to enter the parcel.<br />
#Verify that User B sees a red "No Entry" wall and is bounced back from the parcel edge.<br />
#With User A, unban User B.<br />
#Verify that User B can once again enter the parcel.<br />
<br />
* Media<br />
#With User A, open the About Land window for a parcel owned by you, choose the Media tab, and set the media URL to https://s3-us-west-2.amazonaws.com/lecs-bugislandtests/texture_cell_animation.mov<br />
#Verify the Media type on the About Land tab changes to "Movie - video/quicktime"<br />
#Set the media URL to http://lindenlab.com<br />
#Verify the Media type on the About Land tab changes to "Web content - text/html"<br />
#Set the media URL to https://lindenlab.com<br />
#Verify the Media type on the About Land tab changes to "Web content - text/html"<br />
<br />
* Music<br />
#With User A, acquire a streaming music URL. You can get one from shoutcast.com. (Click a "tune in" button, save the .pls file, and snag a URL from it). This URL worked fine for me last time: http://205.188.215.229:8040<br />
#Open the About Land window for a parcel owned by you, choose the Media tab, and set the music URL.<br />
#Verify you hear the music when you are on the parcel, and verify the music turns off when you leave the parcel.<br />
<br />
== Object return ==<br />
* Return objects due to time limit<br />
# Tester 1: Buy one 16m2 parcel of land.<br />
# Tester 1: Right click on the parcel -> select About Land from pie menu.<br />
# Tester 1: Goto the Objects tab of About Land window -> set Autoreturn other user's objects to 1 minute.<br />
# Tester 2: Rez 1 box on Tester 1's parcel.<br />
# Tester 2: Wait 1 minute. Verify that Tester 2's object has been returned to inventory.<br />
<br />
* Return objects due to parcel owner manually returning land objects<br />
# Tester 1: Right click on your land parcel -> then select About Land from pie menu.<br />
# Tester 1: Goto the Objects tab of About Land window -> set Autoreturn other user's objects to 0 minute.<br />
# Tester 2: Rez 1 box on Tester 1's parcel.<br />
# Tester 1: Right click on the parcel => select About Land from pie menu.<br />
# Tester 1: Goto the Objects tab of About Land window -> click on the "Return Objects" button next to the "Owned by others:" dialogue.<br />
# Tester 2: Verify object was returned to Tester 2. <br />
<br />
<br />
<br />
== Voice options ==<br />
* Voice options. Requires User A to be an Estate Manager.<br />
#Move User A and User B near each other and communicate with the spatial voice option on a parcel owned by User A.<br />
#With User A, turn off the parcel's voice option.<br />
#Verify voice no longer works on the parcel.<br />
#With User A, turn on the parcel's voice option<br />
#Verify voice works again.<br />
#With User A, turn off the Estate's voice option.<br />
#Verify voice no longer works on the estate.<br />
#With User A, turn on the Estate's voice option.<br />
#Verify voice works again.<br />
#Verify voice works in a person to person IM session.<br />
#Verify voice works in a group IM session.<br />
#Verify voice works in a conference IM session.<br />
<br />
<br />
<br />
== Chat ==<br />
#Chat with each other<br />
#Verify chat is showing correctly in the console<br />
<br />
<br />
<br />
== Instant Message system ==<br />
* Person to person IM.<br />
#Teleport User A to a different region than User B.<br />
#Have the User B IM User A.<br />
#Verify you can IM back and forth.<br />
<br />
* Group IM<br />
#Have User B start a group IM with User A.<br />
#Verify you can IM back and forth.<br />
<br />
* Conference Chat IM<br />
#With User B, create a folder in your Calling Cards folder.<br />
#Copy and paste User A's calling card into the folder you created.<br />
#Right click the new folder and start a Conference IM<br />
#Verify you can IM back and forth.<br />
<br />
* Inventory offer<br />
#With User B, drop an object onto User A's calling card.<br />
#Have User A accept and open the object.<br />
#Verify the object rezzes correctly.<br />
<br />
* Money transactions<br />
#Have User A open the User B's profile and Pay them L$1.<br />
#User A, verify your balance decreased by L$1.<br />
#User B, verify your balance increased by L$1.<br />
<br />
<br />
<br />
== Presence ==<br />
* Online Friends<br />
#Make the users Friends if they are not already.<br />
#Log User A out, and verify that User B sees the correct online status in the Friends list.<br />
#Log User A into a region non-adjacent to the region the User B is standing in. Verify both users see the correct online status in the Friends list.<br />
<br />
== Group Invite ==<br />
# Create a new group<br />
# Invite one friend to the group<br />
# Invite one non-friend to the group<br />
# Invitees accept group invitation and relogin<br />
# Invitees see that the new group is on their list<br />
<br />
== Sim cached assets ==<br />
#User B, enter appearance, change you skin color, then save and exit appearance mode.<br />
#Teleport User B to the User A's location.<br />
#Verify that User B sees the correct skin color on User A.<br />
<br />
<br />
<br />
== Login: Location, New Location ==<br />
# Move to a new location near where you started that you can remember.<br />
# Logout of SL, Restart the SL Application, but don't login.<br />
# Click the "Preferences" Button on the Login Screen<br />
# Set/Check the General->Login Location to "My Last Location", Click "Apply" and "Ok"<br />
# Click "Log In" to Connect to SL<br />
# Verify you are in the location where you logged off.<br />
<br />
<br />
<br />
== Search ==<br />
# Have User B open Search and search for User A.<br />
## Verify that User B can see the User A's profile.<br />
# From the profile double click on a group name.<br />
## Verify that User B can see the group info.<br />
# Search Classifieds for "hair"<br />
## Verify you get a result.<br />
## Change the maturity content from PG, to M, to A.<br />
## Verify you get different result.<br />
# Search Places for "oatmeal"<br />
## Verify you get a result.<br />
## Change the maturity content from PG, to M, to A.<br />
## Verify you get different result.<br />
<br />
<br />
<br />
== Buying an object ==<br />
#User B, create a box and set it for sale, Copy, for L$3.<br />
#User A, buy the box.<br />
#Verify the balances were correctly changed by L$3.<br />
<br />
<br />
<br />
== Estate tools ==<br />
# UserA, who is an estate manager or region owner: Go to a region which belongs to your estate<br />
# UserB: Go to a different region which belongs to the same estate<br />
# UserA: Add UserB to the "Banned residents" list under World->Region/Estate->Estate<br />
# UserB: Verify that you are ejected from the region within seconds, and teleported home<br />
# UserB: Attempt to TP to the region you were just ejected from, and verify that this is prevented due to the estate ban.<br />
# UserA: Remove UserB from the "Banned residents" list in Estate Settings.<br />
# UserB: Verify that you can return to the region you were ejected from.<br />
<br />
== Object permissions ==<br />
#User A, create a box and set it to "Anyone can copy"<br />
#User B, right click the box and take a copy.<br />
#Verify the object says (no modify)(no copy) in your inventory.<br />
#User B, rez the box.<br />
#Verify the box was removed from your inventory.<br />
#User B, attempt to modify the size of the box, and make a copy of the box.<br />
#Verify you cannot modify or copy the box.<br />
#Delete the 2 boxes.<br />
<br />
<br />
<br />
== Email test in and out of the grid ==<br />
#User A, add the following script in a box, and insert your email address in the first line of the script.<br />
#Click the box, check your email - verify that the email is received.<br />
#(no aditi) Reply to the email. <br />
#(no aditi) Verify the box says "Received email:" etc. (expected to be disabled on aditi)<br />
<br />
<pre><br />
string emailaddress = "YOUR-EMAIL-ADDRESS";<br />
list m;<br />
default<br />
{<br />
state_entry()<br />
{<br />
llOwnerSay("ready. My key is "+(string)llGetKey());<br />
llSetTimerEvent(1);<br />
}<br />
touch_start(integer total_number)<br />
{<br />
llOwnerSay("sending email to "+emailaddress+" ...");<br />
llEmail(emailaddress,"llEmail test. please reply.",(string)llFrand(1));<br />
llOwnerSay("email sent. please reply to the email.");<br />
}<br />
timer()<br />
{<br />
llGetNextEmail("","");<br />
}<br />
email(string time, string from, string subj, string mes, integer remaining)<br />
{<br />
m = llParseString2List(mes,["\n",":"],[]);<br />
llOwnerSay("Received email:"+llDumpList2String(llList2List(m,7,-1),":"));<br />
if (remaining > 0) llGetNextEmail("","");<br />
}<br />
}<br />
</pre><br />
<br />
== Display Names ==<br />
# make sure you have a display name set<br />
#* https://wiki.secondlife.com/wiki/Display_names#Setting_your_display_name<br />
# create a new prim on the ground<br />
# put this script into the prim.<br />
# touch the prim a few times.<br />
# verify that it shows your display name<br />
<pre><br />
key touched_id;<br />
key touched_query;<br />
string touched_name;<br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetText("Touch Me!",<1,1,1>,1.0);<br />
}<br />
<br />
touch_start(integer a)//Announce who touched<br />
{ <br />
touched_id=llDetectedKey(0);<br />
touched_query=llRequestDisplayName(touched_id);<br />
touched_name = llGetDisplayName(llDetectedKey(0));<br />
}<br />
dataserver(key queryid, string data)<br />
{<br />
if(touched_query==queryid)<br />
{<br />
if(touched_name==data)<br />
{<br />
llSay(0,touched_name + " touched me "+ " (" + llGetUsername(touched_id) + ")");<br />
}<br />
else<br />
{<br />
llSay(0,"ERROR: Mismatch: llRequestDisplayName() returned \'"+data+"\', llGetUserName() returned \'"+touched_name+"\'");<br />
}<br />
}<br />
else<br />
{<br />
llSay(0,"ERROR: unrecognized query ID "+(string)queryid);<br />
}<br />
}<br />
}<br />
</pre><br />
<br />
<br />
== Snapshot Email, Save and Basic Image Upload ==<br />
# In-world click on Snapshot Icon<br />
## Verify that snapshot looks ok<br />
## Click on Send Via Email<br />
## Fill out form and submit<br />
## Verify that email with snapshot is received<br />
# In the Snapshot window, click on "Save to Disk"<br />
## Save a 512x512 jpeg image to your desktop<br />
## Verify the image looks ok in a photo viewer<br />
# Click Build / Upload / Image menu<br />
## Select the image you just saved<br />
## Upload preview should open up shown that image<br />
## Select "Upload (L$10) and upload (assuming you have L$ available)<br />
## Notification about paying L$10 should appear <br />
## Inventory window should open to show the new uploaded image<br />
## Double click on the new image in inventory<br />
## Verify image viewer opens and shows the correct picture<br />
<br />
== Experience Tools ==<br />
<br />
# Obtain Experience Key Viewer (http://wiki.secondlife.com/wiki/Linden_Lab_Official:Alternate_Viewers)<br />
# Login with a user that owns an Experience (Grid Scope on Aditi)<br />
# Rez an object and add the following script<br />
<pre><br />
key agent=NULL_KEY;<br />
integer anim=1;<br />
default<br />
{<br />
state_entry()<br />
{<br />
llSetText(llGetObjectName(), <1.0, 1.0, 1.0>, 1);<br />
}<br />
<br />
touch_start(integer total_number)<br />
{<br />
if(agent)<br />
{<br />
if(anim==1)<br />
{<br />
llStopAnimation("sleep");<br />
llStartAnimation("sit");<br />
}<br />
else<br />
{<br />
llStopAnimation("sit");<br />
llStartAnimation("sleep");<br />
}<br />
anim = 1-anim;<br />
}<br />
else<br />
{<br />
llRequestExperiencePermissions(llDetectedKey(0), "");<br />
}<br />
}<br />
<br />
experience_permissions(key a)<br />
{<br />
llSay(0, "Got perms for "+(string)a);<br />
agent = a;<br />
}<br />
<br />
experience_permissions_denied(key a, integer reason)<br />
{<br />
llSay(0, "No perms for "+(string)a+" "+llGetExperienceErrorMessage(reason));<br />
agent = NULL_KEY;<br />
}<br />
}<br />
</pre><br />
# In the script window, check Experience box<br />
# Assign the Experience from the drop down menu<br />
# Save the script<br />
# Open Experience Profile for the Experience [>]-button<br />
# Click Forget button (if active)<br />
# Click on the object<br />
# Confirm a dialog requests your participation in an experience.<br />
# Click Yes to grant permissions.<br />
# Click the object a few times and confirm your avatar toggles between Sit and Sleep animations.<br />
# Open the Experience profile for the Experience and click the Block button.<br />
# Click on the object again<br />
# Confirm you see a message: No Perms for $AgentID operation not permitted<br />
# Confirm your avatar does not change animations.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1206823Animesh Test2018-03-20T23:45:55Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates typing and walking at the same time. (He will halt frequently. That's expected)<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.<br />
<br />
<br />
===Get list of currently playing animations===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Take a copy of an Animesh object that is playing animations<br />
* Rez the Animesh object.<br />
* Add the following script to the Animesh object.<br />
<pre><br />
default<br />
{<br />
state_entry()<br />
{<br />
llSay(0, "Hello, Avatar!");<br />
llSetTimerEvent(1);<br />
}<br />
timer()<br />
{<br />
list curr_anims = llGetObjectAnimationNames();<br />
llOwnerSay("curr_anims are " + (string) curr_anims);<br />
}<br />
}<br />
</pre><br />
* Verify all playing animations are listed while it is animating and none are listed while animations not playing<br />
* Cleanup: delete the animesh object.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1206822Animesh Test2018-03-20T00:41:14Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates typing and walking at the same time. (He will halt frequently. That's expected)<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.<br />
<br />
<br />
===Wear / sit on animesh===<br />
Go to secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Log in an observer on an adjacent region<br />
* Take 3 copies of the Animesh model to your inventory.<br />
* Attempt to add the 3 Animesh models to different attachment points of your avatar.<br />
* Verify this fails with an error that explains you cannot attach more animated objects. (Current limit is 1 - 2017/11/9)<br />
* Click the black monolith and choose to start animations.<br />
* Verify the attached Animesh model animates.<br />
* Verify the observer sees the same thing.<br />
* Take a copy of the Animesh model and rez it on the ground.<br />
* Sit on the Animesh model.<br />
* Verify all the Animesh models animate.<br />
* Verify the observer sees the same thing.<br />
* 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.<br />
* Cleanup: Detach the Animesh model. Stand up and delete that Animesh model.</div>Dan Lindenhttps://wiki.secondlife.com/w/index.php?title=Animesh_Test&diff=1206821Animesh Test2018-03-20T00:26:23Z<p>Dan Linden: </p>
<hr />
<div>[[Category:Test Plans]]<br />
[[Category:Content Tools]]<br />
<br />
=NOTE: This test supports the new features of the Animesh viewer currently (March 2018) available for testing at [[Linden_Lab_Official:Alternate_Viewers]].=<br />
<br />
==Purpose==<br />
Test all functionality of the Animesh viewer.<br />
<br />
==Test Plan==<br />
<br />
===Stop / Start animation with LSL===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/7/247/23<br />
* Click the black monolith and choose to start animations from the menu.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Relog.<br />
* Verify the Animesh model is animating.<br />
* Move to an adjacent region<br />
* Verify the Animesh model is still animating.<br />
* Relog.<br />
* Verify the Animesh model is animating when viewed from an adjacent region.<br />
* Click the black monolith and choose to stop animations<br />
* Verify Animesh model stops animating.<br />
* Click the black monolith and choose to start animations.<br />
* Verify Animesh model animates.<br />
<br />
<br />
===Non-root prims in an animated object should be able to start and stop animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/23/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates.<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Any animation triggered by any prim can drive any bone in the skeleton===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Click the black monolith and choose to start animations.<br />
* Verify the Animesh model animates typing and walking at the same time. (He will halt frequently. That's expected)<br />
* Click the black monolith and choose to stop animations<br />
* Verify the Animesh model stops animating.<br />
<br />
<br />
===Animated objects should play only requested animations===<br />
Test is at secondlife://Aditi/secondlife/Animesh2/37/249/23<br />
* Enable Develop menu -> Avatar -> Animation info<br />
* Click the black monolith and choose to start animations.<br />
* Verify only 2 animations appear above the Animesh, then disappear, then repeat.</div>Dan Linden