internal void cleanManipulator() { //Remove all Tooth manipulators List <Visual3D> childs = tc.Children.ToList(); foreach (var m in childs) { if (m is CombinedManipulator) { tc.Children.Remove(m); } } try { //Remove all Brace manipulators childs = bc.Children.ToList(); foreach (var m in childs) { if (m is BraceVisual3D) { ((BraceVisual3D)m).cleanManipulator(); } } } catch (Exception e) { } //this.parent.Children.Remove(_manipulator); _manipulator = null; }
public void showHideManipulator() { if (showManipulator) { if (_manipulator == null) { Rect3D r = this.Content.Bounds; _manipulator = new CombinedManipulator(); //_manipulator.Position = new Point3D(r.X + (r.SizeX/2),r.Y + (r.SizeY / 2),r.Z + (r.SizeZ/2)); _manipulator.Offset = new Vector3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); _manipulator.Pivot = new Point3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); //_manipulator.Pivot = new Point3D(0, 0, 0); _manipulator.Diameter = Math.Max(r.SizeX, Math.Max(r.SizeY, r.SizeZ)); _manipulator.Length = _manipulator.Diameter * 0.75; _manipulator.Bind(this); } this.parent.Children.Add(_manipulator); showManipulator = false; } else { this.parent.Children.Remove(_manipulator); _manipulator = null; showManipulator = true; } }
/// <summary> /// @Deprecated /// Not used anymore since changes in CONTAINER design. /// <see cref="cleanManipulator"/> /// </summary> internal void clearManipulator() { if (this.parent.Children.Count > 0) { List <Visual3D> childs = this.parent.Children.ToList(); foreach (var m in childs) { if (m is CombinedManipulator) { this.parent.Children.Remove(m); } } try { childs = this.Children.ToList(); foreach (var m in childs) { if (m is BraceVisual3D) { ((BraceVisual3D)m).clearManipulator(); } } } catch (Exception e) { } } //this.parent.Children.Remove(_manipulator); _manipulator = null; }
//==============using Container ========== public void cleanManipulator() { List <Visual3D> childs = bc.Children.ToList(); foreach (var m in childs) { if (m is CombinedManipulator) { bc.Children.Remove(m); } } _manipulator = null; }
public CombinedManipulatorExploration() { var manipulator = new CombinedManipulator(); Sphere = new SphereVisual3D() { Radius = 1 }; manipulator.Bind(Sphere); InitializeComponent(); viewport.Children.Add(Sphere); viewport.Children.Add(manipulator); }
private void AllFramesModeButton_Click(object sender, RoutedEventArgs e) { HelixViewportLeft.Children.Remove(FrameStartEulerManipulator); HelixViewportLeft.Children.Remove(FrameEndEulerManipulator); HelixViewportRight.Children.Remove(FrameStartQuaternionManipulator); HelixViewportRight.Children.Remove(FrameEndQuaternionManipulator); PlayButton.IsEnabled = false; PauseButton.IsEnabled = false; ResetButton.IsEnabled = false; FramesCountBox.IsEnabled = false; AllFramesModeButton.IsEnabled = false; AllFramesModeClearButton.IsEnabled = true; if (FramesCount < 2) { FramesCount = 2; } allFramesEuler = new CombinedManipulator[FramesCount]; allFramesQuaternion = new CombinedManipulator[FramesCount]; CalibrateEulerAngles(); for (int i = 0; i < FramesCount; i++) { var timeFactor = i / (FramesCount - 1.0); CalculateCurrentPosition(timeFactor); CalculateCurrentAngle(timeFactor); CalculateCurrentQuaternion(timeFactor); SetupCurrentConfiguration(); allFramesEuler[i] = new CombinedManipulator() { Transform = new MatrixTransform3D(frameEuler.Transform.Value), CanRotateX = false, CanRotateY = false, CanRotateZ = false }; allFramesQuaternion[i] = new CombinedManipulator() { Transform = new MatrixTransform3D(frameQuaternion.Transform.Value), CanRotateX = false, CanRotateY = false, CanRotateZ = false }; HelixViewportLeft.Children.Add(allFramesEuler[i]); HelixViewportRight.Children.Add(allFramesQuaternion[i]); } }
/// <summary> /// @Deprecated /// Will be removed soon. /// <see cref="cleanManipulator"/> /// </summary> public void clearManipulator() { List <Visual3D> childs = this.parent.Children.ToList(); foreach (var m in childs) { if (m is CombinedManipulator) { this.parent.Children.Remove(m); } } //this.parent.Children.Remove(_manipulator); _manipulator = null; }
/// <summary> /// @Deprecated /// Not used anymore since changes in CONTAINER design. /// <see cref="displayManipulator"/> /// </summary> public void showHideManipulator() { this.brace1.clearManipulator(); if (_manipulator == null) { Rect3D r = this.Content.Bounds; _manipulator = new CombinedManipulator(); //_manipulator.Position = new Point3D(r.X + (r.SizeX/2),r.Y + (r.SizeY / 2),r.Z + (r.SizeZ/2)); _manipulator.Offset = new Vector3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); _manipulator.Pivot = new Point3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); //_manipulator.Pivot = new Point3D(0, 0, 0); //_manipulator.Diameter = Math.Max(r.SizeX, Math.Max(r.SizeY, r.SizeZ)) + 1; //_manipulator.Length = _manipulator.Diameter * 0.75; _manipulator.Bind(this); } this.brace1.Children.Add(_manipulator); }
public void displayManipulator() { this.parent.cleanManipulator(); if (_manipulator == null) { Rect3D r = this.Content.Bounds; _manipulator = new CombinedManipulator(); //_manipulator.Position = new Point3D(r.X + (r.SizeX/2),r.Y + (r.SizeY / 2),r.Z + (r.SizeZ/2)); _manipulator.Offset = new Vector3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); _manipulator.Pivot = new Point3D(r.X + (r.SizeX / 2), r.Y + (r.SizeY / 2), r.Z + (r.SizeZ / 2)); //_manipulator.Pivot = new Point3D(0, 0, 0); _manipulator.Diameter = Math.Max(r.SizeX, Math.Max(r.SizeY, r.SizeZ)) + 1; _manipulator.Length = _manipulator.Diameter * 0.75; _manipulator.Bind(this); Bind(_manipulator); //addTeethRoot(); //test //MeshGeometry3D mesh = GetMesh(); //drawBorderEdges(mesh); } tc.Children.Add(_manipulator); }
/// <summary> /// @Deprecated /// Not used anymore since changes in CONTAINER design. /// <see cref="cleanManipulator"/> /// </summary> internal void clearManipulator() { List <Visual3D> childs = this.brace1.Children.ToList(); foreach (var m in childs) { if (m is CombinedManipulator) { this.brace1.Children.Remove(m); } } childs = this.Children.ToList(); foreach (var m in childs) { if (m is BraceVisual3D) { ((BraceVisual3D)m).clearManipulator(); } } //this.parent.Children.Remove(_manipulator); _manipulator = null; }
private void InitializeScene() { const double maxVal = 8; var arrowX = new ArrowVisual3D(); arrowX.Direction = new Vector3D(1, 0, 0); arrowX.Point1 = new Point3D(0, 0, 0); arrowX.Point2 = new Point3D(maxVal, 0, 0); arrowX.Diameter = 0.1; arrowX.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowX); arrowX = new ArrowVisual3D(); arrowX.Direction = new Vector3D(1, 0, 0); arrowX.Point1 = new Point3D(0, 0, 0); arrowX.Point2 = new Point3D(maxVal, 0, 0); arrowX.Diameter = 0.1; arrowX.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowX); var arrowMX = new ArrowVisual3D(); arrowMX.Direction = new Vector3D(-1, 0, 0); arrowMX.Point1 = new Point3D(0, 0, 0); arrowMX.Point2 = new Point3D(-maxVal, 0, 0); arrowMX.Diameter = 0.1; arrowMX.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMX); arrowMX = new ArrowVisual3D(); arrowMX.Direction = new Vector3D(-1, 0, 0); arrowMX.Point1 = new Point3D(0, 0, 0); arrowMX.Point2 = new Point3D(-maxVal, 0, 0); arrowMX.Diameter = 0.1; arrowMX.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMX); var arrowY = new ArrowVisual3D(); arrowY.Direction = new Vector3D(0, 1, 0); arrowY.Point1 = new Point3D(0, 0, 0); arrowY.Point2 = new Point3D(0, maxVal, 0); arrowY.Diameter = 0.1; arrowY.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowY); arrowY = new ArrowVisual3D(); arrowY.Direction = new Vector3D(0, 1, 0); arrowY.Point1 = new Point3D(0, 0, 0); arrowY.Point2 = new Point3D(0, maxVal, 0); arrowY.Diameter = 0.1; arrowY.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowY); var arrowMY = new ArrowVisual3D(); arrowMY.Direction = new Vector3D(0, -1, 0); arrowMY.Point1 = new Point3D(0, 0, 0); arrowMY.Point2 = new Point3D(0, -maxVal, 0); arrowMY.Diameter = 0.1; arrowMY.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMY); arrowMY = new ArrowVisual3D(); arrowMY.Direction = new Vector3D(0, -1, 0); arrowMY.Point1 = new Point3D(0, 0, 0); arrowMY.Point2 = new Point3D(0, -maxVal, 0); arrowMY.Diameter = 0.1; arrowMY.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMY); var arrowZ = new ArrowVisual3D(); arrowZ.Direction = new Vector3D(0, 0, 1); arrowZ.Point1 = new Point3D(0, 0, 0); arrowZ.Point2 = new Point3D(0, 0, maxVal); arrowZ.Diameter = 0.1; arrowZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowZ); arrowZ = new ArrowVisual3D(); arrowZ.Direction = new Vector3D(0, 0, 1); arrowZ.Point1 = new Point3D(0, 0, 0); arrowZ.Point2 = new Point3D(0, 0, maxVal); arrowZ.Diameter = 0.1; arrowZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowZ); var arrowMZ = new ArrowVisual3D(); arrowMZ.Direction = new Vector3D(0, 0, -1); arrowMZ.Point1 = new Point3D(0, 0, 0); arrowMZ.Point2 = new Point3D(0, 0, -maxVal); arrowMZ.Diameter = 0.1; arrowMZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMZ); arrowMZ = new ArrowVisual3D(); arrowMZ.Direction = new Vector3D(0, 0, -1); arrowMZ.Point1 = new Point3D(0, 0, 0); arrowMZ.Point2 = new Point3D(0, 0, -maxVal); arrowMZ.Diameter = 0.1; arrowMZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMZ); var xArrowText = new TextVisual3D(); xArrowText.Text = "X"; xArrowText.Position = new Point3D(maxVal - 0.5, 0, 0.5); xArrowText.Height = 0.5; xArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(xArrowText); xArrowText = new TextVisual3D(); xArrowText.Text = "X"; xArrowText.Position = new Point3D(maxVal - 0.5, 0, 0.5); xArrowText.Height = 0.5; xArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(xArrowText); var yArrowText = new TextVisual3D(); yArrowText.Text = "Y"; yArrowText.Position = new Point3D(0, maxVal - 0.5, 0.5); yArrowText.Height = 0.5; yArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(yArrowText); yArrowText = new TextVisual3D(); yArrowText.Text = "Y"; yArrowText.Position = new Point3D(0, maxVal - 0.5, 0.5); yArrowText.Height = 0.5; yArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(yArrowText); var zArrowText = new TextVisual3D(); zArrowText.Text = "Z"; zArrowText.Position = new Point3D(0.5, 0, maxVal - 0.5); zArrowText.Height = 0.5; zArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(zArrowText); zArrowText = new TextVisual3D(); zArrowText.Text = "Z"; zArrowText.Position = new Point3D(0.5, 0, maxVal - 0.5); zArrowText.Height = 0.5; zArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(zArrowText); var leftText = new TextVisual3D(); leftText.Text = "Euler Angles Interpolation"; leftText.Position = new Point3D(0, 0, maxVal + 0.5); leftText.Height = 1; leftText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(leftText); var rightText = new TextVisual3D(); rightText.Text = "Quaternion Interpolation"; rightText.Position = new Point3D(0, 0, maxVal + 0.5); rightText.Height = 1; rightText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(rightText); SetupStartConfiguration(); SetupEndConfiguration(); frameEuler = new CombinedManipulator() { CanRotateX = false, CanRotateY = false, CanRotateZ = false }; frameQuaternion = new CombinedManipulator() { CanRotateX = false, CanRotateY = false, CanRotateZ = false }; }
private void OnAllFramesDisplayed(object sender, RoutedEventArgs e) { //HelixViewportLeft.Children.Remove(FrameStartEulerManipulator); //HelixViewportLeft.Children.Remove(FrameEndEulerManipulator); HelixViewportRight.Children.Remove(FrameStartQuaternionManipulator); HelixViewportRight.Children.Remove(FrameEndQuaternionManipulator); PlayButton.IsEnabled = false; PauseButton.IsEnabled = false; ResetButton.IsEnabled = false; FramesCountBox.IsEnabled = false; linearInterpolator.SetupInterpolator( startAngleR, startAngleP, startAngleY, endAngleR, endAngleP, endAngleY, startPositionX, startPositionY, startPositionZ, endPositionX, endPositionY, endPositionZ, startQuaternion, endQuaternion); sphericalLinearInterpolator.SetupInterpolator( startQuaternion, endQuaternion ); if (FramesCount < 2) { FramesCount = 2; } allFramesEuler = new CombinedManipulator[FramesCount]; allFramesQuaternion = new CombinedManipulator[FramesCount]; for (int i = 0; i < FramesCount; i++) { var timeFactor = i / (FramesCount - 1.0); linearInterpolator.CalculateCurrentPosition(ref currentPosition, timeFactor); linearInterpolator.CalculateCurrentAngle(ref currentRotation, timeFactor); if (lerpActivated) { linearInterpolator.CalculateCurrentQuaternion(ref currentQuaternion, timeFactor); } else { sphericalLinearInterpolator.CalculateCurrentQuaternion(ref currentQuaternion, timeFactor); } SetupCurrentConfiguration(); allFramesEuler[i] = new CombinedManipulator() { Transform = new MatrixTransform3D(frameEuler.Transform.Value), CanRotateX = false, CanRotateY = false, CanRotateZ = false }; allFramesQuaternion[i] = new CombinedManipulator() { Transform = new MatrixTransform3D(frameQuaternion.Transform.Value), CanRotateX = false, CanRotateY = false, CanRotateZ = false }; HelixViewportLeft.Children.Add(allFramesEuler[i]); HelixViewportRight.Children.Add(allFramesQuaternion[i]); } }
private void InitializeScene() { linearInterpolator = new LinearInterpolator(); sphericalLinearInterpolator = new SphericalLinearInterpolator(); realTimeInterpolator = new RealTimeInterpolator(); const double maxVal = 8; var arrowX = new ArrowVisual3D(); arrowX.Direction = new Vector3D(1, 0, 0); arrowX.Point1 = new Point3D(0, 0, 0); arrowX.Point2 = new Point3D(maxVal, 0, 0); arrowX.Diameter = 0.1; arrowX.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowX); arrowX = new ArrowVisual3D(); arrowX.Direction = new Vector3D(1, 0, 0); arrowX.Point1 = new Point3D(0, 0, 0); arrowX.Point2 = new Point3D(maxVal, 0, 0); arrowX.Diameter = 0.1; arrowX.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowX); var arrowMX = new ArrowVisual3D(); arrowMX.Direction = new Vector3D(-1, 0, 0); arrowMX.Point1 = new Point3D(0, 0, 0); arrowMX.Point2 = new Point3D(-maxVal, 0, 0); arrowMX.Diameter = 0.1; arrowMX.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMX); arrowMX = new ArrowVisual3D(); arrowMX.Direction = new Vector3D(-1, 0, 0); arrowMX.Point1 = new Point3D(0, 0, 0); arrowMX.Point2 = new Point3D(-maxVal, 0, 0); arrowMX.Diameter = 0.1; arrowMX.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMX); var arrowY = new ArrowVisual3D(); arrowY.Direction = new Vector3D(0, 0, 1); arrowY.Point1 = new Point3D(0, 0, 0); arrowY.Point2 = new Point3D(0, 0, maxVal); arrowY.Diameter = 0.1; arrowY.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowY); arrowY = new ArrowVisual3D(); arrowY.Direction = new Vector3D(0, 0, 1); arrowY.Point1 = new Point3D(0, 0, 0); arrowY.Point2 = new Point3D(0, 0, maxVal); arrowY.Diameter = 0.1; arrowY.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowY); var arrowMY = new ArrowVisual3D(); arrowMY.Direction = new Vector3D(0, 0, -1); arrowMY.Point1 = new Point3D(0, 0, 0); arrowMY.Point2 = new Point3D(0, 0, -maxVal); arrowMY.Diameter = 0.1; arrowMY.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMY); arrowMY = new ArrowVisual3D(); arrowMY.Direction = new Vector3D(0, 0, -1); arrowMY.Point1 = new Point3D(0, 0, 0); arrowMY.Point2 = new Point3D(0, 0, -maxVal); arrowMY.Diameter = 0.1; arrowMY.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMY); var arrowZ = new ArrowVisual3D(); arrowZ.Direction = new Vector3D(0, 1, 0); arrowZ.Point1 = new Point3D(0, 0, 0); arrowZ.Point2 = new Point3D(0, maxVal, 0); arrowZ.Diameter = 0.1; arrowZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowZ); arrowZ = new ArrowVisual3D(); arrowZ.Direction = new Vector3D(0, 1, 0); arrowZ.Point1 = new Point3D(0, 0, 0); arrowZ.Point2 = new Point3D(0, maxVal, 0); arrowZ.Diameter = 0.1; arrowZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowZ); var arrowMZ = new ArrowVisual3D(); arrowMZ.Direction = new Vector3D(0, -1, 0); arrowMZ.Point1 = new Point3D(0, 0, 0); arrowMZ.Point2 = new Point3D(0, -maxVal, 0); arrowMZ.Diameter = 0.1; arrowMZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportLeft.Children.Add(arrowMZ); arrowMZ = new ArrowVisual3D(); arrowMZ.Direction = new Vector3D(0, 0, -1); arrowMZ.Point1 = new Point3D(0, 0, 0); arrowMZ.Point2 = new Point3D(0, -maxVal, 0); arrowMZ.Diameter = 0.1; arrowMZ.Fill = System.Windows.Media.Brushes.Black; HelixViewportRight.Children.Add(arrowMZ); var xArrowText = new TextVisual3D(); xArrowText.Text = "X"; xArrowText.Position = new Point3D(maxVal - 0.5, 0, 0.5); xArrowText.Height = 0.5; xArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(xArrowText); xArrowText = new TextVisual3D(); xArrowText.Text = "X"; xArrowText.Position = new Point3D(maxVal - 0.5, 0, 0.5); xArrowText.Height = 0.5; xArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(xArrowText); var yArrowText = new TextVisual3D(); yArrowText.Text = "Z"; yArrowText.Position = new Point3D(0, 0.5, maxVal - 0.5); yArrowText.Height = 0.5; yArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(yArrowText); yArrowText = new TextVisual3D(); yArrowText.Text = "Z"; yArrowText.Position = new Point3D(0, 0.5, maxVal - 0.5); yArrowText.Height = 0.5; yArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(yArrowText); var zArrowText = new TextVisual3D(); zArrowText.Text = "Y"; zArrowText.Position = new Point3D(0.5, maxVal - 0.5, 0); zArrowText.Height = 0.5; zArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(zArrowText); zArrowText = new TextVisual3D(); zArrowText.Text = "Y"; zArrowText.Position = new Point3D(0.5, maxVal - 0.5, 0); zArrowText.Height = 0.5; zArrowText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(zArrowText); var leftText = new TextVisual3D(); leftText.Text = "Internal angles interpolation"; leftText.Position = new Point3D(0, 0, maxVal + 0.5); leftText.Height = 1; leftText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportLeft.Children.Add(leftText); var rightText = new TextVisual3D(); rightText.Text = "Inverse chain"; rightText.Position = new Point3D(0, 0, maxVal + 0.5); rightText.Height = 1; rightText.FontWeight = System.Windows.FontWeights.Bold; HelixViewportRight.Children.Add(rightText); var floor = new RectangleVisual3D { Fill = new SolidColorBrush(Color.FromArgb(30, 0, 0, 0)), Normal = new Vector3D(0, 0, 1), Origin = new Point3D(0, 0, 0) }; floor.Width = floor.Length = 10; floor.LengthDirection = new Vector3D(1, 0, 0); HelixViewportLeft.Children.Add(floor); var wall = new RectangleVisual3D { Fill = new SolidColorBrush(Color.FromArgb(30, 0, 0, 0)), Normal = new Vector3D(0, 0, 1), Origin = new Point3D(0, 0, 0) }; wall.Width = wall.Length = 10; wall.LengthDirection = new Vector3D(1, 0, 0); HelixViewportRight.Children.Add(wall); frameEuler = new CombinedManipulator() { CanRotateX = false, CanRotateY = false, CanRotateZ = false }; frameQuaternion = new CombinedManipulator() { CanRotateX = false, CanRotateY = false, CanRotateZ = false }; }