**Quote:**Mesh face size was 1 for both images. I probably don't understand very well, what relationship is between those parameters: InterpolationSensitivity, MeshFaceSize, PointMergeThreshold.

PointMergeThreshold is used to filter out data points - there will be just one vertex created in the model for points within the threshold distance.

MeshFaceSize is the size of one grid square in the surface mesh (in same units as ModelWidth/Height/Depth properties). The chart expects provided data to be sampled from a Y=F(X,Z) function, ideally uniformly distributed with one point per mesh face, so the end result would be the 3D surface plot of that F function.

InterpolationSensitivity is used to interpolate Y values from data points within that distance around a mesh square - e.g. if your data points are more sparse and some faces would not have associated data point, they will get it from data points in specified radius with some distance weighting.

It seems your data points don't come from a function (there are many repeating Y values per X,Z pairs), and they don't cover the whole X/Z plane in the model range. So, that fools the interpolation code to add those bends due to missing points on other side of mesh to counter-balance the added values. Also our developers aren't sure how the repeating values per X,Z point affect the math, they'll try to work that out. Otherwise if missing values are uniformly enough distributed, you should be able to get the graphics smoothed by setting InterpolationSensitivity just large enough to cover the gaps.

If you are trying to show arbitrary 3d-scanned models, the surface chart might not be a good fit so show them, being designed for showing function plots. Some years ago we added CustomModel* properties for a customer that needed to use the chart as a model viewer of 3D meshes - that would require you to provide your own triangulation for the mesh points though. Let me know if you need that and we'll send you some sample code.