dimforge / rapier.js

Official JavaScript bindings for the Rapier physics engine.
https://rapier.rs
Apache License 2.0
418 stars 57 forks source link

JointData.revolute multiple axes #279

Open EthanHermsey opened 2 years ago

EthanHermsey commented 2 years ago

Hey,

I am having trouble with revolute joints. I have tried this with https://cdn.skypack.dev/@dimforge/rapier3d-compat and with webpack and @dimforge/rapier3d@0.8.0-alpha.2.

The javascript 3d userguide ánd the joint example shows that you can provide anchor, axis, anchor, axis arguments:

let x = { x: 1.0, y: 0.0, z: 0.0 };
let params = RAPIER.JointParams.revolute({ x: 0.0, y: 0.0, z: 1.0 }, x, { x: 0.0, y: 0.0, z: -3.0 }, x);
let joint = world.createImpulseJoint(params, body1, body2, true);

Those examples both use this RAPIER.JointParams.revolute. However in the docs and in the RAPIER instance I load there's only RAPIER.JointData.revolute. That version of the revolute function only takes 3 arguments; anchor, anchor, axis.

 JointData.revolute = function (anchor1, anchor2, axis) {
        var res = new JointData();
        res.anchor1 = anchor1;
        res.anchor2 = anchor2;
        res.axis = axis;
        res.jointType = JointType.Revolute;
        return res;
    };
    pub fn new(axis: UnitVector<Real>) -> Self {
        let data = GenericJointBuilder::new(JointAxesMask::LOCKED_REVOLUTE_AXES)
            .local_axis1(axis)
            .local_axis2(axis)
            .build();
        Self { data }
    }

I would really like to be able to use specific axes per body. I don't even understand how it would work with just one. Am I doing something wrong, or is this a translation error or something? It should be Axis1, Axis2.

For example, if you connect two cuboid body's with a revolute joint; body1 on the top and body2 on the right side. You'd want to set the y-axis for body1 and the x-axis for body2. Right?

Thanks in advance,

Ethan

EthanHermsey commented 2 years ago

I'm only now looking at the changelogs and see that much has changed in this last update.. Downgrading to 0.7.6 fixed this particular problem, for now.

gmmyung commented 1 year ago

I have encountered the same issue. Are there any updates on this?

EthanHermsey commented 1 year ago

Not from my end, sorry. Went back to ammo.js.