getTransformationMatrix3D method
The 3D transformation matrix relative to the given targetSpace
.
Note: You can get the transformation matrix either with the getTransformationMatrix or the getTransformationMatrix3D method. You only need to use a 3D transformation matrix if you are working with 3D display objects.
Implementation
Matrix3D getTransformationMatrix3D(DisplayObject targetSpace) {
if (targetSpace == this) return Matrix3D.fromIdentity();
final ancestor = _getCommonAncestor(targetSpace);
final resultMatrix = Matrix3D.fromIdentity();
for (DisplayObject? obj = this; obj != ancestor; obj = obj.parent) {
if (obj is DisplayObjectContainer3D) {
resultMatrix.concat(obj.projectionMatrix3D);
}
resultMatrix.concat2D(obj!.transformationMatrix);
}
if (identical(targetSpace, ancestor)) return resultMatrix;
final targetMatrix = Matrix3D.fromIdentity();
for (DisplayObject? obj = targetSpace; obj != ancestor; obj = obj.parent) {
if (obj is DisplayObjectContainer3D) {
targetMatrix.concat(obj.projectionMatrix3D);
}
targetMatrix.concat2D(obj!.transformationMatrix);
}
targetMatrix.invert();
resultMatrix.concat(targetMatrix);
return resultMatrix;
}