您好,我尝试从2D位图图像创建3D地图。我有一个像this.的图像黑色像素是墙。并且此像素具有恒定的高度。它不是深度图像,高度没有差别。
现在我尝试了常规方法。
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循环中,我为每个像素添加一个立方体。结果就像this.
但是用这种方法我创建了400多个不同的多维数据集。所以这很慢。由于性能问题,很难缩放和旋转此地图。
如果我使用更大的对象进行3D转换,性能会有所提高,但是对于这种方法,我必须使用图像分割算法来检测圆形,多边形。
您能帮我解决这个问题吗?预先谢谢你。
P.S。 :我正在WPF中使用Helix-3d-Toolkit进行3D视图。
答案 0 :(得分:0)
我认为您仍然可以将2D地图用作“高度”地图,根据您在XZ平面上的网格分辨率创建网格,并根据地图数据更改顶点Y位置。然后它将是单个网格,而不是多个框。