HelixToolkit выберите геометрию - PullRequest
1 голос
/ 12 октября 2019

У меня есть простая сцена, и я хотел бы, чтобы цвет элемента менялся, когда пользователь нажимает на элемент.

Я испробовал несколько вариантов, включая этот пост . Я также посмотрел на один из примеров , который делает именно то, что я хочу. Но по какой-то причине я не могу заставить ни одно решение работать.

<Window.DataContext>
        <local:MainViewModel />
</Window.DataContext>
<Grid>
        <h:HelixViewport3D x:Name="view1" ShowFrameRate="True" ZoomExtentsWhenLoaded="True" 
                          ZoomAroundMouseDownPoint="True" RotateAroundMouseDownPoint="True"  >
            <h:SunLight/>
            <ModelVisual3D x:Name="ViewPort" Content="{Binding Model}" />

        </h:HelixViewport3D>
</Grid>
 public class MainViewModel: UIElement3D
    {
        public Model3D Model { get; set; }

        public MainViewModel()
        {
            MeshBuilder mb = new MeshBuilder();
            mb.AddSphere(new Point3D(0, 0, 0), 20, 20, 20);
            MeshGeometry3D msh = mb.ToMesh(true);

            GeometryModel3D geo = new GeometryModel3D(msh, Materials.Blue);
            Model3DGroup model3DGroup = new Model3DGroup();
            model3DGroup.Children.Add(geo);
            this.Model = model3DGroup;
        }

        protected override void OnMouseDown(MouseButtonEventArgs e)
        {
            base.OnMouseDown(e);
            if(e.LeftButton == MouseButtonState.Pressed)
            {
                GeometryModel3D geo = Visual3DModel as GeometryModel3D;
                geo.Material = geo.Material == Materials.Blue ? Materials.Red : Materials.Blue;
                e.Handled = true;
            }
        }
    }

Оба варианта, которые я пытался создать, но щелчок мыши не влияют на элемент. Любая помощь будет принята с благодарностью.

...