游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2777|回复: 7

Dx9的camera坐标变换引起失真??

[复制链接]

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
发表于 2004-11-28 21:11:00 | 显示全部楼层 |阅读模式
rt
我把dx9的教程3:Matrices,修改了一下。出现了如题的问题,失真情况我附加了一个图片
修改的代码:
一:
    // Set up the rotation matrix to generate 1 full rotation (2*PI radians)
    // every 1000 ms. To avoid the loss of precision inherent in very high
    // floating point numbers, the system time is modulated by the rotation
    // period before conversion to a radian angle.
    //UINT  iTime  = timeGetTime() % 1000;
        UINT iTime=0;
作用:固定世界
二:
    // a point to lookat, and a direction for which way is up. Here, we set the
    // eye five units back along the z-axis and up three units, look at the
    // origin, and define "up" to be in the y-direction.
        dMyTime+=1e-2;
        if (dMyTime>2) dMyTime=0.5f;
        D3DXVECTOR3 vEyePt( 0.0f, 3.0f*dMyTime,-5.0f );
本意:让eye的坐标在y轴上(1.5,6.0)之间移动
教程中的三角形是以原点为三心的正三角形
dMyTime是我定义的全局double(为了省事……嘿嘿),初始化为1.0f;
但是出现了失真的问题:eye移动后三角形不是正三角形了…………
sf_20041128211137.gif

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-11-28 21:38:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

可能跟透视矩正有关

那个视截体纵横比

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
 楼主| 发表于 2004-11-28 22:01:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

那为什么原来的程序中没这个问题呢?

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-11-28 22:02:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

那就不清楚了

要看你改了什么地方了

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
 楼主| 发表于 2004-11-28 22:15:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

我知道了……是
D3DXVECTOR3 vEyePt( 0.0f, 3.0f*dMyTime,-5.0f );
第三个参数不对…………设为-1.0后更明显……但是到底是为什么呢??困惑……怎么改都不行啊……

7

主题

33

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2004-11-29 12:31:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

你在Y轴上有位移当然会变形,如果你设Z为0,那就显示成一条线了。

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
 楼主| 发表于 2004-12-4 21:04:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

回去之后想了一下,发现自己犯了如下的错误:
1。例子中的三角形不是正三角形
2。我在y轴上移动eye,而eye的z坐标不为零;
3。三角形在xy平面上

但是,我改过之后更困惑了
改过后的代码:
        dMyTime+=1e-2;
        if (dMyTime>2) dMyTime=0.5f;
        D3DXVECTOR3 vEyePt( 0.0f, 0.0f,5.0f*dMyTime );
eye设为xy坐标均为零,在z轴上移动,但是……我什么也看不到了……
现在是只要y轴为0我就什么都看不到了…………

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
 楼主| 发表于 2004-12-5 11:23:00 | 显示全部楼层

Re:Dx9的camera坐标变换引起失真??

问题已经得到解决……
    D3DXVECTOR3 vUpVec( 0.0f, 1.0f, 0.0f );
这一句我原来改成了
    D3DXVECTOR3 vUpVec( 0.0f, 0.0f, 1.0f );
所以什么都看不到了……
另:6楼说的一条直线应该是不会存在的(我没试),但是如果真的有1条直线的话,我修改后的程序就不会什么都看不见……
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 13:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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