你好,我尝试从2D位图图像创建3D地图。我有一个像这。的图像,黑色像素是墙。这个像素的高度是恒定的。这不是深度图像,也没有不同的高度。
现在我尝试了传统的方法。
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中
<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视图。
发布于 2019-01-09 08:28:18
我认为你仍然可以用你的二维地图作为高度图,根据你的XZ平面上的网格分辨率创建一个网格,根据你的地图数据改变顶点Y位置。然后,它将是一个单一的网格,而不是许多盒子。
https://stackoverflow.com/questions/54087328
复制相似问题