Hi Nataniel,
The entry point of the registration is in the file src/main/scala/registration/Registration.scala. The main method is at the bottom of the file in the object Registration. There you can see the two things you need to change:
1. The BU3DDataProvider handling all loading, saving as well as lists of IDs or Experssions.
2. The method Registration.run() in the same file.
The run method is on line 194:
- The method iterates first over the different expressions. Then the expression specific model is loaded. Here you need to change that the BFM is loaded. However, as you mentioned they are of different types: MoMoExpress and StatisticalMeshModel (discussion further down).
- Next the method iterates over the identities. It loads the data for identity and expression. There you would need to make sure that the data provider loads the right data.
- Then the target is aligned with the model and the method Registration.registration() is called. In there I do not expect that you need to change something.
Model: MoMo vs. StatisticalMeshModel
The main difference between the models is that MoMo has a separate shape and expression basis. The SMM has only one basis. The easiest solution would be to stack the two bases to one. For most applications, such a basis should work even that it is no longer orthogonal.
If you want to learn more, there is currently the future learn course running dedicated to shape modeling (see
http://shapemodelling.cs.unibas.ch/). The course is also based on scalismo. If you successfully complete the shape modeling course, you can visit us in Basel for the following summer school where we usually have a few projects proposed but you could also work on your own project, e.g. this registration.
I hope this information helps you to proceed and I am curious to hear about your experience and maybe future problems.
Best, Andreas