【问题标题】:3D voxel angled plane3D 体素角度平面
【发布时间】:2012-05-27 19:40:55
【问题描述】:

我正在尝试从体素中绘制一个平面,目标是填充它,但我遇到了很多麻烦。我尝试的一切都会导致表面出现孔洞。曲面有 4 个角,但我也希望能够对三角形使用相同的方法。

这是我尝试过的:

  • 从平行的一侧到另一侧绘制
  • 仅在平面一侧的一个方向(z 方向)上绘制

我在 2 方面取得了最大的成功,但是当我向飞机添加任何俯仰或滚动时它失败了(任何高度存在)。

有什么建议吗?没有代码,因为我确信我的实现都是正确的,只是算法的选择是错误的。

编辑:

附带说明,虽然 2 号的孔较少,但平面变形并且看起来不平坦。

EDIT2:

我坚持我的第一个决定,但现在的问题是,我如何检测何时会出现漏洞?通过观察,我注意到每个平面的孔数量相同,无论俯仰和滚动如何。 Yaw 是这里的罪魁祸首。

EDIT3:

我没有回答这个问题,但我决定只测试附近的一个街区,看看它是否是空的。我不想这样做,但是是的。如果您有更优雅的解决方案,我会全力以赴。

【问题讨论】:

    标签: java algorithm voxel


    【解决方案1】:

    平面是无限的,没有角。你说的是四边形吗?它有方角吗?

    对于多边形,我当然会从三角形开始,因为您可以用三角形构造任何其他多边形,而不是相反。

    然后,填充三角形的一个好的开始可能是对给定体素是否应该填充进行准确测试。 Here 是两个不同的三角点测试的示例。

    完成后,您可以通过不同的方式进行操作。例如,虽然不是最有效的,但您可以从中心区域增长,测试每个相邻体素并使用堆栈递归。

    【讨论】:

    • 谢谢!我制作了一个(非常)低效的算法,该算法基于文章中的算法。我需要做一些重大的优化,但见鬼,它有效。它围绕一个三角形迭代一个立方体,它使用该页面中的相同方法进行测试,但对于三个二维三角形,每个三角形都投影到一个平面(X、Y 或 Z)上。这确定了该点是否在三角形“金字塔”区域中。然后使用平面方程,将该点减去任何已知点,并用三角形的法线点缀。点积值根据给定的不确定性参数进行测试,例如点 >= -u && 点
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多