SurfaceGridSeries3D曲线网格系列
演示示例: 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值:
采用数据数组索引的方法
[C#] 纯文本查看 复制代码 for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)
{
for (int nodeIndexZ = 0; nodeIndexZ < rowCount; nodeIndexZ ++)
{
Y =//一些高度值
gridSeries.Data[iNodeX, iNodeZ].Y = Y;
}
}
gridSeries.InvalidateData(); // 准备好新值后通知刷新
采用SetDataValue的另一种方法
[C#] 纯文本查看 复制代码 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.章节)
为轮廓调色板可以定义无限数量的色阶。每一阶都有一个高度值以及一个对应的颜色。
调色板包括MinValue、Type 和Steps 属性。Type属性包括两个选择: Uniform 和Gradient。下图的轮廓调色板显示了如下信息:
图:曲面网格系列轮廓调色板样式(Type)设置为渐变(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开启.
轮廓线
轮廓线可以快速表明高度数据,而不用采取调色板填充来填充曲面。轮廓线可以与填充线框结合使用。通过设置 ContourLineType 属性,可以用不同的样式来绘制轮廓线:
• None: 不显示轮廓线
• FastColorZones: 轮廓线可绘制为细的直立带。这可以进行非常强的渲染,很适合不断更新或动画表面。陡峭的高度变化以细线表示,平缓倾斜的高度差以粗线表示。所有线条都使用由ContourLineStyle.Color属性定义的同样颜色。带的高度可以用FastContourZoneRange属性来设置。
• FastPalettedZones: 和FastColorZones类似, 但是线条着色是依据ContourPalette 选项进行(参阅本章:轮廓调色板)。
• ColorLineByY 和ColorLineByValue: 轮廓线是由实际线制成的。渲染用时比FastColorZones久。 线条宽度可以用ContourLineStyle.Width属性来调节。轮廓线也能用WireframeOffset 属性进行移位,以消除填充时可能出现的Z-fighting现象。
• PalettedLineByY 和PalettedLineByValue: 与ColorLineByY 和ColorLineByValue类似,但是线条着色依据 ContourPalette 选项进行(参阅本章:轮廓调色板)。
左图:ContourLineType = FastColorZones.
右图:ContourLineType = FastPalettedZones.
左图:ContourLineType = ColorLine.
右图:ContourLineType = PalettedLine.
图: ContourLineType = PalettedLineByValue.
消退
演示示例: Spectrum 3D
SurfaceGridSeries3D、SurfaceMeshSeries3D 和WaterfallSeries3D 具有一种FadeAway 属性,可以将系列向图表的后部淡出。Fadeaway 是以百分比计算,有效范围从0 (默认值,无消退)到100 (完全消退)。值越高,具有高Z值的数据越透明。
滚动曲面数据
演示示例: Spectrogram
SurfaceGridSeries3D 和 SurfaceMeshSeries3D 具有 InsertRowBackAndScroll 和InsertColumnBackAndScroll 方法,可用于性能优化的定期数据添加。他们在曲面系列的数据表中插入一个新的数据行或列,同时丢掉最早的值,即除去第一个数据行。思考一下下面的3D 光谱显示(下图)。新的 FFT 值作为一个新行添加(靠近摄像头),并滚动旧数据与时间轴(Z 轴)。最早的曲面值必须丢弃掉。
图: 用曲面网格表示3D光谱。InsertRowBackAndScroll 方法用于性能优化的数据添加。Fadeaway 属性设为100 ,使表面平滑地向图表的后部消退。采用的是透视摄像头。
InsertRowBackAndScroll 和 InsertColumnBackAndScroll 将新数据作为双数组,但也需要为曲面系列和滚动轴设置新的最小值和最大值(Z 维度/轴用 InsertRowBackAndScroll ,X 维度/轴用 InsertColumnBackAndScroll). 这种不断调整的系列和轴的范围,使滚动发挥作用。
图:采用表面网格的光谱图。采用的是 InsertColumnBackAndScroll 方法。在模型上方的正投摄像头给出了连续垂直的投影。 SuppressLighting开启后可移除不需要的光反射。设置Fadeaway = 0可让网格系列完全可见。
关于SurfaceGridSeries3D曲线网格系列章节就分享到这里了。
如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码联系LightningChart官方技术支持。
如果您想进一步使用LightningChart数据可视化图形控件,请添加后回复“学习”可免费领取一套全功能版LightningChart数据可视化控件。
后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢! 最新版V10 LightningChart下载地址:猛击下载
|