How to add ammo.js physic to gltf file?

Hello @Oxyn I think I have made a work around, but have some issues. Glft model goes inside the plane, Probably some mistake in calculating vertices or something, or should I add more margin? can you look into it, please! 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)
		})

	}