【问题标题】:Drawing 3D Lines with WPF使用 WPF 绘制 3D 线条
【发布时间】:2014-03-16 08:52:44
【问题描述】:

我们都知道 WPF 4.5 中没有用于在 viewport3D 上的 3D 空间中绘制纯线的本机功能。

而且我知道有一些用于 WPF 的 3D 工具包。但对于我的硕士论文,我构建了自己的 3D 引擎。它几乎完成了,但我希望能够绘制我的对象的线框(例如显示球体的镶嵌)。 我的引擎几乎可以渲染所有基本的几何形状(立方体、球体、圆锥体、圆柱体、金字塔......)

你知道如何画线吗? (我唯一的想法是使用一个非常薄的圆柱体或立方体......但我认为这不是很有效,因为我必须为一条线渲染至少 8 个点(12 个三角形))

【问题讨论】:

  • 你可以使圆柱体每行 6 个点(5 个三角形)。
  • 没错。稍微优化一下是画一个有 6 个点的棱镜。但在那种情况下我数了 8 个三角形;)
  • 我最好的猜测是使用像素着色器来绘制线框。
  • 这就是我正在寻找的想法类型。不幸的是我不喜欢这个话题,我必须先做研究(3年前我在大学做过一次着色器......我不得不承认这不是我最喜欢的话题;-))
  • 首先,WPF 目前不支持 3D 像素着色器,其次,即使它支持像素着色器,它也根本没有任何用处,因为它们在光栅化过程中应用,一旦它已经已决定首先要绘制哪些像素。要使用 z 缓冲等进行适当的固定宽度线框几何,您需要指定原始类型,而 WPF 根本不支持。我的建议是为您的 3D 内容切换到 XNA,并使用 Airspace Popup 将您的 XAML 视图呈现在顶部......或者像其他人建议的那样用圆柱体来伪造它。

标签: c# wpf performance 3d line


【解决方案1】:

因此,您只需将必要的数据连同颜色、多重采样、宽度或它可能需要的任何信息一起传递给引擎的像素着色器,然后使用 PS 绘制这些线条。

【讨论】:

    【解决方案2】:

    如果你对单一宽度的线没问题并且你不介意渲染线框,那么你可以这样做。

    更完整的替代方法是绘制由两个相邻三角形组成的四边形。您可以将线条用作图元,并利用几何着色器的功能并使用它来生成四边形。

    创建一个几何着色器,接收构成每条线的两个点并输出一个三角形列表。您只需将四个点附加到输出流。使用来自 NVIDIA 的 in this paper 所示的计算来计算四边形的四个坐标中的每一个。

    虽然几何着色器的输入是线条,但输出将是正确设置的两个三角形,形成您的线条。实际上,这种技术提供了相当多的灵活性,因为四边形不受矩形限制(即每边可以有不同的宽度)。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多