CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  游戏开发

关于平移物体的问题.

楼主miman_123(弥漫の香)2006-03-05 22:07:16 在 专题开发/技术/项目 / 游戏开发 提问

D3DXMatrixTranslation(&matWorld,-12.0f,   0.0f,   0.0f);  
  g_pD3DDevice->SetTransform(D3DTS_WORLD,   &matWorld);  
  这样就可以移动了。  
  我不明白的是窗口大小500*500,我将X设置为-12  
  这个正方形却移动到屏幕中间靠底部的边缘上,  
  请问这个设置是按照什么来计算的?  
  将x加1.0正方形就移动自身的一半高度,那我如何才能准确的将这个正方形移动到屏幕的最底下不多也不少?  
  按照什么来衡量或计算?  
  谢谢各位! 问题点数:50、回复次数:6Top

1 楼Bobby136()回复于 2006-03-06 09:26:17 得分 0

这个还与你的view矩阵,proj矩阵和渲染状态有关啊Top

2 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-06 10:28:06 得分 50

你设置的是world矩阵  
  物体在世界坐标系下的移动,和屏幕上具体显示的位置之间的关系不是那么简单的  
  如同楼上说道还涉及到   相机矩阵(view   matrix)和投影矩阵(PROJECT   matrix)  
   
  world   matrix控制的只是物体在世界坐标系下的摆放的位置,好比一个房间  
  view   matrix控制的是相机在世界坐标系下的位置和方向,从而决定了取景的范围  
  project   matrix控制的是相机取景范围内的内容,如何在屏幕上显示  
   
  Top

3 楼miman_123(弥漫の香)回复于 2006-03-06 11:29:51 得分 0

D3DXMATRIX   matWorld;  
  D3DXMatrixIdentity(   &matWorld   );  
  D3DXMatrixTranslation(   &matWorld,12.0f,   0.0f,   0.0f   );  
  g_pD3DDevice->SetTransform(D3DTS_WORLD,   &matWorld);  
   
  /////////////////////////////////////////////////////////////////  
  D3DXMATRIX   matView;  
  D3DXMatrixLookAtLH(&matView,   &D3DXVECTOR3(0.0f,   0.0f,-30.0f),   //Camera   Position  
                                                                    &D3DXVECTOR3(0.0f,   0.0f,   0.0f),   //Look   At   Position  
                                                                    &D3DXVECTOR3(0.0f,   1.0f,   0.0f));   //Up   Direction  
  g_pD3DDevice->SetTransform(D3DTS_VIEW,   &matView);  
  /////////////////////////////////////////////////////////////////  
   
  D3DXMATRIX   matProj,matProjX;  
  D3DXMatrixPerspectiveFovLH(&matProj,   D3DX_PI/4,   640.0f/480.0f,   1.0f,   500.0f);  
  g_pD3DDevice->SetTransform(D3DTS_PROJECTION,   &matProj);  
   
  上次是因为D3DXMatrixLookAtLH的上方向设置错了所以X轴变成向下了.  
  现在照相机放在了原点 z轴-30的地方  
  眼睛也在原点不动  
   
  我现在想做的是 眼睛,摄象机都保持在原点不动,就像是一个2D平面一样,而我想把这个定义在原点中心的正方形移动到视口中的某个点不能超出视口,而这个视口也就是我的窗口大小640*480  
  而网上查资料都说  
  D3DXMatrixTranslation(   &matWorld,12.0f,   0.0f,   0.0f   );  
  是在X轴上移动12个单位,那我如何能知道在我的视口范围类x轴上存在多少个单位?  
  难道3D坐标里面就没有界限之分吗?Top

4 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-06 12:13:12 得分 0

影响屏幕位置的不仅仅是这两个矩阵  
  还有投影矩阵,你如果要达到2d的方式一样,就要使用Ortho这个正交投影方式  
   
   
  资料上说的x移动的单位是在世界坐标系下的  
  你要是实现的是屏幕坐标系下的,因此必须在正交投影方式下才可以实现Top

5 楼miman_123(弥漫の香)回复于 2006-03-06 18:00:12 得分 0

正交投影,会忽略Z值 原处的物体不会变小了  
  那么我要使物体像3D里面一样旋转可以吗?Top

6 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2006-03-06 19:28:22 得分 0

可以旋转,但是在视觉效果上和透视投影的效果不同  
   
  正交投影下,屏幕上不同部分之间的距离师等比的  
  透视投影下不同,中间的距离短,周边的距离大Top

相关问题

  • 在基于单文档的OpenGL框架中,怎样用鼠标实现物体的平移,旋转,缩放功能?
  • 三维物体
  • 如何实现图片的放大缩小平移操作?
  • 图形的放大和缩小及平移
  • 求未知旋转中心的旋转/平移公式
  • 如何实现图片用鼠标拖动平移的效果!???
  • CxImage类有没有实现图像平移的函数?
  • 请教加快GDI+显示,平移,缩放的方法(再发)
  • 请问怎么实现label上字符的平移效果?
  • 在Web下如何放大缩小,平移JPG格式图片?

关键词

  • 矩阵
  • 物体
  • 屏幕
  • 移动
  • 控制
  • view
  • d3
  • matworld
  • 正交投影
  • matview

得分解答快速导航

  • 帖主:miman_123
  • happy__888

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo