演示示例: Simple 3D surface grid; Surface grid, flat projections; Surface grid, value coloring; Surface grids, water and ground
SurfaceGridSeries3D 可以将数据可视化为一个3D面。在SurfaceGridSeries3D中, 节点在X维度上是等距的,在Z维度上也是如此。
图:采用默认样式的面网格系列。高度数据用正弦公式表示。图例框显示高度着色间隔
图: 面网格节点。SizeX = 5, SizeZ = 7.
节点距离自动计算如下:
• 用RangeMinX 和RangeMaxX 属性来设置X轴值域,根据指定的X轴对最小值和最大值排序。
• 用 RangeMinZ 和RangeMaxZ 属性来设置Z轴值域,根据指定的Z轴对最小值和最大值排序。
• 设置SizeX 和SizeZ 属性,将网格的尺寸大小设置为以列和行表示。
• 为所有节点设置 Y值:
采用数据数组索引的方法
for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)
{
for (int nodeIndexZ = 0; nodeIndexZ < rowCount; nodeIndexZ ++)
{
Y =//一些高度值
gridSeries.Data[iNodeX, iNodeZ].Y = Y;
}
}
gridSeries.InvalidateData(); // 准备好新值后通知刷新
采用SetDataValue的另一种方法
for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)
{
for (int nodeIndexZ = 0; nodeIndexZ < rowCount; nodeIndexZ ++)
{
Y =//一些高度值
gridSeries.SetDataValue(nodeIndexX, nodeIndexX,
0, // X值与网格无关
Y,
0,// Z值与网格无关
Color.Green); //本例中没有使用源点颜色,所以这里用什么颜色都行
}
}
gridSeries.InvalidateData(); // 准备好新值后通知刷新
根据位图文件创建曲面
演示示例: Large surface
用SetHeightDataFromBitmap方法可根据位图图像来创建曲面。面可获得位图尺寸(若没有使用反锯齿或重新采样)。对于每个位图图像像素,对红色、绿色和蓝色值求和。和越大,该节点的高度数据值就越高。黑色与暗色的值较低,而明亮和白色的值较高。
图:源位图与计算所得的曲面高度数据。暗色值较低,而亮色值较高。
用Fill 属性来选择曲面的填充样式。可以使用以下选项:
• None: 使用此选项,不进行填充。这一选项对线框网眼很有用。
• FromSurfacePoints: 使用数据属性节点的颜色。
• Toned: 应用ToneColor
• PalettedByY: 根据调色板按Y值着色,参阅第Error! Reference source not found.章节
• PalettedByValue: 根据调色板按SurfacePoint’s Value 字段着色,参阅第Error! Reference source not found.章节
• Bitmap: 将位图图像拉伸来覆盖整个曲面。在BitmapFill属性中对位图图像进行设置。属性具有子属性可用于进行垂直和水平镜像。
左图: FromSurfacePoints 填充;每个数据点的颜色。 右图:Toned 填充.
左图:PalettedByY
右图: Bitmap 填充
图:PalettedByValue.
ContourPalette 属性可以为高度着色定义颜色阶。ContourPalette 可用于:
• Fill (参阅第 Error! Reference source not found.章节)
• Wireframe mesh (参阅第 Error! Reference source not found.章节)
• Contour lines (参阅第 Error! Reference source not found.章节)
为轮廓调色板可以定义无限数量的色阶。每一阶都有一个高度值以及一个对应的颜色。
图:曲面网格系列轮廓调色板样式(Type)设置为渐变(Gradient)。
调色板包括MinValue、Type 和Steps 属性。Type属性包括两个选择: Uniform 和Gradient。上图的轮廓调色板显示了如下信息:
• MinValue: 0
• Type: Gradient (渐变)
• Steps:
• [0]阶: MaxValue(最大值): 25, Color(颜色): Red红色
• [1] 阶: MaxValue(最大值): 50, Color(颜色): Blue蓝色
• [2] 阶: MaxValue(最大值): 75, Color(颜色): Lime绿黄色
• [3] 阶: MaxValue(最大值): 100, Color(颜色): White白色
使用第一阶的颜色给第一阶值下面的高度值着色。
用WireframeType 来选择线框样式。选项有:
• None: 无线框
• Wireframe: 一个纯色线框。可以用 WireframeLineType.Color 来设置颜色。
• WireframePalettedByY: 线框着色依据SurfacePoint的Y字段ContourPalette进行(参阅第 Error! Reference source not found.章节)
• WireframePalettedByY: 线框着色依据SurfacePoint的Value字段ContourPalette进行(参阅第 Error! Reference source not found.章节)
• WireframeSourcePointColored: 线框着色依据曲面节点的颜色进行
• Dots: 在节点位置绘制纯色点。
• DotsPalettedByY: 在节点位置绘制点,并根据SurfacePoints 的Y字段按照ContourPalette来着色。
• DotsPalettedByValue: 在节点位置绘制点,并根据SurfacePoints的Value字段按照ContourPalette来着色。
• DotsSourcePointColored: 在节点位置绘制点,依据曲面节点颜色来着色
线框线条样式(color、width、pattern)可通过WireframeLineStyle来编辑。
注意! 调色板彩色线框线和点可能与 WireframeLineStyle.Patternsettings 冲突,例如线框设置为 Dots 的 Dash 线条样式。 请在其中一个中使用实线。
左图:WireframeType = Wireframe.
右图:WireframeType = WireframePalettedByY.
左图:WireframeType = SourcePointColored.
右图:WireframeType = Dots.
左图:WireframeType = DotsPalettedByY.
右图: WireframeType = DotsSourcePointColored.
当在3D模型中同样的位置绘制填充与线框时,可能会出现深度冲突(Z-Fighting)现象。这可以看成是线框线条中断。这是因为GPU不可能判断出哪个对象更靠近摄像头。
图 :采用填充的曲面网格线框。Z-fighting看上去像断损的线框线条。
为避免出现Z-fighting现象 ,可使用 WireframeOffset 或DrawWireframeThrough 属性。利用 WireframeOffset,可在3D模型空间中轻微移动线框。 DrawWireframeThrough 通过填充来绘制线框,无论该表面的部分是否对摄像头可见。
左图:WireframeOffset = (X=0; Y=0.1; Z=0).
右图:DrawWireframeThrough开启.
关于SurfaceGridSeries3D(曲线网格系列3D)章节就分享到这里了。下一章将继续分享SurfaceGridSeries3D(曲线网格系列3D)的轮廓线、消退、滚动曲面数据。
如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码联系LightningChart官方技术支持。
如果您想进一步使用LightningChart数据可视化图形控件,请添加后回复“学习”可免费领取一套全功能板LightningChart数据可视化控件。
后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢!
最新版V10 LightningChart下载地址:猛击下载



