1

我查看了 Helix-3d 示例,特别是 Manipulator Example,并尝试在 C# 中重现该功能。

我有一个带有 HelixViewport3D 的窗口和以下代码:

 public partial class TransformWindow : Window
{
    public TransformWindow()
    {
        InitializeComponent();

        BoxVisual3D box = new BoxVisual3D();
        Point3D position = new Point3D(3,4,5);
        box.Center = position;
        Viewport3D.Children.Add(box);
        TranslateManipulator manipulator1 = new TranslateManipulator();
        manipulator1.Bind(box);
        manipulator1.Color = Colors.Red;
        manipulator1.Direction = new Vector3D(1,0,0);
        manipulator1.Diameter = 0.1;
       //manipulator1.Position = position; 
        Viewport3D.Children.Add(manipulator1);
    }
}

此代码添加了可用于移动框的箭头,但操纵器箭头位于视口的中心。我希望它从盒子里伸出来。如果我最初使用位置来定位它,那么初始位置是正确的,但是当我移动对象时操纵器箭头会保持原位。如何使机械手保持正确定位(始终从物体突出)?

4

1 回答 1

1

你可以通过改变这个来做到这一点:

Point3D position = new Point3D(3,4,5);

对此:

Point3D.Transform = new TranslateTransform3D( new Vector3(3,4,5) );

在第一种情况下,您更改了网格位置而不是变换位置这就是您的变换控件绑定到原点的原因

于 2015-07-23T10:15:17.863 回答