private void ShowBoundingBoxes()
        {
            _octTreeLinesModelVisual3D.Children.Clear();

            var colors = new System.Windows.Media.Color[] { Colors.Red, Colors.Green, Colors.Blue, Colors.Black };

            bool showActualBoundingBox = ActualBoundingBoxCheckBox.IsChecked ?? false;

            int startNodeLevel = 2;

            for (int i = startNodeLevel; i <= MaxNodeLevels; i++)
            {
                var boundingBoxs = _octTree.CollectBoundingBoxesInLevel(i, showActualBoundingBox);

                foreach (var boundingBox in boundingBoxs)
                {
                    var wireBoxVisual3D = new Ab3d.Visuals.WireBoxVisual3D()
                    {
                        CenterPosition = boundingBox.ToRect3D().GetCenterPosition(),
                        Size           = boundingBox.ToRect3D().Size,
                        LineColor      = colors[(i - startNodeLevel) % (colors.Length)],
                        LineThickness  = 2
                    };

                    _octTreeLinesModelVisual3D.Children.Add(wireBoxVisual3D);
                }
            }
        }
Ejemplo n.º 2
0
        public ObjectSelectionSample()
        {
            InitializeComponent();

            _standardMaterial = new DiffuseMaterial(Brushes.DeepSkyBlue);
            _standardMaterial.Freeze();

            _selectedMaterial = new DiffuseMaterial(Brushes.Yellow);
            _selectedMaterial.Freeze();

            // _wireBoxVisual3D will be used to show box with mouse over
            _wireBoxVisual3D = new Ab3d.Visuals.WireBoxVisual3D()
            {
                LineColor     = Colors.Yellow,
                LineThickness = 2
            };

            CreateSceneObjects();


            this.Loaded += delegate(object sender, RoutedEventArgs args)
            {
                // Start with selecting 8th box
                SelectBox(8);
            };
        }