游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4928|回复: 5

有关“顶点法线”的基础概念问题

[复制链接]

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2011-6-9 22:21:00 | 显示全部楼层 |阅读模式
今天在看Direct3D的书中,看到“顶点法线”的章节,我猜测“顶点法线”可能是指在某一个点的切面穿越该点并与该切面垂直的虚线。但我随之想到的一个问题是,那么立方体的8个顶角点的法线是什么线呢?

22

主题

98

帖子

98

积分

注册会员

Rank: 2

积分
98
QQ
发表于 2011-6-9 23:49:00 | 显示全部楼层

Re:有关“顶点法线”的基础概念问题

仔细想想就明白了,对于自然界的立方体来说,它的表面可以看成包含无数个点,每个点的法线都和切面垂直,这样是对的。但是程序里只有八个点,其他地方是插值得来的,如果你的八个点都和切面垂直,插值后的那些法线就不垂直了,这样你保证了8个点的正确,却导致了无数个点的不正确。所以当模型是曲面时把法线平滑一下比较好,而当模型棱角分明时,就应该分成多个顶点,每个顶点的法线就是它所在的面的法线。

0

主题

398

帖子

577

积分

高级会员

Rank: 4

积分
577
发表于 2011-6-10 00:11:00 | 显示全部楼层

Re:有关“顶点法线”的基础概念问题

立方体的8个顶点其实被储存为24个顶点,同一侧面的四个顶点位置不同法线相同,也等于这个侧面的面法线;
换句话说,每个顶点被拆成三个,分别对应相邻三个面并单独储存(顶点+法线).
3DMax中,如果你把6个面(12个三角形)的平滑组改成同一组,那么在数据储存上就变成真正的8个顶点了,这时相当于在一个球面均匀采样8个顶点,用这8个顶点组成的"类立方体"来逼近球体

不知道怎么上传图片,本来做了个图用来说明的....

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2011-6-10 00:18:00 | 显示全部楼层

Re:有关“顶点法线”的基础概念问题

谢谢楼上的两位朋友,有点明白了

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2011-6-11 03:28:00 | 显示全部楼层

Re:有关“顶点法线”的基础概念问题

为了方便,以顶点法线代替面法线。
如果点被重复用于多个面,那么,如果模型比较精细(准确地说是,各面之间角度差都较小),不会有问题。
否则的话,应当不用index(为各面定义重复的点)。

对于立方体,如果使用了index,并且它只有8个顶点,那肯定怎么弄都不对,但就算你增加立方体的精细度也不行,拐角部分的光照将不正确。

1

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2011-7-24 11:17:00 | 显示全部楼层

Re:有关“顶点法线”的基础概念问题

看了楼上几位大大的帖子,我顿感知识大增啊,呵呵,对顶点缓存和索引缓存有了新的认识。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-8 12:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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