Given two direction vectors v1 and v2, rotate model from v1 direction to v2 direction.
First, we can think of using quaternion.

Here, we can use RtateTransform3D instead of QuaternionRotation3D because WPF's 3D Transform handles underlying math more efficiently. Here's the code:
Input: Vector3D v1, v2
// Normalize
v1.Normalize();
v2.Normalize();
Vector3D axis = Vector3D.CrossProduct(v1, v2);
double angle = Math.Acos(Vector3D.DotProduct(v1, v2));
// Create a RotateTransform3D instead of MatrixTransform3D
AxisAngleRotation3D axisAngleRotation = new AxisAngleRotation3D(axis, angle * (180 / Math.PI));
RotateTransform3D rotateTransform = new RotateTransform3D(axisAngleRotation);
// Add the rotation transform to your transform group
transformGroup.Children.Add(rotateTransform);
transformGroup.Transform(Point3D)
transformGroup.Transform(Vector3D)
Matrix3D matrix = transformGroup.Value;
Matrix3D inverseMatrix = matrix.Inverse();
Transform3DGroup inverseTransformGroup = new Transform3DGroup();
inverseTransformGroup.Children.Add(new MatrixTransform3D(inverseMatrix));
Point3D rePoint = inverseTransformGroup.Transform(Point3D)