开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 9165|回复: 0

LightningChart数据可视化工具使用篇53-SurfaceGridSeries3D曲线网格

[复制链接]

0

精华

10

贡献

2072

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-10-25 12:00:44 | 显示全部楼层 |阅读模式
SurfaceGridSeries3D曲线网格系列


演示示例: Simple 3D surface grid; Surface grid, flat projections; Surface grid, value coloring; Surface grids, water and ground


SurfaceGridSeries3D 可以将数据可视化为一个3D面。在SurfaceGridSeries3D中, 节点在X维度上是等距的,在Z维度上也是如此。
微信截图_20211025105822.png

图:采用默认样式的面网格系列。高度数据用正弦公式表示。图例框显示高度着色间隔。

微信截图_20211025105857.png

图:面网格节点。SizeX = 5, SizeZ = 7.

节点距离自动计算如下:
微信截图_20211025105940.png


设置面网格数据
• 用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方法可根据位图图像来创建曲面。面可获得位图尺寸(若没有使用反锯齿或重新采样)。对于每个位图图像像素,对红色、绿色和蓝色值求和。和越大,该节点的高度数据值就越高。黑色与暗色的值较低,而明亮和白色的值较高。
微信截图_20211025110524.png

图:源位图与计算所得的曲面高度数据。暗色值较低,而亮色值较高

填充样式
用Fill 属性来选择曲面的填充样式。可以使用以下选项:

• None: 使用此选项,不进行填充。这一选项对线框网眼很有用。

• FromSurfacePoints: 使用数据属性节点的颜色。

• Toned: 应用ToneColor

• PalettedByY: 根据调色板按Y值着色,参阅第Error! Reference source not found.章节

• PalettedByValue: 根据调色板按SurfacePoint's Value 字段着色,参阅第Error! Reference source not found.章节

• Bitmap: 将位图图像拉伸来覆盖整个曲面。在BitmapFill属性中对位图图像进行设置。属性具有子属性可用于进行垂直和水平镜像。

微信截图_20211025110620.png

左图:FromSurfacePoints 填充;每个数据点的颜色。
右图: Toned 填充.
微信截图_20211025110706.png
左图:PalettedByY
右图:Bitmap 填充.

微信截图_20211025110803.png
图: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。下图的轮廓调色板显示了如下信息:
微信截图_20211025111022.png

图:曲面网格系列轮廓调色板样式(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 线条样式。 请在其中一个中使用实线。



微信截图_20211025111243.png

左图:WireframeType = Wireframe.
右图:WireframeType = WireframePalettedByY.
微信截图_20211025111322.png
左图:WireframeType = SourcePointColored.
右图:WireframeType = Dots.

微信截图_20211025111416.png
左图:WireframeType = DotsPalettedByY.
右图:WireframeType = DotsSourcePointColored.




线框与填充同时使用的注意事项
当在3D模型中同样的位置绘制填充与线框时,可能会出现深度冲突(Z-Fighting)现象。这可以看成是线框线条中断。这是因为GPU不可能判断出哪个对象更靠近摄像头。
微信截图_20211025111529.png

图: 采用填充的曲面网格线框。Z-fighting看上去像断损的线框线条。

为避免出现Z-fighting现象 ,可使用 WireframeOffset 或DrawWireframeThrough 属性。利用 WireframeOffset,可在3D模型空间中轻微移动线框。 DrawWireframeThrough 通过填充来绘制线框,无论该表面的部分是否对摄像头可见。

微信截图_20211025111615.png

左图: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 选项进行(参阅本章:轮廓调色板)。

微信截图_20211025112345.png

左图:ContourLineType = FastColorZones.
右图:ContourLineType = FastPalettedZones.
微信截图_20211025112424.png
左图:ContourLineType = ColorLine.
右图:ContourLineType = PalettedLine.

微信截图_20211025112504.png
图: ContourLineType = PalettedLineByValue.

消退

演示示例: Spectrum 3D



SurfaceGridSeries3D、SurfaceMeshSeries3D 和WaterfallSeries3D 具有一种FadeAway 属性,可以将系列向图表的后部淡出。Fadeaway 是以百分比计算,有效范围从0 (默认值,无消退)到100 (完全消退)。值越高,具有高Z值的数据越透明。

滚动曲面数据

演示示例: Spectrogram

SurfaceGridSeries3D 和 SurfaceMeshSeries3D 具有 InsertRowBackAndScroll 和InsertColumnBackAndScroll 方法,可用于性能优化的定期数据添加。他们在曲面系列的数据表中插入一个新的数据行或列,同时丢掉最早的值,即除去第一个数据行。思考一下下面的3D 光谱显示(下图)。新的 FFT 值作为一个新行添加(靠近摄像头),并滚动旧数据与时间轴(Z 轴)。最早的曲面值必须丢弃掉。
微信截图_20211025112659.png

图: 用曲面网格表示3D光谱。InsertRowBackAndScroll 方法用于性能优化的数据添加。Fadeaway 属性设为100 ,使表面平滑地向图表的后部消退。采用的是透视摄像头。


InsertRowBackAndScroll 和 InsertColumnBackAndScroll 将新数据作为双数组,但也需要为曲面系列和滚动轴设置新的最小值和最大值(Z 维度/轴用 InsertRowBackAndScroll ,X 维度/轴用 InsertColumnBackAndScroll). 这种不断调整的系列和轴的范围,使滚动发挥作用。

微信截图_20211025112834.png

图:采用表面网格的光谱图。采用的是 InsertColumnBackAndScroll 方法。在模型上方的正投摄像头给出了连续垂直的投影。 SuppressLighting开启后可移除不需要的光反射。设置Fadeaway = 0可让网格系列完全可见。



关于SurfaceGridSeries3D曲线网格系列章节就分享到这里了。



如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码联系LightningChart官方技术支持。



如果您想进一步使用LightningChart数据可视化图形控件,请添加后回复“学习”可免费领取一套全功能版LightningChart数据可视化控件。

b5354b9436db344e96ae6ae2fa1fedf.jpg

后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢!

最新版V10 LightningChart下载地址:猛击下载


回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 16:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表