Quantcast
Channel: Question and Answer » libgdx
Viewing all articles
Browse latest Browse all 434

Move/Rotate 3d multiple objects w.r.t. to one another in libgdx

$
0
0

I have two blender objects in .g3dj format. Below is the code :

private void createBaseArm1(){
        // Now load the model by name from asset folder
        baseArm1 = modelLoader.loadModel(Gdx.files.getFileHandle("arm1.g3dj", Files.FileType.Internal));

        //getting boundingBox for model to retrieve its co-ordinates
        baseArm1.calculateBoundingBox(baseBoundingBox);

        baseArm1PositionX = 0f;
        baseArm1PositionY = -3.0f;
        baseArm1PositionZ = 1.0f;

        baseArm1PositionVector = new Vector3(baseArm1PositionX, baseArm1PositionY, baseArm1PositionZ);

        baseArm1Instance = new ModelInstance(baseArm1, baseArm1PositionVector);
        baseArm1Instance.transform.set(baseArm1PositionVector, baseArm1Rotation);
    }


private void createArm2(){

        Matrix4 arm2Matrix4 = new Matrix4();
        arm2Matrix4.translate(baseArm1PositionX, baseArm1PositionY + baseBoundingBox.getHeight(), baseArm1PositionZ);
        armModel2 = modelLoader.loadModel(Gdx.files.getFileHandle("arm2.g3dj", Files.FileType.Internal));
        arm2Instance = new ModelInstance(armModel2, arm2Matrix4);

    }

public  void rotateBaseArm1(){

        baseArm1Instance .transform.translate(0, 0, 0)
                .rotate(0, 0, 1, 10)
                .translate(0, 0, 0);
}

public  void rotateArm2(){

        arm2Instance.transform.translate(0, 0, 0)
                .rotate(0, 0, 1, 10)
                .translate(0, 0, 0);
}

baseArm1Instance is the base for arm2Instance. I can rotate both baseArm1Instance and arm2Instance independently. My requirement is if baseArm1Instance is moved/rotated then arm2Instance should also move/rotate w.r.t its base.

I am new to gaming. I have tried several links but not able to get any success. Any help will be great. Thanks.


Viewing all articles
Browse latest Browse all 434

Trending Articles