Search code examples
scichart

SciChart - ColumnRenderableSeries3D column diameter


I am trying to implement a chart with a ColumnRenderableSeries3D series, but with a small amount of data points (25x25) the columns are nearly invisible. At higher numbers of data points (100x100) with a wider range of values this problem becomes even worse and a Moiré pattern appears. What can be done to significantly increase the column's diameter, so they are easily seen and so the Moiré pattern disappears?

If it is relevant this is being rendered on a VM with a VMware ESXi 6.5 SVGA adapter on Windows Server 2016, over a RemoteDesktop connection. Surprisingly even though 3D support isnt enabled for the VM, SciChart.Examples.Demo.exe says DirectX hardware acceleration is enabled. The version of SciChart is 5.1.0.11405 and SharpDX is 4.0.1.

SciChart3DSurface SciChartSurface3d = new SciChart3DSurface();
XyzDataSeries3D<Double, Double, DateTime> MyXyzDataSeries = new XyzDataSeries3D<Double, Double, DateTime>();

SciChartSurface3d.XAxis = new NumericAxis3D();
SciChartSurface3d.YAxis = new NumericAxis3D();
SciChartSurface3d.ZAxis = new DateTimeAxis3D();
SciChartSurface3d.Camera = new Camera3D() { ZoomToFitOnAttach = true };
SciChartSurface3d.WorldDimensions = new Vector3(200, 100, 200);
SciChartSurface3d.RenderableSeries.Add(new ColumnRenderableSeries3D() { DataSeries= MyXyzDataSeries, ColumnShape = typeof(CubePointMarker3D),  DataPointWidthX = 1.0, Opacity = 1.0 });
SciChartSurface3d.BorderThickness = new Thickness(0);`
SomeMethodToLoadTheDataSeries();

25x25 25x25 100x100 100x100

Edit

Changing DataPointWidthX to DataPointWidth doesn't help. With a width of 1.0: enter image description here


Solution

  • There are two modes of the column width definition:

    • First and the default is called MaxNonOverlapping. In this mode, the maximum possible width is calculated where any column has enough space not to overlap others.
    • Second is called FixedSize. In this mode, the width of a column is defined by a value from the ColumnRenderableSeries3D.CoulmnFixedSize property.

    Definition of the mode is performed over the ColumnRenderableSeries3D.ColumnSpacingMode property. Below is the example how to setup fixed size column chart:

    var renderableSeries3D = new ColumnRenderableSeries3D();
    renderableSeries3D.ColumnSpacingMode = ColumnSpacingMode.FixedSize;
    renderableSeries3D.CoulmnFixedSize = 25;
    

    Note, a value of the CoulmnFixedSize property represents coordinates space. Thus it is related to the SciChart3DSurface.WorldDimensions. You can find more information about the coordinates space here.