游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2878|回复: 5

怎样把3D坐标转换成屏幕坐标?

[复制链接]

36

主题

102

帖子

155

积分

注册会员

Rank: 2

积分
155
QQ
发表于 2006-7-15 03:43:00 | 显示全部楼层 |阅读模式
我想在3D人物的头顶上显示它的名字,不管人物在屏幕的什么位置(或远或近),就好象时下流行的游戏中那样。
用了些代码,但好象不对:

( * iMesh )->GetPosition( &WordP );
DXUTGetD3DDevice()->GetViewport(&vp); // 取得视口
View = *g_Camera.GetViewMatrix();
Proj = *g_Camera.GetProjMatrix();
Word = *g_Camera.GetWorldMatrix();
                       
D3DXVec3Project(&ScreenP, &WordP, &vp, &amproj, &View, &Word);

int zx = int(ScreenP.x);
int zy = int(ScreenP.y);

CDXUTTextHelper txtHelper( g_pFont, g_pTextSprite, 15 );
txtHelper.Begin();
txtHelper.SetInsertionPos( zx , zy );
txtHelper.DrawFormattedTextLine( L"  man %d", i );
txtHelper.End();

好象ScreenP并不是屏幕坐标啊? [em4]

5

主题

217

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
发表于 2006-7-15 08:11:00 | 显示全部楼层

Re:怎样把3D坐标转换成屏幕坐标?

视口坐标不等于screen坐标.....还要做一次变换。

36

主题

102

帖子

155

积分

注册会员

Rank: 2

积分
155
QQ
 楼主| 发表于 2006-7-16 01:03:00 | 显示全部楼层

Re:怎样把3D坐标转换成屏幕坐标?

视口坐标向屏幕坐标,如何转换?

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2006-7-17 07:41:00 | 显示全部楼层

Re:怎样把3D坐标转换成屏幕坐标?

D3D 中经过投影变换后的规范视见体坐标系在 x:-1~1 y:-1~1 z: 0~1,所以要做从规范视见体坐标系到屏幕坐标系的转换。
int zx = ScreenWidth * ( 1+ScreenP.x) * 0.5;
int zy = -ScreenHeight *(ScreenP.y-1) * 0.5;

36

主题

102

帖子

155

积分

注册会员

Rank: 2

积分
155
QQ
 楼主| 发表于 2006-7-17 14:59:00 | 显示全部楼层

Re:怎样把3D坐标转换成屏幕坐标?

还是不对呀

36

主题

102

帖子

155

积分

注册会员

Rank: 2

积分
155
QQ
 楼主| 发表于 2006-7-25 22:29:00 | 显示全部楼层

Re:怎样把3D坐标转换成屏幕坐标?

结了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 00:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表