Velocity, Drag and Momentum in VR

Hey, folks. I’m working on a VR project and have been very focused on trying to get the feel of object interactions to feel right. In particular, I’m trying to create a decent feeling of differentiation when it comes to swinging objects of different mass around. I’d like a one handed knife to feel significantly different from a two handed axe, for instance.

In looking around, I’ve found this formula regarding how drag works in Unity:

velocity *= Mathf.Clamp01(1f - drag * Time.deltaTime);

From looking at this, it appears that drag is applied as a constant value, becoming more significant and noticeable as velocity increases. This is essentially the opposite of what I actually want to accomplish. I’d like resistance to feel greatest at the start of an object’s movement, gaining momentum and losing resistance as it continues to move in the same direction.

To this end, what I’m thinking of doing is manually implementing my own drag, which is not applied as a constant but rather decreases every frame/couple of frames to simulate an object gathering momentum. I’m just curious if anyone has any experience implementing something similar that they can share, or if there is anything I’m missing with regards to PhysX’s own implementation of “momentum”, as I haven’t been able to find any.

As a bonus, I’m curious what might be a good approach to simulating momentum when an object changes direction. Obviously, there should be a strong drag factor applied initially, with a decent amount of force required to actually reverse or redirect the swing. If anyone knows of any halfway decent formulas to approximate this, that would also be greatly appreciated.

Thanks!