Child glb model of capsule falls off & keeps sliding on HeightMap Terrain

Recently started to learn Babylonjs, and by following some tutorials I was able to import a heightmap terrain and a glb character (player). Player is a child of capsule parent.

      const outer = new PhysicsShapeCapsule(
          new Vector3(0, 2, 0),
          new Vector3(0,  0.35, 0),
      //yTilts.rotation = outer.rotation;
      yTilts.position = position;
      var model = await SceneLoader.ImportMeshAsync("", directoryPath, fileName, scene, () => {});
      const body = model.meshes[0];
      body.position = position;
      body.isPickable = false; //so our raycasts dont hit ourself
      body.getChildMeshes().forEach(m => {
          m.isPickable = false;
      const aggregate = new PhysicsAggregate(body, outer, { mass: 75, friction: 1, restitution: 0 }, scene);
      aggregate.body.disablePreStep = false;
      return {
          mesh: body as Mesh,
          animationGroups: model.animationGroups,
          yTilt: yTilts,

Problem is, this capsule doesn’t stand on ground. it just falls off & keep sliding on ground. Please guide me to the right direction to find what am I doing wrong here.

Adding @carolhmj and @Cedric for the physics part but I guess you would need some friction to prevent sliding downhill ?

Thanks. In the meanwhile I checked model with plain ground i.e. MeshBuilder.CreateGround, and surprisingly there was no problem. Since I am using Heightmap terrain, something to do with it.

Can you share a Playground (Babylon.js Playground) with your code? You can see how to use your assets with the PG here: Using External Assets In the Playground | Babylon.js Documentation (