WPF 3D - 应用转换,更改基础对象值

And*_*rke 1 c# 3d wpf

我有一个方法可以转换多个柱面.如果我再次运行该方法,它会将气缸从原始位置而不是新位置变换.

是否有"应用"转换,以便它更改柱面的基础值,以便我可以从新值重新转换?

有人可以帮忙吗?

干杯,

安迪

    void TransformCylinders(double angle)
    {

        var rotateTransform3D = new RotateTransform3D { CenterX = 0, CenterY = 0, CenterZ = 0 };
        var axisAngleRotation3D = new AxisAngleRotation3D { Axis = new Vector3D(1, 1, 1), Angle = angle };
        rotateTransform3D.Rotation = axisAngleRotation3D;
        var myTransform3DGroup = new Transform3DGroup();
        myTransform3DGroup.Children.Add(rotateTransform3D);
        _cylinders.ForEach(x => x.Transform = myTransform3DGroup);

    }
Run Code Online (Sandbox Code Playgroud)

Cha*_*lie 5

Transform3DGroup每次调用方法时都会重新编译:

var myTransform3DGroup = new Transform3DGroup();
Run Code Online (Sandbox Code Playgroud)

变换本质上是一堆矩阵,它们相乘.每次创建新组时,您都要清除该堆栈.您需要将连续变换添加到现有组而不是重新创建它.