• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: VWR-13344
Type: New Feature New Feature
Status: Open Open
Priority: Normal Normal
Assignee: Unassigned
Reporter: TigroSpottystripes Katsu
Votes: 3
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
1. Second Life Viewer - VWR

Constructive Solid Geometry system, dynamic and static variations

Created: 08/May/09 04:56 PM   Updated: 19/Aug/09 12:11 AM
Return to search
Component/s: Building (in-world)
Affects Version/s: None
Fix Version/s: None

File Attachments: None
Image Attachments:

1. A couple examples of boolean operations.jpg
(138 kB)
Issue Links:
Relates
 


 Description  « Hide
(I'm pretty sure the odds of this being the first pjira entry asking for this are quite small, but the search returned tons of results that had nothing to do with what I'm looking for (perhaps Google could lend a hand to the guys over Jira to enable better evaluation of relevancy of the search results?)

there would be two types of CSG objects

Dynamic CSG, these would have the root set to be CSG, and the child prims (probably a reduced maximum number of them) would be have a boolean operation assigned to them, union, intersection, exclusion, subtraction etc (without an operation set it is the same as union, or perhaps not even that if having it just be a regular child prim would save processing time and/or storage space), besides "Edit Linked Parts", there would be another checkbox for "Edit CSG Operators", that would make all the operators (childprims) of the selected CSG object be displayed as regular prims for editing. In a Dynamic CSG object, the childprims can run scripts and be modified by them just like regular childprims, but there would also be a way to change the operation each prim is meant to do (perhaps if the creation of new geometry is too costly, add a bit of forced delay, but try to keep the size of the delay to a minimum)

Static CSG Objects would have as much prims as a regular linkset, but no scripts would be left running on Operator prims, and it can be linked as a single prim into a linkset, counting as a single prim, but while linked, the Operators can't be edited. While it is not linked, a script in the base prim can make the Operator prims turn into regular prims, making the scripts in them resume running (or if saving the state of that many scripts would be too expensive, have them start running from scratch). The Static CSG objects would be allowed to have so much more prims because their mesh would not be changed too frequently, it would only be necessary to transmit the data about the Operator prims when the Static CSG object is being edited, the rest of time, just a mesh (and texture mapping) needs to be informed, it might even be possible to run optimization algorithms on the mesh to reduce the number of vertexes even if it takes a couple of seconds since it will only happen sporadicly, also, it wouldn't have any scripts running on it's operators. This way they could also count as a single prim on linksets, since while linked, all that have to be communicated is the resulting mesh.

CSG objects would inherit the texture mapping of the prims that made them, in the texture tab the parameters would be multipliers and offsets for the individual parameters of the the prims that originated the mapping, or perhaps some sort of automatic unwrapping could be another option. I'm not sure how the number of faces would be defined, perhaps each individual surface would be a face, or everything would be a single face, i'm not sure.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
TigroSpottystripes Katsu added a comment - 08/May/09 07:25 PM
hm, I think I might have mixed a bit of the general description of CSG objects in the description of each individual type, lemme know if there is need for defining CSG Objects in general to explicitly point out what the two types have in common and what are the differences between them

Morgaine Dinova added a comment - 23/Jul/09 11:30 AM
Tigro, you might wish to take a look at the various Jiras that come under the general title of "Hierarchical Objects" which addresses this area of constructive geometry rather more flexibly.

We have an introductory wiki page on this topic: http://wiki.secondlife.com/wiki/Prim_and_Object_Hierarchy

Some relevant Jiras are:

  • MISC-428 - Hierarchical linking of prim/objects
  • MISC-2237 - Requiered additions and changes to objects and scripting, for improving content-creation capabilities
  • MISC-1434 - Add an orientable linking capability
  • MISC-227 - Implement optional prim-joint hierachy
  • SVC-93 - llSetPrimitiveParams PRIM_ROTATION and llSetRot incorrectly implemented for child prims

It's worth noting that the need for hierarchical objects has good support from various Lindens, as noted repeatedly during office hours. The big problem appears to be finding manpower to execute such a project, both in terms of good design (which is non-trivial) and of implementation.

Changing the existing system of one-level prim linking (linksets) to accomodate hierarchical linking would probably break existing content, and therefore is not being proposed. Instead, a new set of "hierarchical prims" would be created, derived from the old prims but not affecting objects created with the old prims.


TigroSpottystripes Katsu added a comment - 24/Jul/09 06:48 PM
those don't really touch on the topic of CSG

as for "hierarchical linking", only static CSG objects would be linked as child prims, and while linked (or simply being a static CSG not being edited) it would be treated as single prim, while linked, the operator prims wouldn't be avaiable at all, it would be a single prim, with a custom mesh as the only parameter. To edit a static CSG object, it would have to be unlinked, it would be just like any other linkset.


Morgaine Dinova added a comment - 24/Jul/09 07:41 PM - edited
Noted.

That would make this proposal less flexible and more restrictive than it might have been, so I have withdrawn my vote for this Jira.

Our aspirations for hierarchical objects are far more ambitious than this.

The idea of Operator nodes as part of a tree-structured assembly is of course an excellent one, but hobbling it at birth by limiting it to non-hierarchical components is not.


TigroSpottystripes Katsu added a comment - 24/Jul/09 08:50 PM
I posted a pic I made that shows a couple of examples of boolean operations (didn't came out quite as I itnended, my skills int he areas involved are rusty)

TigroSpottystripes Katsu added a comment - 24/Jul/09 08:59 PM
this proposal is about a way to get more advanced shapes

if the limits on prim count, or resource usage of generating custom meshes on-the-fly by script and other things like that can be overcome, I'm all for it, meanwhile, better in-world modeling tools would be more than welcome


Stickman Ingmann added a comment - 25/Jul/09 05:02 PM
Morgaine, I really don't see hierarchical systems and constructive solid geometry being mutually exclusive.

From the description of static CSGs, they'd fit into the hierarchical system just fine. The description of dynamic ones sound a little more complicated to fit in – but you say that the old prims are still gonna be around, and the hierarchical ones are gonna be a new prim type? So why not have dynamic CSG be for the old type?

So either case – mutually exclusive with hierarchical prims or not – CSG can co-exist just fine.

I liked my other post better, but Jira decided to eat it. Hopefully this one gets my point across just as well.


TigroSpottystripes Katsu added a comment - 25/Jul/09 05:15 PM - edited
I proposed the two different types of CSG objects to allow for both the flexibility of live remodeling of CSG objects with scripts and the possibility of more complex shapes with more prims that can be treated as single prim for linking purposes, both taking in consideration the nature of current limitations

TigroSpottystripes Katsu added a comment - 25/Jul/09 05:36 PM - edited
btw, I think the only operation I left out of that picture was "exclusion" (not sure if that is the right name), I did that intentionally because I don't think it would be easy to understand from how it would look in the picture (I could have made it work by using shapes other than a cube and a sphere though), the result of that operation is the same as putting the two subtractions together, or subtracting intersection from union (was that explanation clear enough?)