OpenSimulator:Future Release Discussion

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Universal Location Addressing)
(Some additional ideas on 3D security.)
 
(29 intermediate revisions by 9 users not shown)
Line 1: Line 1:
 +
{{proposal}}
 
A collection of ideas for additional functionality in OpenSim. Please add your thoughts - anyone may contribute.
 
A collection of ideas for additional functionality in OpenSim. Please add your thoughts - anyone may contribute.
  
 
== 3D grid structure ==
 
== 3D grid structure ==
 
I have always wanted to see a grid where you could have regions not only to the north, south, east west of a region but also above and below. This would enable space above for orbiting space stations and the like and depth below for underwater worlds and tunnels. - Garth FairChang
 
I have always wanted to see a grid where you could have regions not only to the north, south, east west of a region but also above and below. This would enable space above for orbiting space stations and the like and depth below for underwater worlds and tunnels. - Garth FairChang
 +
 +
I like the idea of a 3D Grid structure, along with that, the ability to turn off gravity, water and the terrain textures. It would be nice to set the region's background image to a starscape or something other than the default background.
 +
 +
User defined gravity fields. This would be useful in a grid environment that was space themed, certain areas could have defined gravity fields. The possibilities for this could be very interesting.
 +
 +
== 3D Security ==
 +
 +
At the end of the day, this technology is a new form of computer user interface, and mobile agent application server. We need to move away from the concept of land, in a 3D environment we could assign access rights to 3D volumes, call them security regions. These security regions would have permissions granted by access lists, ability to assign different rights to different users or groups. (if we did 3D grid structures this would be a must)
 +
 +
One security feature, is the ability to "hide" objects within a security region from users that don't have access rights. Much like barriers in SL, these 3D security regions would just not show up in the viewer, and the user would not have rights to enter the area. It would interesting if you could do this on a primative level, an object that is only viewable by people/objects with the proper permissions. (The engine could detect collision based on bounding box)
 +
 +
LaeMing adds:
 +
 +
An alternative might be to add volume-based permissions to prims themselves, so - for example - you could define a transparent phantom prim, and anything spacially within this prim is subject to its security settings (can enter space, can see/interact-with contents, etc.). This would allow arbitrary sized/shaped security regions (I often would like to use cylindrical/spherical security zones, given the chance!).
 +
 +
== Portal Primatives ==
 +
 +
I propose a "hyperlink" prim that would be configured with an URL to a destination region/grid. The prim would be like a phantom prim, and when looked at, the user would see the destination, a doorway, like a region boundry, when the avatar passes through the object, the avatar is handed off to the destination region. This would be very cool feature, a user/company could "rent" space on a popular grid a store front, in the back of the store is a "doorway" to the user/company's private region/grid server.
 +
 +
(Croquet is an excellent referral to this concept, since the developers devised Portal "primitives" that allow travel not only between different worlds, but to your own one aswell. Also, once your in your own world, you can create yet another Portal to a new world that you created and so on.) -Darakon Kayvon
  
 
== Governance System ==
 
== Governance System ==
Line 8: Line 29:
  
 
== Scripting ==
 
== Scripting ==
See the list of [[LSL_osFunctions|OSL Proposals]].
+
See the list of [[OSSL Proposals]].
  
 
== Payment System ==
 
== Payment System ==
 
OpenSim will need to support micropayment. See [[Money]] for details on how this could be achieved.
 
OpenSim will need to support micropayment. See [[Money]] for details on how this could be achieved.
 
== Upload of existing 3D models ==
 
OpenSim should support common standards for 3D modelling. This would allow the upload of existing 3D models and make OpenSim immediately attractive for architects and project developers and their customers (walk through models).
 
  
 
== Free-form Avatars ==
 
== Free-form Avatars ==
Line 34: Line 52:
 
* [http://www.softec.st/en/OpenSource/ClrProjects/SubversionSharp/SubversionSharp.html SubversionSharp]
 
* [http://www.softec.st/en/OpenSource/ClrProjects/SubversionSharp/SubversionSharp.html SubversionSharp]
  
==Arbitrary-sized regions==
+
==The ability to set region bounderies==
  
I am thinking stand-alone regions here, though being able to set a single arbitrary size for all regions on a particular grid might be useful to some (or rowspan and colspan-like attributes in the region table if someone was feeling ''really'' masochistic ;-).
+
Useful in adding a max ceiling to a region. If it was possible, ability to create a "region box" with as stated earlier, an arbitrary origin. Thinking a little further, a "region sphere" would be interesting.
  
Would require much client-side work too as the 256m sim-size is hard-coded in many places I believe (Rob Linden was lamenting this decision in a blog some time back and talking about slow steps to replace the hard-coding as bits of the client/server code came up for review as a matter-of-course, IIRC). Some of the quick positioning client-server comms protocols are probably byte-dependent too. Any ideas? ;-)
+
==Universal Location Addressing==
  
Very useful for my own free-standing simulator as I want a lot of area but not much built on it, and would rather avoid the inter-region comms overheads if possible.
+
As part of grid to grid travel, a common standard for a universal location address / coordinate will need to be defined and supported.  
  
Arbitrary origin would be nice too, so I could set (x,y,z:0,0,0) at the middle of my sim on sea level making my maths for several things I plan much simpler (yes, I want I want I want the whole world - and sundry satelites thrown in too!!! But not in any hurry ;-)
+
Proposal: opensim://sim.grid.domain.tld:x.y.z/named_location/?param=value (alternatively, could be osa:// or osl://, or sim://).
 +
 
 +
Examples of use:
 +
* opensim://sim25.mygrid.mycompany.mycountry/
 +
* opensim://shoppingcenter.gridprovider.mycountry/myshop/
 +
* opensim://mysim.mygrid.mycompany.mycountry:100.75.80/
 +
* opensim://closedgrid.myworld.business/entrance_hall/?userid=xxx&password=yyy
 +
 
 +
To avoid confusion, Opensim TLDs will need to be different from existing Internet TLDs.
 +
A naming registrar (NIC) will need to be established that ensures uniqueness and proper handling of registrations. - Ezekiel
 +
 
 +
Proposal: <sim|grid>://<FQDN>[[:<[zonename,]x,y,z>] | [/<symbolic destination>]]
 +
 
 +
Examples:
 +
* sim://www.mydomain.com
 +
* sim://www.mydomain.com:0,0,0
 +
* sim://www.mydomain.com/mycoolplace
 +
* grid://www.mydomain.com
 +
* grid://www.mydomain.com/mycoolplace
 +
* grid://www.mydomain.com:Zone1,0,0,0
 +
 
 +
The client can then get the required information regarding port numbers, protocols, and so on from SVR records embedded in the FQDN DNS Zone. This way clients are immune to changes in the physical hosting of the simulators. The data encoded in the SVR record could also give clues as to the protocol versions, abilities and restrictions of the destination. -Kelannim
 +
 
 +
==Scriptable 'bodyparts' (Shape, Hair, Eyes etc)==
 +
 
 +
This relates to Shapes, Hair, Eyes etc which are not prims but 'bodyparts', and are not manipulatable via LSL.
 +
 
 +
Two script commands could be implemented, one to write say a vector to 'bodypart' parameters (the numbers one edits in 'Appearance...'), and another to read them. It would be interesting to be able to create 'bodyparts' from scripts, using data derived externally or calculated in a script, perhaps from other 'bodyparts' data....
 +
 
 +
Further, with an extension to the permission system (notifying user that a script wants to modify a Shape/Hair/Eyes/whatever of theirs), perhaps editing of existing 'bodypart's could also be available.
  
 
==Tide Server==
 
==Tide Server==
Line 78: Line 125:
 
* if the region water level is 'sane' it does nothing, leaving the region-manager's water-level alone.
 
* if the region water level is 'sane' it does nothing, leaving the region-manager's water-level alone.
  
===One known Client issue===
+
==Client Side Weather System==
 +
A client side based weather system would be a breath of fresh air to those who enjoy more realism (Graphically). An overall Grid Weather System could also be created, so that different parts of the grid will be experiencing different forms of weather e.g 4+ Regions more to the north of the Grid would be in the midst of a blizzard whilst several sims further to the south are enjoying clear blue skys, but with an onset of rain on the way.
 +
A Server could be set up in order to simulate the overall GWS (Grid Weather System) and would shout to each region to simulate a specified weather type.
 +
All the Client has to do is pick up on the Information being sent to the region from the GWS and simulate it on-screen for it's users.
 +
Obviously this feature can be turned on and off at will, but it would be nice to not have to set up a particle weather system that cause's more lag than necessary. - Darakon Kayvon
 +
<math>Insert formula here</math>
  
The 'extended' water off the edge of actual regions is a problem, as this is probably hard-coded into the client. Probably should have its own setting which can be either fixed per grid (or region for stand-alone) or track the tide server as per region water level.
+
==Strong Identities==
  
==Grid to Grid Travel==
+
Basically objects and users would have strong identities created using public key cryptography. A creator or user would create a public/private key pair and register it with a key server, along with a signed hash of their character name/UUID/whatever. This creates a strong identity associated with the user.
  
Going to each grid seems to require setting up an account there. Someone may specialize in 'passport authentication' allowing an avatar to hop from grid to grid (possibly with just a wallet and a small 'suitcase' inventory) as one would go from country to country in rl. Grids get control of who and how may pass through their grid.
+
This creator key could be used to generate certificates associated with their objects (signing the UUID and a hash of the geometry of the object along with their key identity) and register along with the geometry hash in a database. They could also create 'ownership' certificates which would be a signature against a player's identity and the object hash.
  
LaeMi adds - I am waiting eagerly for integration of realExtend's avatar server which should cover this - the graphics enhancements of rex are of less interest to me as I am not a 3D designer and so have limited use for meshes, but rex has a good number of other very useful features like this too. (Rex integration is being worked on right now AFAIK).
+
One of the uses of this is to allow a sort of voluntary property enforcement. The way it would work is that when an object is transferred using an intergrid (HyperGrid) connection, the transferor would also send any certificates associated with the object. These certificates, if the receiving server wishes, could communicate ownership or copy/mod/no-transfer rights based on the certificate and checking against the public key servers and object registries; it may also simply communicate a sort of certificate status to the other clients such that it could be verified that these objects are indeed created or authorized copies owned by the client. This would of course be completely voluntary within the grid, but it could allow commercial grids to manage intergrid object moves strictly if they want to. It could also exist simply to increase the 'cachet of ownership' such that you can show that you indeed purchase this from the creator.
  
==Universal Location Addressing==
+
Some notes:
 +
* It would be trivially easy for malicious clients to modify the object slightly in order to generate a new hash and register it with the object server. The point boils down to really more supporting the social movement of supporting artists you like and being able to show thus. Artists could publish their object UUIDs along with their owners so that they could be reverified orthogonally.
 +
* It would be trivially easy for malicious clients to submit erroneous hashes for objects. This could be solved by transferring the object parameters (all of the prims, locations, and parameters, the object description) to the object registry and having it do the hashing.
 +
* The creator keypair could be used for intergrid authentication also. Since it is a proper strong encryption keypair which is tightly associated to an avatar identity it could allow authenticated intergrid connections. It could also be used to encipher the communication between the client and the grid and authenticate messages back and forth.
 +
* Strong identities for objects could include a keypair which allows real-world integration such as bank transactions and whatnot to have a physical metaphor.
 +
* The point of the object certificates really isn't DRM (although in a limited sense it can be used for thus), but (partially) a way to show other players that an object was payed for and is original, that you willingly supported a creator voluntarily with your patronage.
  
As part of grid to grid travel, a common standard for a universal location address / coordinate will need to be defined and supported.
 
  
Proposal: opensim://sim.grid.domain.tld:x.y.z/named_location/?param=value (alternatively, could be osa:// or osl://, or sim://).
+
--[[User:NickRusnov|NickRusnov]] 21:45, 28 November 2008 (UTC)
  
Examples of use:
 
* opensim://sim25.mygrid.mycompany.mycountry/
 
* opensim://shoppingcenter.gridprovider.mycountry/myshop/
 
* opensim://mysim.mygrid.mycompany.mycountry:100.75.80/
 
* opensim://closedgrid.myworld.business/entrance_hall/?userid=xxx&password=yyy
 
  
To avoid confusion, Opensim TLDs will need to be different from existing Internet TLDs.
+
==Extend the form of the Sphere to a Superquadric Ellipsoid + Geodesic==
A naming registrar (NIC) will need to be established that ensures uniqueness and proper handling of registrations. - Ezekiel
+
 
 +
On the end of present sphere data definition add the fields...
 +
*'''Sharpness''' - default to zero, meaning a regular sphere/ovoid and the sphere rendering path is to be used as per usual client-side (and the 'sides' field ignored).
 +
*'''Sides''' - can be set to any valid geodesic shape (client-side renderer can clip this value if too high). Negative value indicates to use the geodesic's dual.
 +
 
 +
Client-side (eg HipoViewer) would then need to be altered to allow editing and rendering of these shapes. (Detecting full sharpness and full roundness and passing these to appropriate optimised renderers for these shapes likely a good idea).
 +
 
 +
Adding same values to the end of the Cylinder shape to make an extruded Superellipse would be nice too (and with full sharpness, arbitrary regular shape extrusions such as pentagonal/hexagonal/octagonal prism).
 +
 
 +
Then finish the set with a Superellipse-extended torus.
 +
 
 +
Texturing as per sphere/cylinder/torus, so this does not - even if maxed out to be sharp-edged - replace a real box which can have one texture per face.
 +
 
 +
 
 +
==Simple Underwater Avatar Physics==
 +
 
 +
Simulator physics '''option''' for:
 +
 
 +
When Avatar_position+(Avatar_Height/2) (ie. their head) is below simulator water level, they are put into fly mode. When they are more than Avatar_position+(Avatar_Height/3) (approx shoulder level) below simulator water level, they get a low positive gravity value (buoyancy) applied to them (use the page-down key to swim down against it). 'Swim' into waist-shallow water and Page_Down into land to stand again. No special client-side swim animations, etc. - they would be nice, but fly mode animations are good enough for a start and don't require client-side changes.
 +
 
 +
(Yes, it can theoretically be done with scripted attachments, but I prefer the efficiency of the physics engine doing it directly).

Latest revision as of 03:26, 10 June 2014

A collection of ideas for additional functionality in OpenSim. Please add your thoughts - anyone may contribute.

Contents

[edit] 3D grid structure

I have always wanted to see a grid where you could have regions not only to the north, south, east west of a region but also above and below. This would enable space above for orbiting space stations and the like and depth below for underwater worlds and tunnels. - Garth FairChang

I like the idea of a 3D Grid structure, along with that, the ability to turn off gravity, water and the terrain textures. It would be nice to set the region's background image to a starscape or something other than the default background.

User defined gravity fields. This would be useful in a grid environment that was space themed, certain areas could have defined gravity fields. The possibilities for this could be very interesting.

[edit] 3D Security

At the end of the day, this technology is a new form of computer user interface, and mobile agent application server. We need to move away from the concept of land, in a 3D environment we could assign access rights to 3D volumes, call them security regions. These security regions would have permissions granted by access lists, ability to assign different rights to different users or groups. (if we did 3D grid structures this would be a must)

One security feature, is the ability to "hide" objects within a security region from users that don't have access rights. Much like barriers in SL, these 3D security regions would just not show up in the viewer, and the user would not have rights to enter the area. It would interesting if you could do this on a primative level, an object that is only viewable by people/objects with the proper permissions. (The engine could detect collision based on bounding box)

LaeMing adds:

An alternative might be to add volume-based permissions to prims themselves, so - for example - you could define a transparent phantom prim, and anything spacially within this prim is subject to its security settings (can enter space, can see/interact-with contents, etc.). This would allow arbitrary sized/shaped security regions (I often would like to use cylindrical/spherical security zones, given the chance!).

[edit] Portal Primatives

I propose a "hyperlink" prim that would be configured with an URL to a destination region/grid. The prim would be like a phantom prim, and when looked at, the user would see the destination, a doorway, like a region boundry, when the avatar passes through the object, the avatar is handed off to the destination region. This would be very cool feature, a user/company could "rent" space on a popular grid a store front, in the back of the store is a "doorway" to the user/company's private region/grid server.

(Croquet is an excellent referral to this concept, since the developers devised Portal "primitives" that allow travel not only between different worlds, but to your own one aswell. Also, once your in your own world, you can create yet another Portal to a new world that you created and so on.) -Darakon Kayvon

[edit] Governance System

The online world would have to provide a means for communities to develop legal and political systems of governance. I can think of voting systems as a start.

[edit] Scripting

See the list of OSSL Proposals.

[edit] Payment System

OpenSim will need to support micropayment. See Money for details on how this could be achieved.

[edit] Free-form Avatars

OpenSim should, at some point in time, support the design and animation of free-form avatars (e.g. animals, monsters, robots).

[edit] In-World console maintenance

Terrain manipulations, statistics and some SIM administration related tasks are not available using the Viewer - they are only available on the command line application console where OpenSim is running. It would be nice to have this same console available in-world, using an Instant Messaging window with the simulator itself, the same way as we do with thoses old command line terminals.

[edit] Externally Scripted Objects

A prim with the script contents something along the line of //external:somehost:someport. Have the simulator connect to this host:port and relay data from it to the prim. Example, have a simple library that maps the LSL functions to a simple binary protocol, which can be used from various programming languages, not neccessarily .NET, and have it act like a server. This would allow scripts to be hosted outside the Simulator while adding security, as no code would be running on the Simulator. People could code Prim scripts using C if they wished, and the library would simply send the LSL commands to the server for relaying to the clients. If this could go straight to the client then even better. The next step after that would be for the script to be able to send Prim data aswell. This also gives the possibility of using one running script on several different Simulators at once. - HashBox

[edit] Object Inventory Source Control

  • This wish list feature starts with the premise that "I HATE working on scripting and objects within SL". Basically, allow users to checkout an object and its contents to an SVN repository. Work on the object and contents locally in whatever application they wish. Later, they can checkin the changes, and update the object inside the simulator.
  • SubversionSharp

[edit] The ability to set region bounderies

Useful in adding a max ceiling to a region. If it was possible, ability to create a "region box" with as stated earlier, an arbitrary origin. Thinking a little further, a "region sphere" would be interesting.

[edit] Universal Location Addressing

As part of grid to grid travel, a common standard for a universal location address / coordinate will need to be defined and supported.

Proposal: opensim://sim.grid.domain.tld:x.y.z/named_location/?param=value (alternatively, could be osa:// or osl://, or sim://).

Examples of use:

To avoid confusion, Opensim TLDs will need to be different from existing Internet TLDs. A naming registrar (NIC) will need to be established that ensures uniqueness and proper handling of registrations. - Ezekiel

Proposal: <sim|grid>://<FQDN>[[:<[zonename,]x,y,z>] | [/<symbolic destination>]]

Examples:

  • sim://www.mydomain.com
  • sim://www.mydomain.com:0,0,0
  • sim://www.mydomain.com/mycoolplace
  • grid://www.mydomain.com
  • grid://www.mydomain.com/mycoolplace
  • grid://www.mydomain.com:Zone1,0,0,0

The client can then get the required information regarding port numbers, protocols, and so on from SVR records embedded in the FQDN DNS Zone. This way clients are immune to changes in the physical hosting of the simulators. The data encoded in the SVR record could also give clues as to the protocol versions, abilities and restrictions of the destination. -Kelannim

[edit] Scriptable 'bodyparts' (Shape, Hair, Eyes etc)

This relates to Shapes, Hair, Eyes etc which are not prims but 'bodyparts', and are not manipulatable via LSL.

Two script commands could be implemented, one to write say a vector to 'bodypart' parameters (the numbers one edits in 'Appearance...'), and another to read them. It would be interesting to be able to create 'bodyparts' from scripts, using data derived externally or calculated in a script, perhaps from other 'bodyparts' data....

Further, with an extension to the permission system (notifying user that a script wants to modify a Shape/Hair/Eyes/whatever of theirs), perhaps editing of existing 'bodypart's could also be available.

[edit] Tide Server

It might be interesting to support tides in OGS. It should be doable without any mods to the SL client and probably wouldn't be even a big project (possibly a good teeth-cutting project for someone who wants to get into OGS server coding but isn't confident to tackle parts of a big or critical server component).

A few things to consider:

  • The tide server just periodically updates the water level in a grid's sims.
  • Would need to be grid-wide or dis-synchronised tides would have ocean-edge alignment issues (so no rolling tides across huge grids, sorry) so it would be a server operating at the grid level talking to regions.
  • Needs to be over-ridable as inland regions often use water level for things other than ocean and wouldn't want to follow the tides.
  • By using plug-in servers, different complexities of tide can be implemented depending on grid needs.

[edit] Some example tide servers

  • Null tide - simply a way to globally set sea-level in a grid. Takes a single sea-level value.
  • Simple Periodic - set the max, min and period and starting time values and let it roll.
  • Sun (and moon) locked - uses the position of the sun/moon to place tides realistically (presently rather easy as the sun and moon are always 180deg apart, but they might get unlocked from eachother later, extra suns/moons might also crop up long-term - presently it would be the same as Simple Periodic, but time-synced with whatever the day cycle is). Can day-cycles be enforced (or at least a default set) region-wide? Otherwise this would not be feasible.

[edit] SL Client compatibility

When the client sends a water-level request to the region, the region does one of two things:

  • if the water level is -32768 (assuming this value is stored as signed32) or 65535 (if it is a u32) or whatever represents the most 'insane' value possible, then the region refers back upstream to the grid tide server, gets the present tide level, and returns that (sane) value to the client.
  • if waterlevel set for the region is in the 'sane' range, that (region-local) value is returned without referring to the tide server.

(A region-server console command to set the water level outside what the current SL viewer allows is assumed).

[edit] Updating the tides.

(I assume the region is capable of informing attached clients when water level changes so that on-the-fly changes by region admins are reflected reasonably immediately in clients already).

  • tide server periodically multicasts a tide update signal to all regions.
  • if the region water level is in the 'insane' setting, it passes the update on to the attached (and neighbour-attached) clients.
  • if the region water level is 'sane' it does nothing, leaving the region-manager's water-level alone.

[edit] Client Side Weather System

A client side based weather system would be a breath of fresh air to those who enjoy more realism (Graphically). An overall Grid Weather System could also be created, so that different parts of the grid will be experiencing different forms of weather e.g 4+ Regions more to the north of the Grid would be in the midst of a blizzard whilst several sims further to the south are enjoying clear blue skys, but with an onset of rain on the way. A Server could be set up in order to simulate the overall GWS (Grid Weather System) and would shout to each region to simulate a specified weather type. All the Client has to do is pick up on the Information being sent to the region from the GWS and simulate it on-screen for it's users. Obviously this feature can be turned on and off at will, but it would be nice to not have to set up a particle weather system that cause's more lag than necessary. - Darakon Kayvon <math>Insert formula here</math>

[edit] Strong Identities

Basically objects and users would have strong identities created using public key cryptography. A creator or user would create a public/private key pair and register it with a key server, along with a signed hash of their character name/UUID/whatever. This creates a strong identity associated with the user.

This creator key could be used to generate certificates associated with their objects (signing the UUID and a hash of the geometry of the object along with their key identity) and register along with the geometry hash in a database. They could also create 'ownership' certificates which would be a signature against a player's identity and the object hash.

One of the uses of this is to allow a sort of voluntary property enforcement. The way it would work is that when an object is transferred using an intergrid (HyperGrid) connection, the transferor would also send any certificates associated with the object. These certificates, if the receiving server wishes, could communicate ownership or copy/mod/no-transfer rights based on the certificate and checking against the public key servers and object registries; it may also simply communicate a sort of certificate status to the other clients such that it could be verified that these objects are indeed created or authorized copies owned by the client. This would of course be completely voluntary within the grid, but it could allow commercial grids to manage intergrid object moves strictly if they want to. It could also exist simply to increase the 'cachet of ownership' such that you can show that you indeed purchase this from the creator.

Some notes:

  • It would be trivially easy for malicious clients to modify the object slightly in order to generate a new hash and register it with the object server. The point boils down to really more supporting the social movement of supporting artists you like and being able to show thus. Artists could publish their object UUIDs along with their owners so that they could be reverified orthogonally.
  • It would be trivially easy for malicious clients to submit erroneous hashes for objects. This could be solved by transferring the object parameters (all of the prims, locations, and parameters, the object description) to the object registry and having it do the hashing.
  • The creator keypair could be used for intergrid authentication also. Since it is a proper strong encryption keypair which is tightly associated to an avatar identity it could allow authenticated intergrid connections. It could also be used to encipher the communication between the client and the grid and authenticate messages back and forth.
  • Strong identities for objects could include a keypair which allows real-world integration such as bank transactions and whatnot to have a physical metaphor.
  • The point of the object certificates really isn't DRM (although in a limited sense it can be used for thus), but (partially) a way to show other players that an object was payed for and is original, that you willingly supported a creator voluntarily with your patronage.


--NickRusnov 21:45, 28 November 2008 (UTC)


[edit] Extend the form of the Sphere to a Superquadric Ellipsoid + Geodesic

On the end of present sphere data definition add the fields...

  • Sharpness - default to zero, meaning a regular sphere/ovoid and the sphere rendering path is to be used as per usual client-side (and the 'sides' field ignored).
  • Sides - can be set to any valid geodesic shape (client-side renderer can clip this value if too high). Negative value indicates to use the geodesic's dual.

Client-side (eg HipoViewer) would then need to be altered to allow editing and rendering of these shapes. (Detecting full sharpness and full roundness and passing these to appropriate optimised renderers for these shapes likely a good idea).

Adding same values to the end of the Cylinder shape to make an extruded Superellipse would be nice too (and with full sharpness, arbitrary regular shape extrusions such as pentagonal/hexagonal/octagonal prism).

Then finish the set with a Superellipse-extended torus.

Texturing as per sphere/cylinder/torus, so this does not - even if maxed out to be sharp-edged - replace a real box which can have one texture per face.


[edit] Simple Underwater Avatar Physics

Simulator physics option for:

When Avatar_position+(Avatar_Height/2) (ie. their head) is below simulator water level, they are put into fly mode. When they are more than Avatar_position+(Avatar_Height/3) (approx shoulder level) below simulator water level, they get a low positive gravity value (buoyancy) applied to them (use the page-down key to swim down against it). 'Swim' into waist-shallow water and Page_Down into land to stand again. No special client-side swim animations, etc. - they would be nice, but fly mode animations are good enough for a start and don't require client-side changes.

(Yes, it can theoretically be done with scripted attachments, but I prefer the efficiency of the physics engine doing it directly).

Personal tools
General
About This Wiki