【发布时间】:2012-12-14 08:11:06
【问题描述】:
我正在将 2d 精灵绘制到 3d 场景中。目前我正在将一个 3d 点投影到视口上,并将其用作绘制精灵的位置。问题是缩放精灵:显然,我希望图像在 3d 场景中越远越小。我该怎么做?
【问题讨论】:
我正在将 2d 精灵绘制到 3d 场景中。目前我正在将一个 3d 点投影到视口上,并将其用作绘制精灵的位置。问题是缩放精灵:显然,我希望图像在 3d 场景中越远越小。我该怎么做?
【问题讨论】:
通用技术称为billboarding。您在 3d 世界空间中创建一个 2d 多边形,并安排其法线始终指向观察者。这是广告牌。所需的变换只是围绕垂直轴的模型旋转,该轴穿过多边形的“自然”中心(例如树的树干或怪物的腿)。然后使用精灵图像对多边形进行纹理化,为透明区域设置 alpha = 0。缩放自然而然。
这通常用于非常复杂但往往位于背景中的对象(如树木和怪物),因此使用固定 2d 图像引入的不准确性不会很明显。
【讨论】:
使用透视投影代替正交投影
【讨论】:
BasicEffect 传递给SpriteBatch.Begin 来做到这一点。
另一种选择是使用在 3d 空间中渲染的带纹理的四边形,并使用精灵图像对其进行纹理化,同时在广告牌上进行对齐。
【讨论】: