helix3dtoolkit (sharpdx WPF): измененный материал LineGeometryModel3D требует применения движения камеры

Я программирую 3D-просмотрщик с помощью Helixtoolkit sharpdx (WPF). По сути, я добавляю на сцену форму stl. На этой фигуре я добавляю контуры из LineGeomtryModel3D. Во время выполнения, когда я выбираю модель из списка, я применяю к контуру новый цвет:

    private void UpdateColorModels()
    {
        //MAJ des couleurs en fonction du status
        try
        {
        //Surcharge du MainColor si selectionné
            if (IsSelected)
            {
                MainColor = System.Windows.Media.Colors.Yellow;
                Thickness = 2;
                DepthBias = -10000000;
            }

            //Application de la couleur aux éléments visuels
            SharpDX.Color newMainColor = new Color(MainColor.R, MainColor.G, MainColor.B, MainColor.A);

            if (m_Outlines != null)//m_Outlines is List<LineGeometry3DModel>
                foreach (var item in m_Outlines)
                {
                    item.Color = newMainColor;
                    item.DepthBias = DepthBias;
                    item.Thickness = Thickness;
                }
        }
        catch (SharpDXException sdxex)
        {
            Console.WriteLine("SharpDXException:" + sdxex.Message);
        }
    }

Выше вы можете увидеть упрощенный метод. Иногда это работает, а иногда не работает. Я имею в виду, что цвет иногда хорошо обновляется в средстве просмотра, но иногда мне приходится перемещать камеру, чтобы обновить цвет... Есть ли способ принудительно обновить, не перемещая камеру?


person Benjamin    schedule 16.10.2019    source источник


Ответы (1)


Вы можете попробовать использовать метод invalidaterenderer. Сколько у вас линейки моделей?

person Lance H    schedule 16.10.2019