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

时间:2016-06-08 04:01:53

标签: nvidia directx-9

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

现在我想知道是否有某种工具或调试工具让我拦截数据,因为它是由Adobe呈现的,并以某种方式可视化法线(或至少得到数字)?我想如果我能够真正看到法线的走向(如果它们确实指向了正确的半球)那么它可能会帮助我找到如何正确编码数据。

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

这是我的一个简单模型如何在Adobe(紫色)和我的测试应用程序(在我的应用程序中显示法线)的示例: enter image description here

1 个答案:

答案 0 :(得分:1)

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

enter image description here

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

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

使用这个值我们可以说:

  1. 使用过的Adobe Shader颜色不是Normal的正比例。也许其他视觉风格会更好。
  2. N6N5N3。所以我会交换法线N6N4
  3. N4有不同的颜色(可能值不对)。也许你必须将它们标准化。