private PartVisuals CreatePartVisuals()
        {
            Model3DGroup geometries = new Model3DGroup();

            foreach (PartBase part in _parts)
            {
                geometries.Children.Add(part.Model);
            }

            geometries.Transform = new TranslateTransform3D(_centerOffset);

            ModelVisual3D model = new ModelVisual3D();
            model.Content = geometries;

            PartVisuals retVal = new PartVisuals();
            retVal.Visual = model;

            return retVal;
        }
        private void ShowHideParts_Background()
        {
            if (chkNeuralShowParts.IsChecked.Value)
            {
                // Add them
                if (_partVisuals == null)
                {
                    _partVisuals = CreatePartVisuals();
                }

                if (!_viewportBack.Children.Contains(_partVisuals.Visual))
                {
                    _viewportBack.Children.Add(_partVisuals.Visual);
                }
            }
            else
            {
                // Remove them
                if (_partVisuals != null && _viewportBack.Children.Contains(_partVisuals.Visual))
                {
                    _viewportBack.Children.Remove(_partVisuals.Visual);
                }
            }
        }