Requirements for 3D Surface Mesh Charts
Published: 2024-05-02 08:23:16

Hey everyone!

Even though the release of <a href="https://www.scichart.com/scichart-wpf-v4-2-build-9172-released/">SciChart WPF v4.2 is barely a day old</a>(!) we are already hard at work on v4.3, where we intend to add some new features for SciChart WPF 3D Charts as well as several 2D Chart features. We want to get some information from you, our userbase, as to what requirements are most important to you. We also need to ask you a few questions about how you would expect correct usage of the 3D Chart.
<h2>Features Planned for v4.3</h2>
We are planning the following features for v4.3 of SciChart WPF and we need your feedback on them. Some questions and explanation are found below.
<ol>
 <li><a href="https://abtsoftware.myjetbrains.com/youtrack/issue/SC3D-218">SC3D-218</a> Support for contours on 3D Surface Mesh charts</li>
 <li><a href="https://abtsoftware.myjetbrains.com/youtrack/issue/SC3D-336">SC3D-336</a> Support for nulls (transparent cells) or override cell colours on 3D Surface Mesh charts</li>
 <li><a href="https://abtsoftware.myjetbrains.com/youtrack/issue/SC3D-338">SC3D-338</a> Support for Waterfall 3D Charts</li>
 <li><a href="https://abtsoftware.myjetbrains.com/youtrack/issue/SC3D-337">SC3D-337</a> Possibly: Support for non-uniform mesh sizes (pending feasibility)</li>
 <li><a href="https://abtsoftware.myjetbrains.com/youtrack/issue/SC3D-326">SC3D-326</a> Possibly: Virtualization of Surface Mesh where size exceeds 4096*4096 (pending feasibilty)</li>
</ol>
<h6><strong>SC3D-218 Contours on Meshes</strong></h6>
We can add contours on surface plots quite easily. Something like this:

<a href="https://www.scichart.com/wp-content/uploads/2016/11/contours-on-surface-mesh-3d-chart.png" rel="prettyphoto"><img class="alignleft wp-image-13664 size-medium" src="https://www.scichart.com/wp-content/uploads/2016/11/contours-on-surface-mesh-3d-chart-300x181.png" alt="contours-on-surface-mesh-3d-chart" width="300" height="181" /></a>
<div style="clear: both"></div>
This is quite easy to do, but we would like to know from you if (a) it is important, (b) you need to be able to configure the contour colours dynamically (per contour, as opposed to one colour for all), (c) whether you have any special requirements for placing contours, or if you would like SciChart to choose and (d) any other comments or suggestions for the API as we build it.

Can you contact us if this feature is important to you? Your input into the requirements would be greatly appreciated.
<h6><strong>SC3D-336 Support for Nulls in Surface Meshes</strong></h6>
A number of users have asked for nulls (transparent cells) in surface meshes. This sounds easy on the surface, but it isn't ... Nevertheless we want to deliver it. We do have some questions though.

Given a surface mesh with 8x8 data values, we end up with something like this (below). The data-points are shown by orange dots. The cells are the squares next to the dots.

<a href="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d.png" rel="prettyphoto"><img class="wp-image-13665 size-medium" src="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d-300x187.png" alt="8x8 Surface Mesh. Data-values are marked as orange points" width="300" height="187" /></a> <figcaption>8x8 Surface Mesh. Data-values are marked as orange points<figcaption>

<div style="clear: both"></div>
As you can see, cell colour is specified by interpolating the four points surrounding a cell. For example, the cell in the top right has a data-value of Y=1 so it should be red, but it isn't, it's yellow, because it has two other edges which are only at Y=0.5.

Now if a user wants to specify a cell as transparent, for example the cell at X=1, Z=6, them you end up with this:

<a href="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d-one-cell-transparent.png" rel="prettyphoto"><img class="wp-image-13667 size-medium" src="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d-one-cell-transparent-300x187.png" alt="When one data-point is null at X=1,Z=6, four cells become transparent." width="300" height="187" /></a> <figcaption>When one data-point is null at X=1,Z=6, four cells become transparent.</figcaption>

<div style="clear: both"></div>
Now this obviously isn't ideal. We thought about how to solve this.

We could allow you to specify a separate texture for the mask to 'null' certain cells, however you will notice that there are 8x8 data-points in the mesh, but only 7x7 cells, so the texture size doesn't actually match the data size. This would allow you to mask out certain cells but it would also give you a clunky API and raise questions of accuracy because of the mismatch of sizes.

Another way is we could change how we are drawing the cell textures. We could offset the texture so that each square in the texture surrounds the data-point, for example:

<a href="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d-cells-compare.png" rel="prettyphoto"><img class="wp-image-13668 size-medium" src="https://www.scichart.com/wp-content/uploads/2016/11/scichart-surface-mesh-8x8-3d-cells-compare-300x187.png" alt="Proposed solution: offsetting cell positions so the centre of the cell is over the data-point" width="300" height="187" /></a> <figcaption>Proposed solution: offsetting cell positions so the centre of the cell is over the data-point</figcaption>

<div style="clear: both"></div>
This would be a nice solution except it raises two problems.
<ol>
 <li>At the edges you get half a cell. Might look wierd.</li>
 <li>The wireframe position (which goes through the data-points) no longer matches the cell edges. When SurfaceMeshRenderableSeries3D.MeshPaletteMode is HeightMapInterpolated, but might look odd when SurfaceMeshRenderableSeries3D.MeshPaletteMode is HeightMapSolidCells.</li>
</ol>
We invite your comment/feedback on this proposed solution and whether it seems correct. It is very important to us that our scientific WPF Charts are both intuitive and accurate.
<h6><strong>SC3D-337 Uneven Spacing of Surface Mesh Data-Points</strong></h6>
Several users have requested that we allow uneven spacing of surface mesh data-points. However, we have a question. Which sort of spacing are you expecting, (A) or (B)?

<a href="https://www.scichart.com/wp-content/uploads/2016/11/uniform-mesh-uniform-xz.png"><img class="size-medium wp-image-13672" src="https://www.scichart.com/wp-content/uploads/2016/11/uniform-mesh-uniform-xz-300x225.png" alt="(A) Uneven spacing of mesh points with each point in a row, column the same as the other points" width="300" height="225" /></a> <figcaption>(A) Uneven spacing of mesh points with each point in a row, column the same as the other points</figcaption>

<a href="https://www.scichart.com/wp-content/uploads/2016/11/uniform-mesh-any-xz.png"><img class="size-medium wp-image-13671" src="https://www.scichart.com/wp-content/uploads/2016/11/uniform-mesh-any-xz-300x225.png" alt="(B) Uneven spacing of mesh points with decoupled placement of points " width="300" height="225" /></a> <figcaption>(B) Uneven spacing of mesh points with decoupled placement of points</figcaption>

<div style="clear: both"></div>
<h6><strong>SC3D-338 Waterfall Charts 3D</strong></h6>
In SciChart WPF v4.3 we intend to add Waterfall Charts 3D. For clarification, we intend to create a hardware-accelerated version of our <a href="https://www.scichart.com/wpf-chart-example-waterfall-chart-demo/">WPF Waterfall Chart Example</a> using SciChart3D:

<a href="https://www.scichart.com/wp-content/uploads/2016/02/scichart-wpf-chart-example-waterfall-chart-demo.png"><img class="size-medium wp-image-12456" src="https://www.scichart.com/wp-content/uploads/2016/02/scichart-wpf-chart-example-waterfall-chart-demo-300x181.png" alt="The SciChart WPF Waterfall Chart is simulated using 2D Charts" width="300" height="181" /></a> <figcaption>The SciChart WPF Waterfall Chart is simulated using 2D Charts</figcaption>

<div style="clear: both"></div>
If we do this, we will likely bind it to our UniformGridDataSeries3D type. This means the data-source will be a 2-dimensional Double[][] array of Y-values only. But what sort of requirements do you need for this chart type? Do you need for example:
<ul>
 <li>To be able to space values in X unevenly or will the spacing be uniform?</li>
 <li>To have different numbers of points on each 'slice' or the same point count on all slices?</li>
 <li>Do you need to scroll left/right as if this were many slices of a timeseries?</li>
</ul>
We're assuming you need realtime performance &amp; being able to scroll in the Z-direction (time) ...
<h6><strong>SC3D-326 Virtualization of Large Surfaces</strong></h6>
The current limit for the size of the 3D Surface Mesh chart is limited by the maximum texture size on your GPU, which in most cases is 4096*4096 and on some GPUs is larger, up to 16k * 16k.

Some customers have contacted us and asked for larger surface sizes, but we would just like to know how many so that we can prioritise this complex piece of work.
<h2><strong>Finally..</strong></h2>
Those are all the questions we have about SciChart 3D Surface Mesh for now. If you are a current customer of SciChart WPF 3D, or you are considering to purchase this software, please get in contact with your feedback. It is extremely valuable that we build software that you actually want to use and meets your requirements!

Best regards,
[SciChart Team]

&nbsp;