首页 > 解决方案 > C#中的Helix Toolkit显示层点云

问题描述

我在这个 wrapper的帮助下制作了一个 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 工具包显示点云吗?

标签: c#point-cloudshelix-3d-toolkit

解决方案


我不知道这是否是这样,但我可以在 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>

推荐阅读