LightningChart数据可视化图形控件使用篇32-View3D

798 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

View3D

View3D 可以在3D空间中实现数据可视化。3D模型可用各种方法来缩放、旋转、点亮。不同的系列类型可以放置到相同的3D视图中,以实现组合可视化。

微信截图_20220511104602.png 图:View3D 对象主树

3D 模型及尺寸

微信截图_20220511104647.png 图:模型正负方向。

在3D 空间中心创建3D 模型。维度量级定义了三维空间中模型箱的大小。用该维度箱可以定义墙和轴的大小。用Dimensions属性可设置每个维度的量级。

当没有定义照相机旋转时,正X方向朝右,正Y方向朝上,正Z方向朝向屏幕内。

World coordinates 全局坐标

一些3D 对象采用的是 “全局坐标”, 而非轴值。例如,光的定位方式是独立于轴的范围。全局坐标还可以称为“3D 模型空间坐标”.

原点 [0,0,0] 位于模型的中心。实际的3D 模型空间范围开始于 [-Dimensions.X/2 至Dimensions.X/2], [-Dimensions.Y/2 至Dimensions.Y/2] 和[-Dimensions.Z/2 至Dimensions.Z/2].

LightningChart 提供有专门的方法可以在系列值、轴值、世界坐标和屏幕坐标间进行值得转换。更多详情可浏览演示应用程序示例及帮助文档。

微信截图_20220511104938.png 图:试图设置示例。维度设置为 X=100, Y=40, Z=80. 可见墙:左面、底面、后面。采用透视摄像头视角。

Walls 墙

墙 (WallOnFront, WallOnBack, WallOnTop, WallOnBottom, WallOnLeft, WallOnRight)用于表 示轴网格和网格条,并为轴提供基础。默认情况下,底部、左、右、前、后的墙都可见,其 AutoHide 属性设置为true。当旋转视图时,阻隔墙被暂时隐藏,这样就不会阻挡住图表内容的视 图。若要让墙可见,则设置Visible = true 且AutoHide = false。

使用XGridAxis,YGridAxis,ZGridAxis,GridStripColorX,GridStripColorY,GridStripColorZ 和GridStrips 属性可从中选择应用网格的轴,并修改网格的颜色网格条。 可用的属性取决于墙的方 向。 隐藏实心墙时FullTransparent 属性允许仅显示网格。 请注意,即使启用了FullTransparent,网 格仍然遵循墙的可见性和自动隐藏属性。

FrameBox (框架箱)

用一个简化了的 3D 箱外观可替代墙。为每面墙设置Visible = false,接着设置FrameBox.Style = AllEdges。用FrameBox.LineColor 可设置颜色或框架。

微信截图_20220511105134.png 图:FrameBox 可视,隐藏掉墙

摄像头

微信截图_20220511105224.png 图:Camera 属性.

摄像头类型、位置、距离和朝向一起决定了3D的视角。用 RotationX, RotationY, RotationZ 和ViewDistance 可设置摄像头在3D模型空间中的位置。通过设置Target属性,可以将摄像头对准优先选定的方向。

用Projection属性可选择投影类型。

• Perspective,显示一个具有真实感的投影。

• Orthographic, 此为在科学和工程应用中使用的投影类型。比起OrthographicLegacy更推荐用此选择。

• OrthographicLegacy,(相当于在LightningChart v.8.3或更早的版本中设置OrthoGraphicCamera = True)。相比Orthographic而言,这在缩放后渲染更慢 。它维护三维对象的大小,这在如果3D对象是在3D全局坐标(不是轴值)中定义的情况下,可维持3D对象的大小。而且,墙的厚度在缩放时会保持不变。缩放会改变维度尺寸,但不会影响ViewDistance.

RotationX, RotationY and RotationY can be limited by setting boundaries 通过 RotationXMinimum, RotationXMaximum、RotationYMinimum、RotationYMaximum、RotationZMinimum 和 RotationZMaximum 属性来设置边界可限制RotationX、RotationY 和 RotationY。

微信截图_20220511105340.png 图:透视摄像头在3D空间的样子

微信截图_20220511105416.png 图:3D空间的透视和正交摄像头视角。

缩放后的试图在Orthographic 和OrthographicLegacy 中的不同如下:

Orthographic

微信截图_20220511105521.png 图: Orthographic 投影类型。左侧无缩放。右侧为放大后。飞机(MeshModel3D)对象的大小与其他对象一起在屏幕上扩大。

OrthographicLegacy

微信截图_20220511105644.png 图:OrthographicLegacy;左侧无缩放。右侧为放大。On the left, unzoomed. On the right, zoomed in. Airplane (MeshModel3D, see 7.14)对象尺寸保持不变,但3D 尺寸改变了。

预先设定摄像头

演示示例: Cameras and lights

用View3D.Camera的 SetPredefinedCamera 方法可设置一个预先设定好的摄像头。

//设置预定义的摄像头方向
chart.View3D.Camera.SetPredefinedCamera(PredefinedCamera.BackOrthographic);

摄像头方向模式

在LightningChart v8.4版本中,增加了一个新的摄像头方向模式与改进的摄像头方向定义。现在被设置为默认方向模式的新模式叫做ZXY_Extrinsic (此名称规定了维度轴的计算顺序)。它修复了许多基于旋转的问题,特别是在图表的两极附近(例如图表上方的摄像头)。之前的方向模式 XYZ_Mixed仍然可用,但很可能在未来的某个时候不宜再用。通过View3D.Camera.OrientationMode可以获取方向信息。

这种变更夜会对旋转进行修改。采用新的摄像头方向模式,其中一个轴方向(世界单位矢量)被用作鼠标水平旋转轴。这即是摄像头旋绕的轴。当RotationX、RotationY 或RotationZ属性改变时,轴的测定可自动完成。最靠近摄像头的向上方向的轴选做旋转轴,这样可使旋转在任何情况下都尽可能自然。

通过新的方向和旋转模型可以查看3D场景,这在以前是不可能的。

关于LightningChart数据可视化图形控件使用篇32-View3D章节就分享到这里了。

如果在实际应用中遇到技术问题或需要帮助,可以添加下方微信号联系官方技术支持。

微信号:lightningchart_china

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

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

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