2011-05-26 99 views
2

在我最近的瘋狂項目中,我試圖創建一個3D策略類遊戲的視圖。它是3D的,所以視圖的主要部分是Viewport3D。其中,單位有幾個Model3Ds。事情是,我想交互式地使用3D視圖(例如通過逐個點擊單位來選擇單位),所以我用ContainerUIElement3Ds包裹了我的模型。起初在我看來,只有少數模型,但後來可能會有更多模型,所以我不想將它們硬編碼到視圖中。我的第一個方法是創建一個包含一個模型並處理交互的Control,但是這個計劃似乎失敗了,因爲ContainerUIElement3D是密封類,並且Model3D無法捕獲我需要的事件。作爲WPF控件的3D模型

那麼我該如何解決這個問題呢?

回答

0

我能想到的兩種常用的方法:在3D

  1. 使用真正的互動元素與命中測試

兩種方法

  • 使用簡單的圖形元素具有價值,它給你如果滿足您的需求。

    只要知道可以使用真正的交互式元素作爲高級技術就是有價值的信息。這裏有一個起點,爲您的研究進入這個領域:

    本文介紹的ItemsControl但是會更進一步,你問。這些概念對您和您在該網站上找到的其他文章鏈接都很重要。

    命中測試圖形元素並渲染所有交互性的蠻力方法聽起來令人望而生畏,但對於遊戲而言,您通常需要完全控制元素。你可能有自己的計劃來渲染選定的項目等與抽象的顏色或光暈。

    有說,一個按鈕的基礎設施,並不複雜,你可以實現點擊和鼠標的處理,只需幾個代碼直接與矩形或立方體工作。如果這個「自己動手」的方法對你來說聽起來不錯,你所需要的只是3D打擊測試。這裏有一個文章,讓你開始:

  • 0

    WPF 3D並不適合複雜的遊戲。 但是...... 有兩種方法(如裏克Sladkey注意到),以獲得交互行爲:

    1. 從UIElement3D繼承 - VisualTreeHelper使用(命中例如測試) -
    2. 繼承ModelVisual3D互動的全力支持

    所以,你的單位是這個類(第1頁或2)你的單位的 這筆交易是3D複雜的實例。 如果他們有簡單的網格和不那麼堅硬的材料,你會感到自由的單位數量,直到1000-2000甚至更多。

    enter image description here

    簡單的材料,重量輕的網格和從UIElement3D繼承。 但場面成爲enter image description here硬一點,如果我們改變材料...

    意見

    繼承UIElement3D

    諮詢

    如果可能的話,請不要使用3party庫用手寫代碼寫3D對象。原因是其中一部分表現不正確。