2016-06-08 57 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

好的會尋找的,謝謝:) 我希望有可能有一些工具,讓我可視化的法線,因此它會「重疊」它或某物,但我想這裏沒有任何東西。 –

相關問題