How to add vertices in 3d model

You can take advantage of a super handy fact that three.js uses only triangles for rendering - which makes subdivision quite easy (you just take all 3 vertices of the face, calculate average of them, then split the face into 3 triangles. For indexed meshes you just then add 2 new records to the index array, for non-indexed meshes you push new vertices to position buffer attribute directly.)

A tiny example, relevant code in L8-L95, the rest is just boilerplate. Try clicking on any of the faces to subdivide it on-demand - similar subdivision can also be applied to the entire mesh / edited regions of the mesh, not only a single face.