游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1958|回复: 1

顶点光照计算可以在 world space 做嘛?

[复制链接]

14

主题

40

帖子

45

积分

注册会员

Rank: 2

积分
45
发表于 2007-6-21 13:14:00 | 显示全部楼层 |阅读模式
顶点光照计算可以在 world space 做嘛?

OpenGL 和 D3D 的顶点光照计算都是在 view space 做。但是顶
点坐标和光源位置与方向则是在object/model/world space 指定。
这样在进行光照计算之前就需要把相应的位置,向量变换到view
space。如果在 model space 做光照计算,则可以避免这些坐标变
换工作。

但是在 D3D SDK 里面指出,如果在 model space 进行光照计算,则
model space -> view space 的变换矩阵必须是正交的(orthogonal),
为什么有这个需求?我的想法是只要 model_view 变换是刚体变换
(由平移和旋转矩阵组合而成)就可以了,因为光照计算的结果是与
坐标系的选择无关的。

在 OpenGL 里面 model view 变换可以不是刚体变换(glScale, glShear etc),
这种情况下看来是不能在 model space 做光照计算了。但是,如果 model view
不是刚体变换,而光源的位置和方向又是同样在 model space 指定,在顶点坐
标光源位置参数同时经过了非刚体的 model view 变换到 view space 后,这样
的光照计算还有意义吗?这里光源的位置和方向也经过了一个非刚体的变换啊。
反过来说,假如这样正确的话,那在 model space 做光照计算又有何不可呢?

我想肯定正确的方法是首先做非刚体的 model 变换到 world space,然后做刚
体的 view 变换。顶点坐标在 model space 指定,光源位置和方向在 world space
指定。这样不管是在 view space 还是在 world space 做光照计算都正确。

32

主题

108

帖子

108

积分

注册会员

Rank: 2

积分
108
发表于 2007-6-21 15:08:00 | 显示全部楼层

Re:顶点光照计算可以在 world space 做嘛?

我觉得按你的想法,在model space做光照计算不见得比转换到view space后做计算要节省多少开销。模型从model space转换到view space是必不可少的。在model space里给模型指定的一个光源(假定一个模型一个光源)转换到view space也要不了多少开销,为什么不都转换到view space之后再做计算呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-26 02:01

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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