Das schlechte Zusammenpassen kan verschiedene Ursachen haben. Die erste ist wahrscheinlich, dass der NPA doch nicht so genau stimmt, wie Du glaubst. Abgesehen davon, dass ein Fisheye keinen festen Nodalpunkt besitzt, so wie ein geradlinig abbildendes Objektiv. Beim Fisheye ist der Punkt drehwinkelabhängig. In der Waagerechten drehst Du um 60°, und für das Zenitbild schwenkst Du um 90°. Das kann nicht perfekt passen.
Die Decke selbst bietet sehr wenig Möglichkeiten, Kontrollpunkte zu finden, das macht die Sache nicht einfacher. Es wäre geschickt, ein paar Klebezettel als künstliche Kontrollpunkte an der Decke zu verteilen. Die lassen sich später leicht retuschieren.
Die Fehler können auch aus einer ungeschickten Handhabung der Software entstehen. Dein verwendetes Programm kenne ich nicht, aber ich sage Dir gerne, wie ich sowas in PTGui löse. Vielleicht kannst Du die Methode irgendwie in Deinem Programm umsetzen.
1. Nach dem Einfügen des Zenitbilds erlaube ich dem Optimizer nicht, die bereits optimierten Bilder nochmals anzupassen. Es darf nur noch das Zenitbild optimiert werden.
2. In Deinem ersten Bild sind alle Kanten der Decke vorhanden. Das bedeutet, die fehlende Fläche kann komplett aus dem Zenitbild erzeugt werden. Ich würde also im Zenitbild alle Bereiche maskieren, die einen Inhalt unterhalb der Decke zeigen. Auf diese Weise kann es auch nicht passieren, dass bereits stimmige Möbel mit unstimmigen Bereichen überblendet werden. Genauso mit den Kanten der Decke. Eventuelle Ungenauigkeiten in der weißen Deckenfläche fallen bei passender Maskierung nicht auf.