[英]Helix Toolkit in c# displaying ply point cloud
我在這個包裝器的幫助下制作了一個 ply 文件。
我如何制作 ply 文件如下所示:
using (var frames = pipeline.WaitForFrames())
{
var colorFrame = frames.ColorFrame.DisposeWith(frames);
var depthFrame = frames.DepthFrame.DisposeWith(frames);
var points = pc.Process(depthFrame).As<Points>();
// We colorize the depth frame for visualization purposes
var colorizedDepth = colorizer.Process<VideoFrame>(depthFrame).DisposeWith(frames);
// CopyVertices is extensible, any of these will do:
var vertices = new float[points.Count * 3];
// var vertices = new Intel.RealSense.Math.Vertex[points.Count];
// var vertices = new UnityEngine.Vector3[points.Count];
// var vertices = new System.Numerics.Vector3[points.Count]; // SIMD
// var vertices = new GlmSharp.vec3[points.Count];
// var vertices = new byte[points.Count * 3 * sizeof(float)];
points.CopyVertices(vertices);
points.ExportToPLY("pointcloud.ply", colorFrame);
// Render the frames.
cloudPoints = importer.Load(@"pointcloud.ply");
}
現在我想使用代碼顯示它:
private void Create3DViewPort()
{
var hVp3D = new HelixViewport3D();
var lights = new DefaultLights();
HViewPort.Children.Add(lights);
HViewPort.Children.Add(cloudPoints);
this.AddChild(HViewPort);
}
但是我在HViewPort.Children.Add(cloudPoints);
行收到錯誤 . 它是說:
它無法將 Systems.Windows.Media.Media3D.Model3D 轉換為 Systems.Windows.Media.Media3D.Visual3D。
有人可以幫助我如何使用 helix 工具包顯示點雲嗎?
我認為目前無法在 helix 工具包中顯示一些 ply 文件( 請參閱 Helix Wiki )。
你可以用下面的代碼顯示一個ply文件,但你不會看到你期望的項目
Model3DGroup group = new Model3DGroup();
var hpVp3D = new HelixViewport3D();
ModelVisual3D visual3D = new ModelVisual3D();
var lights = new DefaultLights();
ModelImporter importer = new ModelImporter();
Model3D element;
element = importer.Load(@"pointcloud.ply")
group.Children.Add(element);
visual3D.Content = group;
hVp3D.Children.Add(visual3D);
hVp3D.Children.Add(lights);
this.AddChild(hVp3D);
我不知道這是不是這樣,但我可以在 ply 文件中顯示點雲。 編碼:
Model3DGroup model1 = import.Load("pointcloud.ply");
model.Content = model1;
XAML:
<HelixToolkit:HelixViewport3D Grid.ColumnSpan="1" Grid.Column="1" Margin="2.4,1,0,-0.4" >
<HelixToolkit:HelixViewport3D.Camera>
<PerspectiveCamera />
</HelixToolkit:HelixViewport3D.Camera>
<HelixToolkit:DefaultLights></HelixToolkit:DefaultLights>
<ModelVisual3D x:Name="model"></ModelVisual3D>
</HelixToolkit:HelixViewport3D>
之前的建議確實有幫助。 但是,有必要創建導入器 class 的實例,並且在XAML文件中,編譯器要求您在聲明相機之前放置 model 聲明。
.cpp 文件:
ModelImporter importer = new ModelImporter();
Model3DGroup model=importer.Load("model_file.ply");
MyModel.Content = model;
XAML:
<helix:HelixViewport3D x:Name="viewPort3d">
<ModelVisual3D x:Name="MyModel"/>
<helix:HelixViewport3D.Camera>
<PerspectiveCamera UpDirection="-0.00794080933244957, 0.909926622339627, 0.414693242656239"
LookDirection="49.636719684, -2387.8047, -29918.6652549283"
Position="-48.6367196, 5688.80470553634, 29917.665254"/>
</helix:HelixViewport3D.Camera>
</helix:HelixViewport3D>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.