2011-05-26 97 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对象。原因是其中一部分表现不正确。