CombinedManipulator question

Mar 11, 2012 at 5:39 PM
Edited Mar 11, 2012 at 5:40 PM

First off...Kick ass toolkit btw!  The examples gave me a good starting point.

The first thing I’m attempting to do is combine the ManipulatorDemo with the ModelViewer example.

I’ve added the following code to the ModelViewer to allow the model to be repositioned and rotated.  The visual rotate manipulators appear to grow in size but the translate manipulators do not.   Am I missing something here?

 

 private void ModelLoaded(object sender, RoutedEventArgs e)
{
view1.ZoomExtents();

CombinedManipulator manipulator = new CombinedManipulator();
Rect3D rect = Visual3DHelper.FindBounds(view1.Children);
manipulator.Diameter = rect.Y;
root1.Children.Add(manipulator);
manipulator.Bind(root1);
}
Coordinator
Mar 11, 2012 at 7:56 PM
Edited Mar 11, 2012 at 7:57 PM

To me it seems like the manipulation transform is applied twice to the manipulator. Adding the manipulator one level higher in the Visual3D tree should avoid it:

view1.Children.Add(manipulator);

Sorry the "ModelViewer" example is not in good shape, I am planning to improve it, hopefully this year :)

Aug 1, 2013 at 8:02 AM
I would like to know if you solved this problem
Aug 5, 2014 at 1:32 PM
Edited Aug 7, 2014 at 2:43 PM
I have the same problem. The translate manipulator do not size.
The problem is the emty methode OnDiameterChanged() at line 404.

https://searchcode.com/codesearch/view/10564768/

Here my suggestion:
     /// <summary>
    /// The on diameter changed.
    /// </summary>
    protected virtual void OnDiameterChanged()
    {
        double radius = this.Diameter / 2;
        double newArrowLength = radius + radius * 0.4; 
        this.TranslateXManipulator.Length = newArrowLength;
        this.TranslateYManipulator.Length = newArrowLength;
        this.TranslateZManipulator.Length = newArrowLength;

        double newArrowDiameter = newArrowLength * 0.075;
        this.TranslateXManipulator.Diameter = newArrowDiameter;
        this.TranslateYManipulator.Diameter = newArrowDiameter;
        this.TranslateZManipulator.Diameter = newArrowDiameter;

        double newInnerDiameter = this.Diameter - this.Diameter * 0.12;
        this.RotateXManipulator.InnerDiameter = newInnerDiameter;
        this.RotateYManipulator.InnerDiameter = newInnerDiameter;
        this.RotateZManipulator.InnerDiameter = newInnerDiameter;
    }