首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XNA相机场景大小

XNA相机场景大小
EN

Stack Overflow用户
提问于 2012-06-12 22:01:14
回答 1查看 924关注 0票数 0

我似乎想不通这件事。所以摄像机观察的是(0,0,0)处的世界,位置是(0,0,5.0f)。假设屏幕分辨率为800x600。现在,由于世界的中心是(0,0,0),那么摄像机可以看到的极点(比如x轴上的右侧)是什么?

如果相机定位在(0,0,50.0f),值是多少?基本上,我该如何解决这个问题呢?

代码语言:javascript
复制
+-------------------+
|         |         |
|         |         |
|         |         |
+---------+---------¤ <-- what's the x-value of this point?
|         |         |
|         |         |
|         |         |
+-------------------+
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-12 22:23:56

如果我没理解错的话,你想知道屏幕右中点的世界空间位置吗?

这实际上在XNA中很容易做到(感谢MS!),您可以使用viewport类将屏幕空间位置“取消投影”到世界空间。

基本上,游戏中绘制的每个像素都经过几次转换,将其转换为2D图像,可以在2D显示器上绘制,您也可以向后运行这些转换,XNA有一个方法可以做到这一点。

代码语言:javascript
复制
Vector3 screenLocation = new Vector3(GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height / 2, 0);
Vector3 worldLocation = GraphicsDevice.Viewport.Unproject(screenLocation, camera.ProjectionMatrix, camera.ViewMatrix, camera.WorldMatrix);

编辑:

如果要查看摄影机视图中的对象是否可以绘制,可以使用边界平截体进行测试。

代码语言:javascript
复制
BoundingFrustum frustum = new BoundingFrustum(camera.WorldViewProjectionMatrix);

锥体包含一个名为Intersects的方法,该方法有相当多的重写来测试边界框之类的东西是否在锥体内部。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10998288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档