如果我有一個文本和圖像的網格,如日曆視圖。如果我想讓整個網格躺下45度,並且仍然能夠響應手指點擊/滾動,該怎麼做?非常感謝!如何模擬2D 3D(放下)
-1
A
回答
2
好的,如果你在XNA中這樣做,你會想要使用廣告牌。恐怕我還沒有廣告牌需要,所以我不能給你具體細節,但像往常一樣,這是一個Riemers Tutorial。現在,具體而言,您希望擁有帶控件的互動廣告牌。如果你以前從未有過3D體驗,這將會很複雜。這裏就是你會想做什麼:
- 畫出你的控制,你通常會用SpriteBatch,但GraphicsDevice的的渲染目標設置到一個新的渲染目標提前,保存所/文本。有關更改rendertarget的文檔,請查看here。請記住在繪製控件後將其重新設置。
- 現在使用顯式轉換將RenderTarget轉換爲Texture2D:
Texture2D myTex = (Texture2D)myRenderTarget;
- 在廣告牌上繪製此紋理。
- 現在出現棘手的部分:您需要使用名爲「揀選」的技術來確定用戶點擊了3D空間中的哪個位置。應用程序中心有一些挑選教程,但它們適用於複雜的模型。由於廣告牌只使用一個有兩個三角形的平面,所以在這種情況下,它們將無法正確工作,這是您需要的。相反,我建議using Viewport.UnProject to pick on the plane。
從本質上講,您將需要一個良好的系統來跟蹤3D空間中廣告牌上的可點擊事件。如果你知道他們(我認爲我在微積分III中學到了這些),你可以使用平面方程。如果您只需要基本功能,您可以使用這些方程式僅跟蹤按鈕的中心,然後執行半徑測試以進行點擊,但這並不完全準確,除非您的按鈕是圓形。
如果您無法判斷,當您嘗試在3D世界中應用2D概念時,情況變得非常複雜。
4
有一個非常簡單的解決方案。 如果使用Expression Blend打開項目,一旦選擇了網格,轉到屬性選項卡,向下縮放到「變換」,應該有一個名爲「旋轉」的屬性,只需更改X:Y:Z:直到網格旋轉到您希望的樣子。它的行爲完全如你所期望的那樣。
這裏的XAML代碼:
<Grid.Projection>
<PlaneProjection RotationX="-43"/>
</Grid.Projection>
相關問題
- 1. 在2D中模擬3D空間
- 2. 如何模擬2D水面?
- 3. 如何創建3D模擬?
- 4. 將2D圖像,3D模型
- 5. 2D虛擬3D引擎/庫<canvas>
- 6. 模擬3D旋轉
- 7. 使C++模擬類與2D和3D矢量一起工作
- 8. 如何在XNA中獲取2D模型的3D模型?
- 9. 如何在開放模式下模擬後得到變量值?
- 10. Python lmfit:擬合2D模型
- 11. 在2D中模擬運動
- 12. 在3D上下文中繪製2D點
- 13. OpenGL的2D水模擬
- 14. 程序模擬3D頭
- 15. 如何下載模擬器?
- 16. 如何模擬按下ARC
- 17. 將3D模型轉換爲2D圖像
- 18. 將2D圖像轉換爲3D模型
- 19. 如何將2D轉換爲3D餅圖?
- 20. 如何在2D平面上投影3D?
- 21. Canvas使用2D和3D上下文的3D繪圖
- 22. 3D數學/ 2D旋轉計算:分割/切割3D模型?
- 23. 3D到2D匹配
- 24. Three.js - 2D + 3D網格
- 25. matplotlib 3d回到2d
- 26. 結合3D/2D圖
- 27. 如何模擬HTML5拖放和硒的webdriver下降的JavaScript
- 28. 如何釋放VSPACE在Android模擬器
- 29. 如何模擬呼叫開放 - uri
- 30. 如何模擬瀏覽器縮放
我想我寫的「XNA」的主題,但不知何故消失了。我一直在努力使用XNA或silverlight。但我覺得使用XNA更加舒服,因爲它非常簡單。 Silverlight可以動態地在網格中添加控件嗎?在網格控制中繪製文本和圖像?輪轉能動態變化嗎?可以處理網格內新增控件的點擊事件?請指教!非常感謝! – thsieh
不確定創建控件,因爲我自己沒有這樣做,但是是繪製文本和圖像,是的,以動態更改旋轉,不確定是否處理新創建的控件的事件。您是否嘗試過關於Silverlight控件的MSDN文章? –