【问题标题】:XNA — Drawing a 2d sprite in a 3d sceneXNA — 在 3d 场景中绘制 2d 精灵
【发布时间】:2012-12-14 08:11:06
【问题描述】:

我正在将 2d 精灵绘制到 3d 场景中。目前我正在将一个 3d 点投影到视口上,并将其用作绘制精灵的位置。问题是缩放精灵:显然,我希望图像在 3d 场景中越远越小。我该怎么做?

【问题讨论】:

    标签: graphics 3d xna


    【解决方案1】:

    通用技术称为billboarding。您在 3d 世界空间中创建一个 2d 多边形,并安排其法线始终指向观察者。这是广告牌。所需的变换只是围绕垂直轴的模型旋转,该轴穿过多边形的“自然”中心(例如树的树干或怪物的腿)。然后使用精灵图像对多边形进行纹理化,为透明区域设置 alpha = 0。缩放自然而然。

    这通常用于非常复杂但往往位于背景中的对象(如树木和怪物),因此使用固定 2d 图像引入的不准确性不会很明显。

    【讨论】:

      【解决方案2】:

      使用透视投影代替正交投影

      【讨论】:

      • 应该添加:您可以通过将带有适当投影矩阵的BasicEffect 传递给SpriteBatch.Begin 来做到这一点。
      【解决方案3】:

      另一种选择是使用在 3d 空间中渲染的带纹理的四边形,并使用精灵图像对其进行纹理化,同时在广告牌上进行对齐。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多