whm630987633 发表于 2016-3-2 00:31:04

楼主,请教个问题,观察矩阵是不是包含摄像机的坐标? 为什么我通过pDevice->GetTransform(D3DTS_VIEW, &view);,得到的矩阵都是1和0

0xAA55 发表于 2016-3-2 11:22:05

whm630987633 发表于 2016-3-2 00:31
楼主,请教个问题,观察矩阵是不是包含摄像机的坐标? 为什么我通过pDevice->GetTransform(D3DTS_VIEW, &vi ...

是的。但是这是摄像机的坐标和旋转的逆矩阵。

whm630987633 发表于 2016-3-6 13:18:48

本帖最后由 whm630987633 于 2016-3-6 13:36 编辑

0xAA55 发表于 2016-3-2 11:22
是的。但是这是摄像机的坐标和旋转的逆矩阵。

楼主,我在编写一个游戏插件,在3D游戏人物旁边显示血条,但是我现在拿到了人物的坐标,要把他的坐标转换到屏幕坐标。
bool WorldToScreen(LPDIRECT3DDEVICE9 pDevice, D3DXVECTOR3 *InOut)
{
        D3DXVECTOR3 vScreen;
        D3DXVECTOR3 PlayerPos(InOut->x, InOut->y, InOut->z);
        D3DVIEWPORT9 viewPort = { 0 };
        D3DXMATRIX projection, view, world;
        pDevice->GetTransform(D3DTS_VIEW, &view);
        pDevice->GetTransform(D3DTS_PROJECTION, &projection);
        pDevice->GetTransform(D3DTS_WORLD, &world);
        pDevice->GetViewport(&viewPort);
        D3DXVec3Project(&vScreen, &PlayerPos, &viewPort, &projection, &view, &world);
        if (vScreen.z < 1.0f && vScreen.x > 0.0f && vScreen.y > 0.0f && vScreen.x < viewPort.Width && vScreen.y < viewPort.Height)
        {
                *InOut = vScreen;
                return true;
        }
        return false;
}
这是我的方法,但是转换出来的坐标总是不对,我提供一个0,0,0的坐标,他转换出来有好几千大的数字。

我刚上高中,C和数学学的都很吃力,最近在啃2本书,看了楼主的教程很有收获,但是实际操作上面又无从入手。
将这个顶点的X、Y值除以这个顶点的Z值,得到的X、Y对应屏幕上的坐标是[-1,1]区间的(超出屏幕范围的可能超过这个区间)然后把它的值变换到区间并乘以你屏幕的分辨率(注意把Y的值从[-1,1]换到区间的时候Y值要取负)。得到的值就是这个顶点在屏幕中的坐标。怎么样?是不是发现异常简单?
这句话有点不理解,之前看了几篇关于坐标转换的文章,,感觉楼主讲的和这个很类似,但是又理解不了。

476089178 发表于 2016-3-8 05:19:42

看看学习下

0xAA55 发表于 2016-3-8 18:48:48

whm630987633 发表于 2016-3-6 13:18
楼主,我在编写一个游戏插件,在3D游戏人物旁边显示血条,但是我现在拿到了人物的坐标,要把他的坐标转换 ...

刚上高中啊,不错。
我是在高二的时候开始研究3D图形学的。

3dvr 发表于 2016-5-25 20:27:23

:) 学习~ 学习~

NTFS--迷幻矩阵 发表于 2017-3-8 10:07:32

看一看线代

冰不孤独 发表于 2017-3-23 09:42:12

看看!!!!!

Jerry 发表于 2017-4-24 14:18:23

学习学习 看看

yxyfy 发表于 2017-5-5 22:10:35

查看源码,学习学习!

驰援杀死 发表于 2017-5-19 09:27:49

完全是膜拜在

Tomoaki 发表于 2017-6-13 15:13:16

果然还是对 数学有一定要求

a4454962 发表于 2017-7-24 02:17:52

虚心学习

oshi 发表于 2017-7-24 05:36:51

先加复一下看看下载的东西.

cxx 发表于 2017-10-16 12:20:43


感谢大神,在此学习了。

二十六 发表于 2017-10-18 11:10:43

谢谢分享

阿呆在上海 发表于 2017-10-23 18:22:19

好好学习,天天向上

机械机械 发表于 2017-11-2 18:35:45

学习学习 多谢多谢

机械机械 发表于 2017-11-2 18:47:30

厉害 :):)

langzhe 发表于 2017-11-12 20:39:04

666666666666666666666666
页: 1 2 [3] 4 5 6
查看完整版本: 【3D】用VB教你最基础的3D图形知识