PointCloud в цвете SharpDX

Я использую SharpDX для визуализации облака точек, используя следующий код:

PointsModel = new PointGeometryModel3D();
PointsModel.Geometry = new PointGeometry3D();

//create positions
PointsModel.Geometry.Positions = new Vector3Collection();
PointsModel.Geometry.Positions.AddRange(
            new SharpDX.Vector3[]
            { 
              new SharpDX.Vector3(0,0,0),
              new SharpDX.Vector3(10,0,0),
              new SharpDX.Vector3(0,10,0),
              new SharpDX.Vector3(0,0,10),
            });

//create colors
PointsModel.Geometry.Colors = new Color4Collection();
PointsModel.Geometry.Colors.AddRange(
            new SharpDX.Color4[]
            {
              new SharpDX.Color4(1f,0,0,1),
              new SharpDX.Color4(1f,0,0,1),
              new SharpDX.Color4(1f,0,0,1),
              new SharpDX.Color4(1f,0,0,1)
            });

//create indices
PointsModel.Geometry.Indices = new IntCollection();
PointsModel.Geometry.Indices.AddRange(
            new int[]
            {
              0,
              1,
              2,
              3
            });

 PointsModel.Figure = PointFigure.Rect;
 PointsModel.Size=new Size(10, 10);

И в представлении:

<hx:Viewport3DX EffectsManager="{Binding EffectsManager1}" 
                Camera="{Binding Camera1}" BackgroundColor="#FF88AACD" 
                ZoomExtentsWhenLoaded="True">
    <hx:AmbientLight3D Color="#030303" />
    <hx:DirectionalLight3D Direction="{Binding Camera.LookDirection}" Color="White" />
    <hx:PointGeometryModel3D  Geometry="{Binding PointsModel.Geometry}" Size="{Binding PointsModel.Size}" Figure="{Binding PointsModel.Figure}">          
    </hx:PointGeometryModel3D>
  </hx:Viewport3DX>

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


person tabina    schedule 20.11.2020    source источник


Ответы (1)


Я решил это, установив цвет в PointGeometryModel3D на статическое значение:

<hx:Viewport3DX EffectsManager="{Binding EffectsManager1}" 
            Camera="{Binding Camera1}" BackgroundColor="#FF88AACD" 
            ZoomExtentsWhenLoaded="True">
  <hx:AmbientLight3D Color="#030303" />
  <hx:DirectionalLight3D Direction="{Binding Camera.LookDirection}" Color="White" />
  <hx:PointGeometryModel3D  Geometry="{Binding PointsModel.Geometry}" 
      Size="{Binding PointsModel.Size}" 
      Figure="{Binding PointsModel.Figure}" 
      Color="{x:Static Colors.White}">          
  </hx:PointGeometryModel3D>
</hx:Viewport3DX>

Но я не понимаю, зачем это нужно.

Облако точек теперь отображается правильно, включая отдельные цвета для каждой точки.

person tabina    schedule 30.11.2020