首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF - 2D图像到3D

WPF - 2D图像到3D
EN

Stack Overflow用户
提问于 2019-01-08 07:50:43
回答 1查看 585关注 0票数 0

你好,我尝试从2D位图图像创建3D地图。我有一个像这。的图像,黑色像素是墙。这个像素的高度是恒定的。这不是深度图像,也没有不同的高度。

现在我尝试了传统的方法。

代码语言:javascript
复制
    void Map_2D_to_3D(Image<Bgr,Byte> map_image)
    {
        for (int i = 0; i < map_image.Height; i++)
        {
            for (int j = 0; j < map_image.Width; j++)
            {
                Bgr pixel_color = map_image[i, j];
                if (pixel_color.Blue == 0 && pixel_color.Red == 0 && pixel_color.Green == 0)
                {
                    View3D.Children.Add(helper_box.Create_Helper_Box(2, 2, 2, i * 2, j * 2, 2, Color.FromRgb(0, 0, 255)));
                }
            }
        }
    }

在XAML中

代码语言:javascript
复制
    <Grid x:Name="grid_3D" Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Grid.RowSpan="1">
        <h:HelixViewport3D x:Name="View3D" >
            <h:DefaultLights/>               
        </h:HelixViewport3D>
    </Grid>

在for循环中,我为每个像素添加了一个立方体。结果就像这。

但在这种方法中,我创建了400多个不同的立方体。所以这很慢。由于性能问题,很难缩放和旋转此地图。

如果使用较大的对象进行三维转换,性能会有所提高,但对于这种方法,必须使用图像分割算法来检测圆、多边形形状。

你能帮我解决这个问题吗?提前谢谢你。

P.S.:我在WPF中使用Helix-3d-Toolkit进行3D视图。

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 08:28:18

我认为你仍然可以用你的二维地图作为高度图,根据你的XZ平面上的网格分辨率创建一个网格,根据你的地图数据改变顶点Y位置。然后,它将是一个单一的网格,而不是许多盒子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54087328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档