如何指定3D模型在屏幕中的位置???

draculamx 2008-12-09 04:01:17
我学会了把一个3D模型显示在我的窗口中,我学会了如何缩放它,如何旋转它,但。。。。

到今天我都不知道,怎么才能把它放到我想放的位置!!!!

三维坐标(X,Y,Z)如何与屏幕的二维坐标(X,Y)对应???

比如,我的游戏界面是800*600的,现在,我想放置一个3D模型在一个RECT中,

假设这个RECT:

rect->top=0

rect->left=0

rect->right=200

rect->bottom=100

我这时候在网上随便找了个图,PS了一下,还不懂我的意思的话,我就去高中补习语文。。。。

图在这里:


...全文
697 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
draculamx 2009-01-09
  • 打赏
  • 举报
回复
定义不同的viewport,渲染不同的3d模型??
意思是:根据定位的需要计算并且定义一个 viewport,渲染一个模型。要定位几个模型,就把这个过程执行几遍,是这样不??
我去试试
引力场变动源 2009-01-09
  • 打赏
  • 举报
回复
游戏里面的那个是这样实现的:
将3D模型渲染到一张纹理
利用GUI系统将纹理显示在屏幕的制定区域。

直接移动模型的话,可以对模型的世界矩阵进行平移变换,但是这个变换是在3D空间中进行的,不是屏幕的2D空间。
bxqlll 2009-01-06
  • 打赏
  • 举报
回复
up
book_haodaniu 2009-01-05
  • 打赏
  • 举报
回复
楼主,定义不同的viewport,渲染不同的3d模型
draculamx 2009-01-02
  • 打赏
  • 举报
回复
大家介绍的:通过视口(VIEW)来实现,和通过调整相机位置来实现,只适合显示一个3D模型的时候
假如我要在屏幕上多个不同的 RECT 中显示多个不同的3D模型,那又应该怎么办呢??
菜牛 2009-01-01
  • 打赏
  • 举报
回复
这个通过设置视口(View)来实现,也可以设置多个渲染目标(RenderTarget)。
ns22020426 2009-01-01
  • 打赏
  • 举报
回复
如果你用OpenGL做的游戏的话,可以用设置模型矩阵的方法调整位置!
zwqxin 2009-01-01
  • 打赏
  • 举报
回复
不明白你的RECT是什么意思.....他的意思应该是让你新建一个独立的视景体...
你说的情况本就该这样做,也就是把一个窗口分成几个部分,而不是用一个简单四边形代替
draculamx 2008-12-11
  • 打赏
  • 举报
回复
我晕,图是一把叉。。。。
再发图:
draculamx 2008-12-11
  • 打赏
  • 举报
回复
多谢大家~~~

“lumieru”兄弟的意思大概是叫我使用D3D中的“D3DXVec3Unproject”和 “D3DXVec3Project”函数吧。。。

不如我再发一张图吧:


当我们在D3D中绘制一个MESH模型时,要指定它的世界坐标:X,Y,Z 一个3D坐标,用来描述模型在3D世界中的位置。
现在,我要让这个模型,显示在我屏幕的某一块区域,而这个区域毫无疑问,是用2D坐标来描述的,就如同上面那个图的左上角的区域。
那么,问题来了,如何让这个模型显示在一个指定的2D区域中,并且大小合适呢???
lumieru 2008-12-10
  • 打赏
  • 举报
回复
其实一个屏幕的RECT映射到3d空间就是一个平头截体(Frustum,类似于视椎体),具体要通过你的projection矩阵和viewport变换的参数来计算,然后只要保证你的3d模型在这个平头截体中就可以了。还有DX应该有函数可以做clip的,让RECT外的东西不显示出来。
starytx 2008-12-10
  • 打赏
  • 举报
回复
mark
draculamx 2008-12-09
  • 打赏
  • 举报
回复
图貌似看不见啊,再发一个看看:
wxisoftstone2007 2008-12-09
  • 打赏
  • 举报
回复
程序中三维坐标和平面坐标应该关系,可以互相转化的.你搞清了你程序的坐标系了吗?

19,464

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧