开发者论坛

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

LightningChart数据可视化工具使用篇57-MeshModels

[复制链接]

0

精华

10

贡献

2071

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2022-5-20 10:38:57 | 显示全部楼层 |阅读模式
MeshModels

演示示例: Vessels with sea depth; Mesh models coloring, wireframe; Mesh models realtime coloring; Mesh models by code

通过MeshModels 属性列表,可以将3D模型从外部3D模型编辑器插入到LightningChart View3D中。 模型可以以OBJ格式导入,这是一种3D建模应用程序和游戏引擎中的通用格式。

注意! 由于DirectX 11不在支持Direct3D X-格式文件(*.x),LightningChart v.7 v.7之后不再支持该文件格式。

微信截图_20220520100019.png

图:在View3D视图中载入战舰和潜艇模型,,覆盖SurfaceGridSeries3D 可视化海底深度数据。

加载模型
• 要从文件加载模型,可在ModelFileName属性内设置路径与文件名,或者使用LoadFromFile方法。当从文件加载模型,如果纹理填充存在于相同的路径中,并且可以访问MTL文件和图像文件,那么纹理填充也会被加载。

• 从LightningChart 第8.5版本开始, MeshModel 创建支持.obj文件中的顶点颜色。顶点位置支持Red, Green, Blue 以及x、y和z后的Alpha 值(XYZRGBA).

• 从数据流(stream)加载模型,可使用LoadFromStream方法。 数据流读取方法仅读取几何形状和材质,不读取纹理。

• 从资源(resource)加载模型,可使用LoadFromResource方法。

模型的定位、缩放和旋转
MeshModel对象的Position依据其所分配到的X、Y和Z轴而定。模型可以通过编辑Rotation属性来旋转。其Size 可用Size属性来定义,这是原始模型大小的一个要素集合,不遵循轴向范围或3D世界维度。

开启填充与线框
• 要显示填充,可设置 Fill = True

• 要显示线框,可设置WireFrame = True, 并在WireFrameLineColor中设置首选线条颜色。

微信截图_20220520100136.png

图:飞机显示为线框(WireFrameLineColor = Red),默认以灰色填充

自定义着色填充

默认情况下,模型采用OBJ模型的颜色进行渲染。用UpdateFillColors(int[] colors)方法,可以为模型的顶点应用自定义颜色。此方法也可以定期调用,以应用实时颜色更新。UpdateFillColors 方法需要一个与顶点位置长度(X.Length)相等的ARGB颜色数组。每个顶点一个颜色。

GeometryConstructed 事件报告顶点在轴值空间中的位置,如X、Y和Z数组。在应用着色时,例如通过其他图表对象(如数据点)的空间距离,尤其需要它们。当在初始化阶段时订阅GeometryConstructed事件处理程序,而当不在需要的时候可以取消。


微信截图_20220520100243.png

图:用UpdateFillColors方法根据空间距离为MeshModel着色。

注意: ChartTools.ConvertDataToColorsByFixedIntervalPalette 方法可用来根据给定的调色板色阶来讲数据值转换为颜色 (ARGB int)。

自定义着色线框
线框可以采用自定义颜色进行着色。用GeometryConstructed 事件处理器可获得所需的颜色数组长度,并用UpdateWireframeColors方法可应用新的颜色。

微信截图_20220520100407.png

图:用UpdateWireframeColors方法根据空间距离为MeshModel线框着色。


反向顶点缠绕顺序
有些模型是用反向缠绕顺序制作的,因此剔出会使它们不可见。假如一个模型不能正确显示,需将 Cull 设置在Clockwise、CounterClockwise 与None之间进行变更。
[C#] 纯文本查看 复制代码
meshModel.Cull = Cull.CounterClockwise;


MeshModel 渲染顺序
在LightningChart 第8.5版本中引进了RenderingOrder -属性。该属性控制着MeshModel是否在例如PointLineSeries3D 和SurfaceGridSeries3D (BeforeSeries)等其他系列之前渲染,或是在他们(AfterSeries)之后渲染。具有类似RenderingOrder -设置的MeshModels是按照它们添加到图表中的顺序绘制的。

[C#] 纯文本查看 复制代码
meshModel.RenderingOrder = MeshModelRenderingOrder.BeforeSeries;


RenderingOrder 可以影响以上所有半透明的MeshModels。其用途可确定是否可以通过模型看到其他系列。如果一个MeshModel 使用不透明颜色,都会挡住后面所有的东西,无论RenderingOrder -设置为什么。

微信截图_20220520100537.png

图:一个半透明MeshModel的RenderingOrder,左侧设置为BeforeSeries,右侧设置为AfterSeries 。 使用BeforeSeries -选项,即使模型颜色是透明的,也无法通过模型看到如PointLineSeries3D等其他系列。

注意:当前的Rectangles3D和Polygons3D不受RenderingOrder的影响,因为它们不看作是系列

从顶点以编程方式构造网格模型
从第 v.8.2版本开始, MeshModel 支持以编程方式构造MeshModel几何形状。这可以实现对通过计算产生的对象和形状可视化。

可用的Create 方法如下:

• Create(positions, colors, indices)

• Create(positions, colors, normals, indices)

• Create(positions, textureCoordinates, bitmap, textureWrapMode, indices)

• Create(positions, normals, textureCoordinates, bitmap, textureWrapMode, indices)

索引数组(indices)参数是可选的。如果提供有的话,他们将定义从给定的数组中使用哪些顶点、颜色、光法线和纹理坐标。当多个三角形共享相同的顶点时,使用索引可以节省资源。


微信截图_20220520100646.png

图:通过代码构造MeshModels

旋转、缩放和定位属性等以及事件也适用于从顶点以编程方式创建的MeshModel,与所加载对象的工作方式相似。

有效地更新位图填充
当用Create方法创建了一个MeshModel后,可提供位图和纹理坐标作为参数,可以非常有效地更新位图而不用重建几何结构。调用UpdateFillBitmap 方法可以进行更新。
注意! UpdateFillBitmap方法不适用于从OBJ文件加载的模型。

用鼠标跟踪模型
用MeshModel可进行基于三角形的鼠标位置跟踪。采用MouseTriangleTraced 事件,可指示距离摄像头最近的三角形和鼠标位置。
事件参数有以下信息:

• IntersectionPointAxisValues: 三角形面在坐标轴中的交点

• ModelSpaceTriangleCoordinates: 3个三角形角(顶点)的数组,鼠标在3D模型空间坐标中点击

• WorldSpaceTriangleCoordinates: 3个三角形角(顶点)的数组,鼠标在3D世界坐标系中点击


• NearestCoordinateIndex: 追踪的三角形的最近坐标索引,值为0…2。用索引从ModelSpaceTriangleCoordinates 或WorldSpaceTriangleCoordinates数组中提取索引。
微信截图_20220520100817.png

图:用鼠标跟踪MeshModels; 跟踪结果在注释框中显示。


关于LightningChart数据可视化工具使用篇57-MeshModels章节就分享到这里了。

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

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



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

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


回复

使用道具 举报

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

GMT+8, 2024-5-16 00:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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