[英]Displaying .ply Point Cloud in C# using Helix-Toolkit
我正在嘗試從.ply文件創建一個點雲,該文件包含頂點(vxyzrgb)及其從Kinect v2中記錄的顏色。 到目前為止,我已經嘗試過:
最初,我使用MeshLab來檢查我的.ply文件是否正確。 它是。 所以我試圖將.ply文件導出為.obj以使用Helix-Toolkits
HelixToolkit.Wpf.ModelImporter
但是,在使用我自己的代碼和Helix-Toolkit示例中的ModelViewer時,這都會給我一個空白的屏幕。 這可能是由於ply文件不包含有關面的信息這一事實。
1.是否有一種簡單的方法可以從層創建obj文件,並在過程中添加面?
2.還有另一種(可能更好的方法)從層文件創建點並使用Helix在屏幕上顯示它們嗎?
我不會回答您的第二個問題,因為我不了解您的第一個問題。
假設您可以讀取頂點數據,則將雲數據讀取到類似Point3D列表的集合結構中。
Point3DCollection dataList = new Point3DCollection();
//read from ply file and append the positions to the dataList. i.e. dataList.Add(new Point3D(x,y,x));
PointsVisual3D cloudPoints = new PointsVisual3D { Color = Colors.Red, Size = 5 };
cloudPoints.Points = dataList;
在您的XAML中為螺旋視口命名,以便可以在C#中引用它。
<h:HelixViewport3D x:Name="HViewPort">
<h:DefaultLights/>
</h:HelixViewport3D>
在C#中
HViewPort.Children.Add(cloudPoints);
注意:這將以初始化時指定的相同顏色顯示所有點。 因此,可能值得將數據的rgb值保留在單獨的列表中。
到目前為止,我還不知道如何將顏色分配給各個PointVisual3D。 如果您知道了,請分享。
一種替代方法是創建以dataPoints為中心的單個3D球體,然后為它們分配記錄的rgb值。 我會全神貫注於這種方法,因為它的性能很高,並且取決於數據大小。
祝好運 :)
只是基於其他答案,您可以通過MVVM樣式的綁定在XAML中設置PointsVisual3D
的Points
屬性:
<helix:HelixViewport3D>
<helix:DefaultLights/>
<helix:PointsVisual3D Color="Black" Size="2" Points="{Binding dataList}"/>
</helix:HelixViewport3D>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.