• 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: MISC-428
Type: New Feature New Feature
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Elwe Ewing
Votes: 50
Watchers: 14
Operations

If you were logged in you would be able to see more operations.
4. Second Life Misc Issues - MISC

Hierarchical linking of prim/objects

Created: 16/Jul/07 10:16 AM   Updated: 21/Jul/09 11:18 AM
Return to search
Component/s: Miscellaneous
Affects Version/s: None
Fix Version/s: None

Issue Links:
Duplicate
 
Relates
 


 Description  « Hide
It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2

object2 -> UNLINK = prim4, prim5, object1 (**)

this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.

Note: I've raised the priority from "normal" to "major" (no, it isn't "critical" or "blocker" anyway) because of the lack of this feature is a real (major) problem for all the builders. I hope you'll quickly introduce prim progressive grouping/linking at least and leave for a future implementation other less important considerations (aka local roots for LSL and so on).

[Expanding a bit LSL POV]
From the LSL POV "internal roots" (sub-roots) can be treated as childs (but they remain roots for their own childs), this means they'll receive linkmessages directed to master's childs as they are (e.g. LINK_ALL_CHILDREN) BUT they can act as an "insulator" for the childs present in the sub-linkset: as (local) root, they can decide if their childs should receive "upper level" linkmessages or not.
If one wants a linkmessage being propagated there is a simple way: sub-root's script can send a linkmessage to it's prims only repeating LINK_ALL_CHILDREN which will be valid for the sub-linkset only (and can be propagated from sub-level to sublevel in a hierarchical manner).
In this case LINK_SET should keep the original mean of "to self and all childrens, no matter if they're in a sub-linkset" while LINK_ALL_CHILDREN stops to sub-roots.



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Elwe Ewing made changes - 16/Jul/07 10:48 AM
Field Original Value New Value
Description It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single-multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) handling.
It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.
Elwe Ewing made changes - 30/Jul/07 08:41 AM
Priority Normal [ 4 ] Major [ 3 ]
Description It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.
It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.

Note: I've raised the priority from "normal" to "major" (no, it isn't "critical" or "blocker" anyway) because of the lack of this feature is a real (major) problem for all the builders. I hope you'll quickly introduce prim progressive grouping/linking at least and leave for a future implementation other less important considerations (aka local roots for LSL and so on).
Mercia Mcmahon added a comment - 02/Aug/07 08:17 AM
Would vote for it if and when it is confirmed that this is achievable.

Elwe Ewing added a comment - 07/Aug/07 03:52 AM
I think that from a building point of view is a matter of handle "more deep hierarchy" then the actual "one hierarchy level only".

e.g. (today): capital letters means "root", other are "leaves"

p1, p2, p3 (link)> o1[P3+p1+p2]

or

P3 <-- last prim selected = root prim
o1--
  \
p1 p2

and

p4, p5, p6 (link)> o2[P6+p4+p5] or

P6
o2--
  \
p4 p5

o1, o2 (link)> o3[O2+o1] == o3[P6+p1+p2+p3+p4+p5]

or

__P6_
o3--
/ / \ \
p1 p2 p3 p4 p5

You can see how, in the (second) linking process, the "P3 = root" information is lost to "flatten" the hierarchy into a single level. Thus, when unlinking, no one knows about the ancient "root" (P3) and all the prims are "leaves" (unlinking o3 leads to p1...p6 normal (unlinked) prims, where each prim is "root for itself").

The new way of linking

If a multilevel hierarchy can be preserved, linking o1 to o2 is the same to attach a tree to another tree:

o3[[P6+p4+p5]+[P1+p2+p3]] (yes: "lists into lists")

or

P6
o3--
/ \
P1 p4 p5
  \
p2 p3

How the prims/objects will be linked depends to the objects/prims presents at the linking time, so linking o1 to p3, p4 and p6 will gives o2[P6+p4+p5+o1[P3+p1+p2]] and linking o1[P3+p1+p2] to o2[P6+p4+p5] leads to o3[o2[P6+p4+p5]+o1[P3+p1+p2]].

So, for instance, you can move a complex built engine, with e.g. 50 prims, apart of the whole car frame, which can be built by 200 prims, without unlinking all the 250 prims car (or, better, you can select the engine to move, as a "object", without have to unlink the car or move 50 pieces one at the time).

LSL POV

From the LSL point of view we'll have "main roots" and "sub roots": a main root is the root we already have (root of all object) and a sub-root is a root prim which is root for it's sub-prims but a leaf for the upper-level root (which may not be the top-level-root). Thus the messages from script to linked prim/scripts may complain of the multi-level hierarchy: "message to sub-hierarchy N" means "to the N.th root" (N.th root can then route the message to a local leaf if needed, the same way actual roots do).

general POV

I don't know if is a real need to have LSL multilevel hierarchy (even if, from the architectural POV, is a cleaner behaviour), but I'm sure that hierarchies are a major need from the building POV.


Mercia Mcmahon added a comment - 11/Aug/07 06:54 AM
I voted for this as very useful when trying to work with someone else's creation (especially when stretching it to full size causes the entire structure to unlink, as happens with the freebie prefab, Alpine Castle). I would assume, however, that the original builders would use this progressive approach in their own workshops, e.g., in your example they would have a separate object of 50 prim car engine and 200 prim car, which they link for the final for sale version, so this really a consumer-side feature request.

Elwe Ewing added a comment - 17/Aug/07 01:44 AM
This a builder-side feature also: imagine the same builder/vendor that draws he's car, "extract" the engine only and builds up a new frame around it... or, at the contrary, keeping the old good chassis, put the engine apart and mount a new better one instead... all without unlinking the full (now-unprobable ) 200 pieces car.
(hopefully he may select Unlink, selecting the engine's (sub)root prim then he can move it apart from the car)

A real case: i built a not too complex cape with an "object" built up of really small particulars. Now: if I want to extract this object to change some of the small particulars it's impossible to me to move that "object" 'cause of, after linking, it's no more an "object": all it's prims are now parts of the whole cape... a real pain in the butt to edit old things. :-/

Progressive linking may help linking objects/prims at the "end" of flexy object also.
(now the linking is spatially referred to the center of mass of the whole object: only flexies have an end-attach-point to the "reference" but no prim can be linked to them)


Amanda Ascot added a comment - 20/Aug/07 11:24 AM
Absolutely, I want this! I'm constantly wishing that when I link sets of linked sets together (you followed that, right?) that when I unlink the whole thing the subsets remained linked in their original configurations. This would be a big boon to builders.

Mercia Mcmahon added a comment - 22/Aug/07 09:16 AM
The point I am making is the LLs should not make this change if it was only helping builders. As frustrating as it is to deal with builders have the ability to save progressively, your customers do not. I use Sim in a Box sim rezzer, and it is a nightmare if the object you want rid off (to cut prim usage) is linked to something that needs to remain, You can end up having to individually delete 50 prims.

Mercia


Wolt Amat added a comment - 22/Aug/07 09:19 AM
I agree with Elwe, it would make an excellent form of object heirarchy. I have many build situations where I want to have linkable/unlinkable subsets, for example a "complete place setting" at a dining table of many place settings, or "one of many doors" in my house, or even two "shoes".

Autophile Carling added a comment - 26/Sep/07 06:27 AM
I agree that object hierarchies are a must, not only because it makes building and "unbuilding" easy, but also because having an object hierarchy would allow objects to manipulate entire subassemblies of themselves by manipulating the root object. This would allow, for example, animated arms where you wouldn't have to worry about moving the forearm if the shoulder rotates.

Elwe Ewing added a comment - 11/Dec/07 10:18 AM
[Expanding a bit LSL POV] section added

Elwe Ewing made changes - 11/Dec/07 10:18 AM
Description It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.

Note: I've raised the priority from "normal" to "major" (no, it isn't "critical" or "blocker" anyway) because of the lack of this feature is a real (major) problem for all the builders. I hope you'll quickly introduce prim progressive grouping/linking at least and leave for a future implementation other less important considerations (aka local roots for LSL and so on).
It may be a great help, for builders, if objects can be "progressively linked": this may happen if a multi-prim object which is linked into anoter single/multi-prim object maintains its original "linking information" so that, if unlinked, it can be seen as an object, not "exploding" into all the original prims.

prim1+prim2+prim3 -> LINK = object1
prim4+prim5+object1 -> LINK = object2 (*)

object2 -> UNLINK = prim4, prim5, object1 (**)

(*) this object can have a single "root" prim or you may decide to have multiple "roots" to act as "local roots": evaluate the meaning from the LSL POV.

(**) nowadays unlinking object2 produces prim1, prim2, prim3, prim4 and prim5, all unlinked, which makes builders' work really hard when want to modify fully linked objects (e.g. moving a sleeve, with its sub-parts (jewels, strings, and so on), into a jacket when this one was fully (or "finally") linked)

The request above may or may not have LSL conseguences: LSL may continue to work as is working now, with a single root prim and all the underlying prims as leaves, or it may work as in the past, with all linked sub-objects working as "joints" (see MISC-227 proposal).
The main target of this proposal is to obtain a hierarchy in objects, not in LSL, thus handling them results in better (and quicker) building.

There should be one more Tools' menu action, "Fully unlink" (or "UUnlink") the object, to quickly unlink all prims if needed: usefull with deeply progressive linked objects.

Note: I've raised the priority from "normal" to "major" (no, it isn't "critical" or "blocker" anyway) because of the lack of this feature is a real (major) problem for all the builders. I hope you'll quickly introduce prim progressive grouping/linking at least and leave for a future implementation other less important considerations (aka local roots for LSL and so on).

[Expanding a bit LSL POV]
From the LSL POV "internal roots" (sub-roots) can be treated as childs (but they remain roots for their own childs), this means they'll receive linkmessages directed to master's childs as they are (e.g. LINK_ALL_CHILDREN) BUT they can act as an "insulator" for the childs present in the sub-linkset: as (local) root, they can decide if their childs should receive "upper level" linkmessages or not.
 If one wants a linkmessage being propagated there is a simple way: sub-root's script can send a linkmessage to it's prims only repeating LINK_ALL_CHILDREN which will be valid for the sub-linkset only (and can be propagated from sub-level to sublevel in a hierarchical manner).
 In this case LINK_SET should keep the original mean of "to self and all childrens, no matter if they're in a sub-linkset" while LINK_ALL_CHILDREN stops to sub-roots.
Elwe Ewing added a comment - 11/Dec/07 10:22 AM
Title modify: "Progressive" -> "Hierarchical"

Elwe Ewing made changes - 11/Dec/07 10:22 AM
Summary Progressive linking of prim/objects Hierarchical linking of prim/objects
Rob Linden made changes - 21/Dec/07 11:09 PM
Workflow jira [ 13873 ] jira-2007-12-19 [ 18126 ]
Rob Linden made changes - 22/Dec/07 12:38 AM
Workflow jira-2007-12-19 [ 18126 ] jira-2007-12-21 [ 19780 ]
Rob Linden made changes - 23/Dec/07 12:59 AM
Workflow jira-2007-12-21 [ 19780 ] jira-2007-12-22a [ 50065 ]
Bill Friis added a comment - 30/Jan/08 02:52 PM
Clearly, many of us have encountered a few times when we needed this feature. But this is the kind of feature that we will all need constantly once we actually have it. It is simply too useful not to implement if there is any way to do it. Every drawing program that hopes to be taken seriously has had hierarchical grouping like this for a decade, so there must be a few programmers out there who know how it is done.

Apopsy Hax added a comment - 29/Feb/08 08:38 AM
Yes, that is the feature we need!

I think it would increase the possibilities in scripting too.
I think of the objects containing of more then one prim and can be rotated right unlinked.
But after linking the rotation don't work anymore because the object with root<->childs is gone. All prims of the objects are childs of the new root prim.
VOTE FOR IT!


Eata Kitty made changes - 18/Jul/08 03:56 PM
Link This issue is related to by MISC-1400 [ MISC-1400 ]
Eata Kitty added a comment - 27/Jul/08 05:51 AM
This could also let you do nice things like hide child sets client-side to allow easier editing of an object without their prims getting in the way.

Wolt Amat made changes - 03/Aug/08 10:57 AM
Link This issue is related to by MISC-1434 [ MISC-1434 ]
Liz Ferlinghetti added a comment - 10/Oct/08 09:07 AM
Could definitely do with this feature. Makes much more sense with bigger builds to link subsets but difficult to change things if when you unlink everything drops to bits.

Tilla Kronos added a comment - 10/Oct/08 08:54 PM
All professional 3d programs have hierarchical grouping (+ animation). It would reduce time + frustration - especially when constructing building elements. Also - there should be an 'undo' for erronious ungrouping. A schematic view of the hierarchy nodes would help as well.
+ since I am at it:
A manual setting of ownership for all builds (in preferences?)

Sue Linden made changes - 13/Nov/08 11:37 AM
Workflow jira-2007-12-22a [ 50065 ] jira-2008-11-14 [ 74291 ]
Sue Linden made changes - 13/Nov/08 11:51 AM
Workflow jira-2007-12-22a [ 74291 ] jira-2008-11-14 [ 78504 ]
Sue Linden made changes - 13/Nov/08 04:18 PM
Workflow jira-2008-11-14 [ 78504 ] jira-2008-11-14a [ 83460 ]
Theblack Box made changes - 21/Jan/09 08:16 PM
Link This issue is related to by MISC-2237 [ MISC-2237 ]
Gellan Glenelg made changes - 05/Jun/09 03:15 PM
Link This issue is original of duplicate VWR-13877 [ VWR-13877 ]
Pawel Sixpence added a comment - 20/Jul/09 03:27 PM
Has anyone from Linden Labs looked into this issue? It was started in 2007...

Elwe Ewing added a comment - 21/Jul/09 11:18 AM
@Pawel: LL seems simply "not interested" to look at what residents are asking for. I've made a few requests, which seems interesting not only for me but for a certain number of residents (primarily builder/scripters but wanderers also, like me) and the only one which seems to be "early" resolved, more than two years later, is to have C-like comments into script, to better handle relevant pieces of code (see http://jira.secondlife.com/browse/SVC-2631)... just a request to better handle comments, not a doomsday change in the whole damn'd SL's behaviour... _"

Not they think to handle this request, nor they like to comment here (e.g. "don't think we'll do it" or similar).

The only way to change the things, which I seen "productive" for me, is to change the "environment" where to operate: e.g. in OpenSim we do HAVE c-like comments since a year or more... and I think we'll have this kind of things (hierarchical building) early or later.
Now I'll stop my rants on LLs and go to the world where a "resident" is listened (as a matter of fact I'm not only a "resident", there, but the owner of 32 sims nowadays ).

c ya