2016-06-08 58 views
0

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

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

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

这是如何我的简单模型之一的Adobe(紫色),并在我的测试应用程序(显示在我之上的应用程序法线)呈现一个例子: enter image description here

回答

1

即使你抢vertex buffer从Adobe你必须知道它的格式来提取normals。所以对于这样的任务似乎太复杂了。 按颜色猜测法线的速度要快得多(假设颜色是normallight direction之间角度的直接比例)。

enter image description here

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

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

使用这个值,我们可以说:

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

感谢您的回复,是啊,我一直在测试一样,到目前为止,但问题是,我写的法线球面坐标的文件,限制为0 <披<π/ 2(同为theta)和(损失)编码成一个int16加上几个bool标志(x-inverted,y-inverted,normal-inverted),这些标志和他们期望的转换不太直观(规范实际上没有太大的帮助)。所以我必须要做的是以我认为可能是正确的方式对其进行编码,然后在Adobe中查看结果,看看它是否正确,所以我希望可能有某种方法来拦截渲染器 –

+0

然后尝试搜索对于'DirectX dll注入'(如果有DX :) :) –

+0

好的会寻找的,谢谢:) 我希望有可能有一些工具,让我可视化的法线,因此它会“重叠”它或某物,但我想这里没有任何东西。 –

相关问题