【发布时间】:2016-01-27 21:24:52
【问题描述】:
我目前正在开发第三人称建筑游戏(作为学士学位论文)。我需要识别构造模式,因为我可以将相应的结构标记为某个建筑物(以便玩家可以开始使用该建筑物)。
我有以下规则:
- 3种类型的积木(全部基于cube)(未来还会有更多类型)
- 任何块都可以在每个轴上放大到 k 倍 (k = 20)
- 块可以按任意轴旋转(但保持在 3D 网格中)
问题定义: 2x2 网格中的 4 个基本尺寸 (1,1,1) 的立方体应等于 1 框大小 (2,2,1),因此所有可能的变体(主要是旋转不同)都可以被评估为有效的模式构造。
我希望我的图案将达到基本尺寸的 30x30x30 倍数。
例如,我想识别这样的结构:(当前手动放置在关卡中) 大小为 21x21x22,由多个对象构成。
作为一个限制,我将从确切的点开始边界模式搜索(让我们说 控制台 用于该结构)。电流限制常数约为基础立方体的 50x50x50 倍数。 (根据此处的答案,限额可能会有所变化。)
我搜索了 20 多个小时,结果只是从 2D 图像中识别 3D 结构或在 2D 中识别精确结构的论文。
我的问题是随着 K( 每个 X,Y,Z) 的增长,结构的数量呈指数增长,这应该被视为正确的模式构造。
问题:我应该使用什么算法(+启发式)?
以下 3 幅图像包含结构的可视化,它们被视为图像 4 中图案的正确变体,因此应该找到并接受它们。
所有这些都具有相同的最终形状(并且在相同的位置具有相同的材料)。我只将问题简化为 2D 形状,但在 3D 空间中扩展是显而易见的。
感谢您的所有回答/cmets。
【问题讨论】:
-
您不清楚究竟是什么导致给定的构建结构与给定的模板匹配。很明显,细分模板的一些构建块不应该导致不匹配。 似乎拉伸“穿过”任何特定平面(想象切割世界,然后将两半分开,然后在原始接触点之间“填充”物质)不应导致不匹配 - - 正确的?如果您的模板是 U 形的,并且一个尖端而不是另一个已被拉伸怎么办?如果这会导致不匹配,那么我为您提供了一个有效的解决方案。
-
只是一个愚蠢的问题:您是否必须使用图像识别(根据您的任务描述)?如果不是,我会直接使用向量形式的结构(无论如何你都需要存储它们),这比 2D->3D 模式匹配更少的工作和更快/更精确......你只需实现选择,拖放,对齐为您的原语...
标签: c++ algorithm 3d pattern-matching unreal-engine4