Jump to content

[Skyrim] Havok / Ragdoll Constraints


Saerileth

Recommended Posts

First of all hi, I'm new here! I'm looking for someone who has experience with collision / havok / ragdoll properties of Skyrim's meshes, specifically bhkRagdollConstraint nodes.

 

I recently came across this lovely resource, which includes a fully havoked wind chime inspired by the ones usually found in ashland tents in Morrowind. I didn't know how much I missed those until I came across this one. Ah, nostalgia...

 

Anyways, while the old chimes were just scripted to gently sway from side to side a bit, these have actual working havok simulation, so they will spin away when something bumps into them. Once I set the havok material to bone they even made a nice clattering noice when colliding with other solid objects (e.g. walls), though they make no noise when bumping into each other (in fact, they seem to pass right through). Ideally I'd like to remedy that, but it's not my main concern.

 

The problem I'm having is that after swinging for a few seconds, the chimes settle in a slightly skewed position. Instead of handing perfectly vertical (as gravity dictates), most of them stop a tiny bit above that point, like they stopped midswing. It's not something that's obvious at first glance, but it does look a bit odd. So I was wondering, is there some way to force the chimes back into their original positions after completing the havok simulation?

 

The closest I've come to finding an answer to this was this tutorial about Oblivion meshes. Towards the very end (in the Advices section), is the following line:

Unknown Byte 2 of the bhkRigidBody is some kind of precision flag. It's 2 by default for non-static objects, which means the movement of the object is stopped when its speed is near, but not zero (signs stopping mid-swing). Set it to 0 or 1 for more precise movement. It's needed only in very rare cases though.

 

This is exactly what I need, but I can't find an "Unknown Byte 2" in my bhkRigidBody nodes. Has this been renamed by the NifSkope team, or does Skyrim not use that flag?

 

I've attached my working copy of the chimes to this post in case anyone would like to have a look at them. I touched up the textures to look more like the MW version and removed the sharp edges to make them render smoothly, but the havok-related stuff is pretty much unchanged. Here's a picture of how they look ingame:

LhtqSCD.jpg

 

I'd appreciate some advice on this matter, as I have absolutely no experience with ragdoll contraints. As I said it's not a showstopping issue, but it would make this lovely resource perfect for me if it could be fixed.

 

Cheers,

Saerileth

 

WindChimesWIP.zip

Link to comment
Share on other sites

It is quite possible that we renamed the attribute as it was discovered what it is meant to do.

Looking through the commit logs, the only thing that has been touched is the descriptions, not the attributres, but I only went back so far.

 

I will forward this query onto ttl269 as he is our domain knowledge expert when it comes to..practically everything at this stage.

Link to comment
Share on other sites

Thank you! I had almost given up hope :D I can hardly find any information about havok or ragdolls online, it's been very frustrating.

Link to comment
Share on other sites

  • 4 weeks later...

https://github.com/niftools/nifxml/commit/5f4d4de5f8e1a9bf2cb4858543486bceddddfcb0#diff-b40bc0336ce54aa4b9bc9ffd65a03ea3R1333

 

Unknown Byte 2 = Solver Deactivation

    <enum name="SolverDeactivation" storage="byte">
        A list of possible solver deactivation settings. This value defines how the
        solver deactivates objects. The solver works on a per object basis.
        Note: Solver deactivation does not save CPU, but reduces creeping of
        movable objects in a pile quite dramatically.
        <option value="0" name="SOLVER_DEACTIVATION_INVALID">Invalid</option>
        <option value="1" name="SOLVER_DEACTIVATION_OFF">No solver deactivation</option>
        <option value="2" name="SOLVER_DEACTIVATION_LOW">Very conservative deactivation, typically no visible artifacts.</option>
        <option value="3" name="SOLVER_DEACTIVATION_MEDIUM">Normal deactivation, no serious visible artifacts in most cases</option>
        <option value="4" name="SOLVER_DEACTIVATION_HIGH">Fast deactivation, visible artifacts</option>
        <option value="5" name="SOLVER_DEACTIVATION_MAX">Very fast deactivation, visible artifacts</option>
    </enum>

Maybe you should try SOLVER_DEACTIVATION_OFF ... But I don't really know much about ragdoll constraints.  

Link to comment
Share on other sites

SOLVER_DEACTIVATION_OFF didn't solve the issue, but maybe lessened it a bit... can't be sure though without more testing. I'll try some of the other options for that setting, maybe INVALID yields better results.Then there's also the Deactivator Type, which is currently set to DEACTIVATOR_NEVER. Thanks for the info, this has at least given me something to work with.

 

@neomonkeus: No worries, I was busy anyways.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...