1

Helix-3d の例、特にマニピュレータの例を見て、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 に答える