2015-05-30 6 views
1

Я пытаюсь создать Point Cloud из файла .ply, который содержит вершины (v x y z r g b) и их цвет, записанный с Kinect v2. То, что я пробовал до сих пор:Отображение. Point Point Cloud в C# с помощью Helix-Toolkit

Сначала я использовал MeshLab для проверки правильности моего файла .ply. Это. Так что я пытался экспортировать .ply файл как .obj использовать Helix-ToolKits

HelixToolkit.Wpf.ModelImporter 

Однако, это дает мне пустой экран, как при использовании моего собственного кода и ModelViewer в примерах Helix-Toolkit. Вероятно, это связано с тем, что файл ply не содержит информации о лицах.

1. Есть ли простой способ создать объект obj из слоя, добавив лица в процесс?

2. Есть ли другой - возможно, лучший способ - создавать точки из файла слоев и отображать их на экране с помощью Helix?

ответ

4

Я займу свой второй вопрос, поскольку у меня нет знаний относительно вашего первого вопроса.

Предполагая, что вы можете читать данные вершин, Прочтите данные облака в структуру коллекции, такую ​​как список 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 дать Helix VIEWPORT имя, чтобы его можно refenced в C#

<h:HelixViewport3D x:Name="HViewPort"> 
<h:DefaultLights/> 

</h:HelixViewport3D> 

В C#

HViewPort.Children.Add(cloudPoints); 

NB: Это покажет все точки с одинаковыми цвет, который был указан при инициализации. Поэтому, возможно, стоит сохранить значения rgb ваших данных в отдельном списке.

На сегодняшний день я понятия не имею, как назначить цвет отдельным PointVisual3D. Если вы выясните, пожалуйста, поделитесь.

Альтернативой было бы создать отдельные 3D-сферы, центрированные вокруг точек данных, а затем назначить им записанные rgb vals. Я бы не сомневался в этом подходе, поскольку его производительность была тяжелой и зависела от размера данных.

Удачи :)

0

Просто построить на другой ответ, вы можете установить Points свойства PointsVisual3D в XAML с помощью связывания, MVVM стиля:

<helix:HelixViewport3D> 
    <helix:DefaultLights/> 
    <helix:PointsVisual3D Color="Black" Size="2" Points="{Binding dataList}"/> 
</helix:HelixViewport3D>