Примените цвет для каждой точки PointCloud, используя HelixToolkit

Я создал облако точек в HelixToolKit. Мне нужно применить цвет для каждой точки. Когда я использую PointVisual3D, нет возможности установить цвет для каждой точки. Он установил цвет для всего облака точек. Когда я использую PointGeometryModel3D (используя SharpDX) в наборе инструментов Helix, я также не могу установить цвет для каждой точки. Есть возможность установить цвет для каждой точки облака точек.

Спасибо...

1 ответ

Решение

Обычно это делается путем установки свойства Colors в объекте PointGeometry3D вашего PointGeometryModel3D. Вы должны построить геометрию самостоятельно.

  1. Создать позиции рендеринга
  2. Создать цвета
  3. Сообщите визуализатору порядок вашей позиции и цвета (список индексов в позициях / цветах)

           //create PointGeometryModel3D object
        PointGeometryModel3D pgm = new PointGeometryModel3D();
    
        //create positions
        pgm.Geometry.Positions = new HelixToolkit.Wpf.SharpDX.Core.Vector3Collection();
    
        pgm.Geometry.Positions.AddRange(
            new SharpDX.Vector3[]
            {   new SharpDX.Vector3(0,1,2), 
                new SharpDX.Vector3(1,2,3), 
                new SharpDX.Vector3(3,2,3), 
            });
    
        //create colors
        pgm.Geometry.Colors = new HelixToolkit.Wpf.SharpDX.Core.Color4Collection();
    
        pgm.Geometry.Colors.AddRange(
            new SharpDX.Color4[]
            {   
                new SharpDX.Color4(1f,0,0,1), 
                new SharpDX.Color4(0,1f,0,1), 
                new SharpDX.Color4(0,0,1f,1) 
            });
    
        //create indices
        pgm.Geometry.Indices = new HelixToolkit.Wpf.SharpDX.Core.IntCollection();
    
        pgm.Geometry.Indices.AddRange(
            new int[]
            {   
                0,
                1,
                2,
            });
    

Пожалуйста, дайте мне знать, если это сработало для вас. Я не мог заставить его работать с LineGeometry3D и различными цветами линий. Где-то должна быть возможность заставить рендерер использовать цветовые вершины вместо (одного) цветового свойства.

Другие вопросы по тегам