找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
楼主: 0xAA55

【3D】用VB教你最基础的3D图形知识

  [复制链接]
发表于 2016-3-2 00:31:04 | 显示全部楼层
楼主,请教个问题,观察矩阵是不是包含摄像机的坐标? 为什么我通过pDevice->GetTransform(D3DTS_VIEW, &view);,得到的矩阵都是1和0
回复 赞! 靠!

使用道具 举报

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

是的。但是这是摄像机的坐标和旋转的逆矩阵。
回复 赞! 靠!

使用道具 举报

发表于 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]区间的(超出屏幕范围的可能超过这个区间)然后把它的值变换到[0,1]区间并乘以你屏幕的分辨率(注意把Y的值从[-1,1]换到[0,1]区间的时候Y值要取负)。得到的值就是这个顶点在屏幕中的坐标。怎么样?是不是发现异常简单?
这句话有点不理解,之前看了几篇关于坐标转换的文章, 360截图20160306133422260.jpg ,感觉楼主讲的和这个很类似,但是又理解不了。
1.png
回复 赞! 靠!

使用道具 举报

发表于 2016-3-8 05:19:42 | 显示全部楼层
看看学习下
回复 赞! 靠!

使用道具 举报

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

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

使用道具 举报

发表于 2016-5-25 20:27:23 | 显示全部楼层
学习~ 学习~
回复 赞! 靠!

使用道具 举报

发表于 2017-3-8 10:07:32 | 显示全部楼层
看一看线代
回复 赞! 靠!

使用道具 举报

发表于 2017-3-23 09:42:12 | 显示全部楼层
看看!!!!!
回复

使用道具 举报

发表于 2017-4-24 14:18:23 | 显示全部楼层
学习学习 看看
回复 赞! 靠!

使用道具 举报

发表于 2017-5-5 22:10:35 | 显示全部楼层
查看源码,学习学习!
回复 赞! 靠!

使用道具 举报

发表于 2017-5-19 09:27:49 | 显示全部楼层
完全是膜拜在
回复 赞! 靠!

使用道具 举报

发表于 2017-6-13 15:13:16 | 显示全部楼层
果然还是对 数学有一定要求
回复 赞! 靠!

使用道具 举报

发表于 2017-7-24 02:17:52 | 显示全部楼层
虚心学习
回复

使用道具 举报

发表于 2017-7-24 05:36:51 | 显示全部楼层
先加复一下看看下载的东西.
回复 赞! 靠!

使用道具 举报

发表于 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 | 显示全部楼层
厉害
回复

使用道具 举报

发表于 2017-11-12 20:39:04 | 显示全部楼层
666666666666666666666666
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-24 07:09 , Processed in 0.028018 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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