在第三方应用程序中可视化法线?

Visualize normals in third party application?

我正在为 3D 模型编写一个导出器,可以在 PDF 中查看(即使用 PRC 格式),目前我正在尝试弄清楚如何正确地将法线写入该格式(没有真正解释)在规范中非常好)。我创建了一些非常简单的模型(在 OBJ 中),仅由几个三角形组成,具有垂直和非垂直法线。然而,当我将 PRC 添加到 PDF 以在 Adob​​e Reader 中查看时,它们看起来不对(根据光线如何判断它们)。

现在我想知道是否有某种工具或调试实用程序可以让我拦截 Adob​​e 渲染的数据并以某种方式可视化法线(或至少获得数字)?我想如果我真的能看到法线的走向(如果它们确实指向正确的半球)那么它可能对我弄清楚如何正确编码数据有很大帮助。

我在 Windows 10 上并且有一个 nvidia 显卡 (GTX 970),Adobe 似乎使用 DirectX 9,我使用 Visual Studio 2012(但我也安装了 VS 2015 ,只是没有在我的项目中使用它(还),因为它似乎有非常高的内存占用)。

这是我的一个简单模型如何在 Adob​​e(紫色)和我的测试应用程序(顶部显示我的应用程序中的法线)中呈现的示例:

即使您从 Adob​​e 获取 vertex buffer,您也必须知道其格式才能提取 normals。所以对于这样的任务来说似乎太复杂了。 通过颜色猜测法线要快得多(假设颜色是 normallight direction 之间角度的直接比例)。

使用HSV颜色模型: 点值 (V):

  • N1: 58
  • N2: 54
  • N3: 15
  • N4: 27
  • N5: 14
  • N6: 18

使用这个值我们可以说:

  1. 使用的Adobe Shader的颜色与Normal不成正比。也许其他视觉风格会更好。
  2. N6~N5~N3。所以我会交换法线 N6N4.
  3. N4 有不同的颜色(可能值是错误的)。也许你必须将它们归一化。