我正在制作一个实时策略游戏,我需要在基于立体体素的地形上绘制选择矩形,我该怎么做?我知道有些RTS只是简单地使用简单的2d / hud / gui / on screen方法,但我真的很喜欢魔兽争霸3在地形上的表现。
大家,这不是关于采摘,这是关于在多个不同块的不平坦表面上渲染矩形。类似于魔兽争霸3:世界编辑器中的网格呈现方式! http://press2reset.com/wp-content/uploads/2012/02/Warcraft3WorldEditorScreen.jpg
答案 0 :(得分:0)
听起来您想要找到所选3d空间的屏幕空间。
如果是这种情况,则“拣选”将找到您点击的3d点,然后执行正常MVP * pickedPoint
进入剪辑空间,除以w
,最后乘以窗口宽度和身高,即:
vec4 clipSpacePt = ModelviewProjection * pickedPoint
clipSpacePt.xyz /= clipSpacePt.w;
vec2 windowSpacePt;
windowSpacePt.x = clipSpacePt.x * windowWidth;
windowSpacePt.y = clipSpacePt.y * windowHeight;
为第一个拾取点以及光标所在的位置执行此操作以获取“投影选择矩形”。