Flexible Objects test

From Second Life Wiki
Jump to navigation Jump to search

Flexible Objects Test Plan

The command to toggle flex objects is Ctrl+Shift+. (period)

The frame timer(ctrl-shift-9) for Flex Objects is bright orange. Render is the big purple blob.

In particular we want to watch out for the following cases:

1. Toggling Flex Objects does nothing to framerate (render/purple timer gets longer to compensate for the loss of flex/orange timer) ... MEANS we're fill-bound. To verify, reduce the window size and verify that framerate increases.

2. Toggling Flex Objects makes the framerate slow substantially. EITHER:

a. The orange bar grows in the frame timers, but there is no change in the purple bar (we are CPU bound)


b. The orange bar and the purple bar grow substantially (we are IO or transform bound)


UI Workflow:

1. Create a Box, Cylinder, or Prism ("Linear") prim

2. Check 'Flexible Path' (this box should not be enabled for other prim types than these 3)

3. Phantom should be checked, Physics should be unchecked automatically and both disabled

4. Switching to another prim type besides a "Linear" one should uncheck Flexible

5. When a "Linear" prim type is selected, Flexible Object parameters should be visible, greyed out if and only if Flexible Path is unchecked

6. The position & rotation manipulators for the object drop to the lower-Z endpoint

7. Objects should look the same before and after checking Flexible Path, before simulation changes the shape

8. All of the primitive parameters still apply (Cut, Hollow, Twist, Top Size) EXCEPT Shear. This should probably be grayed out.

The parameters should work as follows:

"Softness" - how dutile the object is, allows it to bend more. RANGE: 0 to 3, 0=straight, 3=spaghetti

"Tension" - how rigidly the object springs back to straightness. RANGE: 0 to 20, 0=rigid, 20=slack

"Drag" - how slowly the object moves in the surrounding medium. RANGE: 1 to 20, 0=Slow, 20=Quick ... probably could go much higher

"Gravity" - self-explanatory. RANGE: -10 to 10

"Wind" - also self-explanatory. RANGE: 0 to 1

LOD use cases

(Assuming 40 flexible objects on the user's avatar at all times, 100 flex updates/frame depending on CPU speed)

The following list various use cases and targets for time spent on each. The number of objects per bin and total updated objects are printed in the console. It's kind of hard to make sense of them but these are my targets:

  1. 1k flexible objects evenly distributed in a sim
    1. 44% user attachments
    2. 38% near objects
    3. 19% far objects
  1. 1k flexible objects in a single parcel
    1. 49% user attachments
    2. 51% near objects
  1. 3 avatars with 200 flex objects each, 1k flexible objects anywhere in the sim
    1. 41% avatar attachments
    2. 59% near/far objects
  1. 5 very large objects in the distance, 3 avatars with 200 flex objects, 1k flexible objects in sim
    1. 66% avatar attachments
    2. 23% near/large objects
    3. 12% far objects

The bins are arranged so that the lowest bin (0) is for objects which are not visible, smaller objects in the world are small numbers and large visible objects/attachments are higher. The highest level is reserved for selected objects.