VR Wishlist
Here is my feature wishlist for my ideal VR environment.
Colour codes:
- This is being actively worked on or is partially available!
- A dev has responded positively to the idea.
- (Items are deleted from this list when they are available in a functional form from at least in the HEAD repository)
WorldView
- Per-grid setting to define terrain resolution (in steps of 0.25m; zero = don't render terrain). Default is 1m (present situation).
- Arbitrary texture size for terrain texture. Also greyscale texture support and a tint setting for each texture. (I expect this to reduce render needs when greyscale is enough - which on Impact it is!)
- Negative Z-axis. I would prefer my sea level at 0.0m and to be able to go down from there as well as up. Aurora+Imprudence seems to allow this physically, though with visual render issues.
- Set Sim Coordinate Origin (sim-server setting). Able to set the origin (0,0,0) to any point in the sim. I would like (0,0,0) in my own main Sim to be at the center (sea-level) rather than in the S-W corner. Default would be existing location.
- Sky-server. A planetarium-like system to render a user-defined sky with multiple orbital bodies (not necessarily orbiting the sim!) [ Details ].
Prim System
- More ways to manipulate primitives.
-
- "Static Bend" prim deformation, for strait-extruded prims (box, cylinder, prism) so large curved shapes can be constructed.
- Chordal cut for spheres and cylinders. Use the path-begin and path-end parameters to define intersect points.
- Two extra attributes for sphere to allow a sphere-sweep object.
- Sweep length - 0 = normal sphere; >0 = second sphere offset along Z axis.
- Sweep ratio - size ratio between base sphere and sweep sphere.
- Iso Surface prim. Use sphere cut attributes.
- Freeform extrusion/rotation shapes [ Details ]
- Custom spine prisms. Box/cylinder/prism prims with a multi-joint spine along the Z-axis extrusion each joint of which (other than the root joint) can be set to custom (x,y,z) coords relative to the previous joint towards the root joint. A rewrite of the flexi code might be in order to achieve this viewer-side, and allowing the option of solid flexis into the bargain! How many joints? Well for a public sim, I would probably recommend a limit of 15, but a sim-ini file entry allowing 0 (disabled) to 255 would be best. Bit of client-side LOD code to average 2/4/8 joints together at a distance too. An attach point in the middle of each bone would be great too!
- Extra texture attributes for prims
-
- Optional shiny map (greyscale texture) for reflectivity (max out at 50% for now; later >50% might be reflective in the mirror sense)
- Optional fuzzy map (greyscale texture) blurs the area around the prim (like fur)
- Optional brite map (greyscale texture) this is fullbrite level. Combine with fuzzy to get 'glow' in the SL sense
- Optional bump map (greyscale texture) - include preset bumpmaps presently implemented in standard inventory.
Particle Physics
Additions to the way particles can behave, specifically when they collide with solid objects and AVs.
- Destroy on collide - If a particle collides with something, it immediately gets dropped from the scene. Would be very useful for doing rain or snow that stays outdoors!
- Bounce on collide - If a particle collides with something, it bounces off at an opposite vector. Continues normal particle aging process.
- Stick on collide - If a particle collides with something, it sticks to where it collided (accounting for object movement). Continues normal particle aging process. (Dolly is demanding projectile vomit that sticks!)
Avatar
The whole avatar and clothing texture thing needs a complete rejig really.
- Re-do the humanoid avatar skin/clothing texture (and add a tail), and "natural hair" [ Details ]
- Alternate built-in avartar forms [ Details ]
- Function calls to alter AV appearance (attachments only). Call from sat-on-object will cause current appearance to be cached, and restored on unsit. Call from attached object will notify user with option to store current appearance in an undo folder in inventory before change.
- In the interests of being able to stand/lie on stuff without floating above (if you are short) or sinking feet-first into stuff (if you are tall), an extension to llSitTarget that allows one to specify a number of AV points that the sit position is relative to...
- FEET_RELATIVE = where the AV's feet would be when standing normally (it is up to the scripter to adjust for where the feet actually are with whatever pose they are using) - good for 'standing' on things like surfboards.
- KNEE_RELATIVE - as above for kneeling on things (assuming about a 100deg bend angle at the knees)
- PELVIS_RELATIVE - current situation
- HEAD_RELATIVE - Where the AV's head would be if they were standing normally - good for pillows, etc.
- HAND-RELATIVE - Where the AV's hands would be if held strait above their heads - for those who like hanging around in BDSM dungeons ;-P
I imagine this would be implemented by the system adding/subtracting relevant AV-height attributes from the stored prim sit position before actually placing the AV in position.
- Alternate to above, LLPinBone(agent, bone, object, offsetXYZ, rotationWXYZ) / LLReleaseBone(agent, bone) commands that can sit an avatar relative to any bone chosen. Leave allowance for pinning multiple bones so that if rag-doll physics ever comes along, you can use it to pin multiple bones to specific objects/locations.
- Avatar hand-hold mode -- a feature where you can choose to 'hold hands' with another AV and then you go where they go until such time as you release their hand. This means if they move, you move with them, if they fly you fly with them (wooh - Peter Pan ;-P) most importantly, if they TP, you TP with them (assuming the sim has enough AV slots available, otherwise the TP will fail for the whole group). Ideally it would be chainable across multiple AVs so you can effectively do a group TP. Sequence might be something like:
- AV1 is going to a party and wants to take AVs 2 and 3
- AV2 clicks on AV1 and selects "Hold"
- AV1 receives a notice "AV2 wishes to join your hand-hold group. This will allow them to follow you through SL." Accept/Deny
- AV1 accepts.
- AV3 clicks on either AV1 or Av2 (the only effective difference might be how the AVs are visually arranged in 3d-space, probably limit 2 hold-points per AV - left and right so you can either form a "\" or a "V" off the group head)
- AV1 (the head of the existing hand-hold) gets the request message.
- All AVs get a notice of who has joined but their only action in the matter is to drop out of the new group if they don't like it.
- Any AV can leave the hand-hold group at any time, the 'head' of the group will disperse the group if leaving.
- If an AV in the (visual) middle of a string of AVs leaves, the AV before and after link to close the gap.
- The head of a group can join another group or individual at the cost of transferring all control upstream. Non-head AVs are notified of the change of leader but their only action in the matter is to drop out of the new group if they don't like it (this is for simplicity's sake).