Glue constraint references unknown object

   480   2   2
User Avatar
Member
1 posts
Joined: Dec. 2024
Offline

I'm running into an issue with my Glue constraint in a fairly basic glass fracture. When simulated, the glue constraint has no effect, pieces that should be attatched simply fall apart. I've traced the problem to a constraint network in my dopnet, where I see the following warnings:

Warning
/obj/Window/dopnet1/constraintnetwork1/relationship: Glue constraint references unknown object 'p_0p_0'.
Warning
/obj/Window/dopnet1/constraintnetwork1/relationship: Glue constraint references unknown object 'p_0p_1'.
Warning
/obj/Window/dopnet1/constraintnetwork1/relationship: Glue constraint references unknown object 'p_0p_2'.

etc.

p_ is the piece prefix I have in my RBDMaterialFracture nodes (I'm using multiple nodes in parallel, but they are all identical so I dont think this causes the problem).

It is my understanding that the constraint should reference the names of the geometry pieces. Therefore I have used the same naming prefix in an assemble node so that the piece names are: p_0,p_1,p_2, etc.

Am I missing something here? I can't find any other queries on this forum that help, so any suggestions would be appreciated. I'm including my file below, along with the window I import.

Attachments:
Glue_Constraint_Issue.png (319.0 KB)
Glue Constraint.zip (553.4 KB)

User Avatar
Member
542 posts
Joined: Nov. 2016
Offline
Try unchecking "Create name attribute" from your assemble sop so that your existing attribute is not overridden.
User Avatar
Staff
445 posts
Joined: Feb. 2008
Offline
That seems like a very inefficient way to use the RBD Material Fracture SOP.
By default it runs in a loop, and you can run it per piece. In your case you could use the Connectivity SOP to create the name attribute (change the attribute parm to "name" and the attribute type to string) and enable the "Fracture per Piece" option on the RBD Material Fracture SOP.
It handles all the names and avoids duplicates - no need for you to have an assemble SOP override the name attribute. I'd also suggest using an RBD Configure SOP instead of the assemble SOP, as it'll make tweaking the sim attributes a lot easier.

If you do want to run the RBD Material Fracture SOP in your own loop, depending on what kind of loop you are using, you can use an RBD Pack SOP after the material fracture and plug that into the "foreach_end" Block End SOP so you get the Geo, Constraints and Proxy all at once, and then use an RBD Unpack SOP after your loop to split the 3 streams out.

If you want to run the loop as a feedback loop, RBD Pack the geo before the loop, RBD Unpack the geo as the first thing you do in the loop and feed the 3 outputs into the RBD Material Fracture SOP, then plug the output of that into an RBD Pack that feeds into the block end... But I'm not entirely sure what benefit you'd get doing it that way rather than daisy chaining a few RBD Material Fracture SOPs one after the other as you'd have much better visibility over each iteration...

Using an RBD Pack would avoid you running the same RBD Material Fracture SOP 3 times.

Regarding the error you're getting, the anchor names on the constraints don't have a matching RBD Piece in the sim.

The constraints are 2 point polyline primitives. The prims hold the constraint attributes, and each point has a name attribute that corresponds to the RBD piece they are anchored to.
From that attrib spreadsheet insert it looks like your first constraint is constraining piece "p_0p_0" to piece "p_0p_1" but you don't have any RBD piece named "p_0p_0" nor "p_0p_1". And so on for all the other constraints.
  • Quick Links