anjenthedog Posted January 30, 2021 Posted January 30, 2021 Just a couple ?quick? questions to clear up my conceptual ignorance. Do CBPC collision spheres interact with SMP bodies? if not, how is collision handled in SMP? Or... Am I mistaken on the fundamental nature of collision spheres? (ie they're not really "CBPC", and they act on both SMP and CBPC physics targets, or they simply interact with meshes, regardless of which physics model is employed) thanks
OrrieL Posted February 1, 2021 Posted February 1, 2021 On 1/30/2021 at 7:44 PM, anjenthedog said: Do CBPC collision spheres interact with SMP bodies? No, they cant. CBPC spheres are a virtual construct only in CBPC process. They are not even "seen" by the game engine. On 1/30/2021 at 7:44 PM, anjenthedog said: if not, how is collision handled in SMP? CBPC is using spheres of various sizes attached to specific bones (defined in the config file). Mesh/vertices have no participation in collision detection. Thats why you need a different config file for each body type to have "most" accurate collisions possible. SMP is not using spheres, it is using meshes(vertices) to calculate/detect collisions. Everything you need is just meshes with appropriate XML and it works without any additional objects. The proxy objects used in SMP are used to help with performance (and some "can-not" collide tricks), without them there will be so many (unnecessary) calculations that current CPUs cant handle.
anjenthedog Posted February 1, 2021 Author Posted February 1, 2021 Orriel, Thanks for the clarifications. So SMP works directly on mesh mesh interactions. Interesting. But that begs the question, how does one adjust the sensitivity of those interactions for SMP? With CBPC, modifying the collision sphere definitions was how it was done.
OrrieL Posted February 2, 2021 Posted February 2, 2021 SMP is very accurate and collisions by default happen exactly where they should as detection happens on triangle-vertex or triangle-triangle basis. You can somewhat control that by using these: margin (creates a "virtual pillow" around the mesh for purpose of collision detection so they happen a bit sooner) no-collide-with-bone (do not use vertices affected by this bone for collision calculations) no-collide-with-tag (do not calculate collisions for vertices of meshes with this tag) weight-threshold (vertices of this bone bellow this weight do not participate in collision calculations) You can also limit the collisions to happen only between meshes in one NIF (private) or only between meshes of the same NPC/PC (internal). All of the above are used to limit the number of calculations to greatly enhance the performance (less vertices used in calculations = less CPU strain).
anjenthedog Posted February 2, 2021 Author Posted February 2, 2021 Thanks. That makes sense. One last question (hopefully) You said that "You can somewhat control that..." by using a margin, no-collide-with-bone, no-collide-with-tag, and or weight-threshold definitions/directives. Where do I set these control values? Or "how", if that's a better way to ask.
OrrieL Posted February 3, 2021 Posted February 3, 2021 20 hours ago, anjenthedog said: Where do I set these control values? Or "how", if that's a better way to ask. In the controller file (XML). SMP documentation is very poor, but there are some guides here on LL or nexus covering the XML parameters part.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.