游戏开发论坛

 找回密码
 立即注册
搜索
查看: 6166|回复: 3

左手坐标系和右手坐标系

[复制链接]

30

主题

146

帖子

152

积分

注册会员

Rank: 2

积分
152
发表于 2009-4-9 21:08:00 | 显示全部楼层 |阅读模式
左手和右手的本质区别是什么呢?
一开始我以为左手和右手三角形顶点顺序是反的。今天我从3ds max中导模型时发现三角形顶点顺序是一样的,3ds用右手,我用左手。 思考后的结果是三角形的法线方向在左手和右手中是相同的。
比如有右手中三角形(-5, -5, 0), (-5, 5, 0), (5, 5, 0),它的法线方向始终是指向z轴负方向。
那问题又来了,使用
D3DXMatrixLookAtRH
D3DXMatrixPerspectiveFovRH
是需要将三角形顶点顺序反过来的。
思前想后,我得出的结论是,到d3d的流水线求解法线方向始终是按照左手求解的,因为根本就没有函数通知流水线说现在使用右手了啊。结果本该由流水线改变三角形顶点顺序做的事,变成了用户做了。
如果果真如此的话,那左手和右手就只有模型看起来会不一样而已了。比如如果固定左手和右手的y都为上,z都为内,那模型就会左右颠倒了。

请各位指教上述文字。

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-4-10 15:10:00 | 显示全部楼层

Re:左手坐标系和右手坐标系

左右手系和顶点的缠绕顺序是两个独立事件,没有必然联系。
但一般图形系统会选择让顶点缠绕方向和以三角面的法向量为轴的旋转的方向一致。所以DX的左手系系里,顺时针缠绕的顶点构成的三角形的正面(看到的面,也就是法向冲的方向)冲屏幕外。相反,右手系里,逆时针缠绕是正面。

就是说,缠绕方向决定了哪一面是正面,决定了法向冲哪个方向。但渲染管线并不求解法向,它只需要知道哪一面是正面,好做背向面裁剪,所以才会有CULL_CW,CULL_CCW的设定,指出是剪裁顺时针缠绕的面还是逆时针缠绕的面。

30

主题

146

帖子

152

积分

注册会员

Rank: 2

积分
152
 楼主| 发表于 2009-4-11 09:21:00 | 显示全部楼层

Re:左手坐标系和右手坐标系

谢谢qrli的回答。
左手和右手是独立的啊,我有点意识到,谢谢你的解惑。

7

主题

78

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2009-4-12 07:54:00 | 显示全部楼层

Re: Re:左手坐标系和右手坐标系

左、右手规则是针对于每个三角形的,如果某个三角形的顶点顺序与当前确定的CullMode一样,那么它就不会被渲染
qrli: Re:左手坐标系和右手坐标系

左右手系和顶点的缠绕顺序是两个独立事件,没有必然联系。
但一般图形系统会选择让顶点缠绕方向和以三角面...

另拜大虾,嘿嘿
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-20 14:17

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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