CFrame.fromMatrix(Vector3 pos,Vector3 vX,Vector3 vY [,Vector3 vZ])
Default for vZ is vX:Cross(vY).Unit
It constructs the CFrame in a similar way to CFrame.new with 12 arguments.
CFrame.fromMatrix(
Vector3.new(x,y,z),
Vector3.new(r00,r10,r20),
Vector3.new(r01,r11,r21),
Vector3.new(r02,r12,r22)
)
is the same as
CFrame.new(
x,y,z,
r00,r01,r02,
r10,r11,r21,
r20,r21,r22
)
In fromMatrix, vX represents rightVector, but in the CFrame.new method it is the 4th, 7th, and 10th arguments. (similar things with upVector and lookVector)
CFrame.fromMatrix is not a combination of CFrame.new and CFrame.Angles (you can still get the same result), it exists for an entirely different reason. (probably for something like the example on the wiki, so the CFrame.new with 12 arguments doesn’t have to be used)