GLTF collision is having weird problem (video included)

I’m getting this weird gltf convex shape collision, where model is reacting to floor goes inside of the floor, probably some mistake in calculating vertices or something? can anyone tell me where am I doing wrong, please?

Already posted this question on a closed solved post but didn’t get any solution so posting once again

I have attached a video of it below and this is the code

createMask(Ammo){
		let head
		let position = {x: 0, y: 70, z: 0},
		quaternion = {x: 0, y: 0, z: 0, w: 1},
		mass = 1

		const scale = 5

		this.loader = new GLTFLoader()
		const dracoLoader = new DRACOLoader()
		dracoLoader.setDecoderPath('/draco/')
		this.loader.setDRACOLoader(dracoLoader)
		this.loader.load('assets/models/mask.glb', (gltf) => {
			
			head = gltf.scene.children[0]
			head.scale.set(scale,scale,scale)
			head.position.set(0, position.y, 0)
			head.castShadow = true
			
			this.scene.add(head)

			//physics

			const transform = new Ammo.btTransform();
			transform.setIdentity();
			transform.setOrigin(new Ammo.btVector3(position.x, position.y, position.z));
			transform.setRotation(new Ammo.btQuaternion(quaternion.x, quaternion.y, quaternion.z, quaternion.w));

			const shape = new Ammo.btConvexHullShape();

            //new ammo triangles
            let triangle, triangle_mesh = new Ammo.btTriangleMesh;

            //declare triangles position vectors
            let vectA = new Ammo.btVector3(0, 0, 0);
            let vectB = new Ammo.btVector3(0, 0, 0);
            let vectC = new Ammo.btVector3(0, 0, 0);

            //retrieve vertices positions from object
            let verticesPos = head.geometry.getAttribute('position').array;
			console.log(verticesPos)
            let triangles = [];
            for (let i = 0; i < verticesPos.length; i += 3) {
                triangles.push({
                    x: verticesPos[i],
                    y: verticesPos[i + 1],
                    z: verticesPos[i + 2]
                })
            }

            //use triangles data to draw ammo shape
            for (let i = 0; i < triangles.length - 3; i += 3) {

                vectA.setX(triangles[i].x);
                vectA.setY(triangles[i].y);
                vectA.setZ(triangles[i].z);
                shape.addPoint(vectA, true);

                vectB.setX(triangles[i + 1].x);
                vectB.setY(triangles[i + 1].y);
                vectB.setZ(triangles[i + 1].z);
                shape.addPoint(vectB, true);

                vectC.setX(triangles[i + 2].x);
                vectC.setY(triangles[i + 2].y);
                vectC.setZ(triangles[i + 2].z);
                shape.addPoint(vectC, true);

                triangle_mesh.addTriangle(vectA, vectB, vectC, true);
            }
			
			Ammo.destroy(vectA);
            Ammo.destroy(vectB);
            Ammo.destroy(vectC);

            shape.setMargin(0.05);
			const motionState = new Ammo.btDefaultMotionState(transform);

			const localInertia = new Ammo.btVector3(0, 0, 0);
			shape.calculateLocalInertia(mass, localInertia);
			
			const rbInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape, localInertia);

			const rBody = new Ammo.btRigidBody(rbInfo);
			this.physicsWorld.addRigidBody(rBody)
			head.userData.physicsBody = rBody
			this.rigidBodies.push(head)
		})

	}

Have you tried using enable3d’s ammo.js wrapper?