我正在爲我製作的遊戲編寫一個類似於Blender的3d建模器。由於像攪拌機這樣的程序會輸出非常複雜的文件類型和大量不需要的數據,因此我想爲我的遊戲編寫一個簡單的編輯器。我無法弄清楚的是,如何將窗口上的2D投影映射到3D世界中被點擊的位置,以及旋轉的世界。將2D窗口點轉換爲3D點
如果有人知道如何做到這一點或方法的任何好教程,將不勝感激。我知道我可以使用光線追蹤,但這會讓我覺得很複雜。
我正在爲我製作的遊戲編寫一個類似於Blender的3d建模器。由於像攪拌機這樣的程序會輸出非常複雜的文件類型和大量不需要的數據,因此我想爲我的遊戲編寫一個簡單的編輯器。我無法弄清楚的是,如何將窗口上的2D投影映射到3D世界中被點擊的位置,以及旋轉的世界。將2D窗口點轉換爲3D點
如果有人知道如何做到這一點或方法的任何好教程,將不勝感激。我知道我可以使用光線追蹤,但這會讓我覺得很複雜。
鼠標採摘的兩個主要方法是:
相交測試是比較受歡迎的,在最簡單的層次包括「拍攝'射出光線並檢查它是否與任何點相交。如果想要實現更靈敏的拾取(對於選擇頂點上的點很有用),該射線也可以被多面體替換。
顏色採集涉及禁用AA,混合,陰影等,並使用物體的純色重新繪製場景。然後使用glReadPixels在鼠標的位置查找顏色,並使用該顏色確定是否點擊了適用的對象。
雷採摘:
顏色採摘:
您要查找的術語是mouse picking。
您需要的方法是gluUnProject。你需要窗口x,y和深度。
我認爲,就你而言,爲Blender編寫一個簡單的導出器可能會容易得多。
Blender自己的文件格式當然是相當複雜的。但是對於Blender來說,編寫習慣文件導入器/導出器非常容易。我只是這樣做,而不是重新創造一個相當複雜的車輪。 – datenwolf