游戏开发论坛

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

已知一个三角形的顶点,怎么写它的法线

[复制链接]

7

主题

11

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2005-6-28 17:56:00 | 显示全部楼层 |阅读模式
已知一个三角形的顶点,怎么写它的法线
比如:
verts[0].Position = new Vector3(0.0f, 2.0f, 0.0f);
verts[1].Position = new Vector3(-1.0f, 0.0f, -1.0f);
verts[2].Position = new Vector3(1.0f, 0.0f, -1.0f);

0

主题

10

帖子

10

积分

新手上路

Rank: 1

积分
10
发表于 2005-6-30 18:07:00 | 显示全部楼层

Re:已知一个三角形的顶点,怎么写它的法线

法线主要用来计算光照,如果不做光照的话,也可以不用.
一般都取方向与三角形所在平面的法线相同,模为一的矢量.
设三角形的三个点为O,P,Q,则可以取三个法线都为normalize(+cross(O-P,O-Q)),或normalize(-cross(O-P,O-Q)),其中:"-"(减号)得到边的方向;"cross"为叉乘,求两边的公垂线;"normalize"为归一化,可以不要;至于cross前的正负,就看你需要哪一面作为主要的可视面(根据左手定则判断cross后的结果的方向).
normalize,cross,"-"(op_subtraction)是Microsoft.DirectX namespace下Vector3 Structure中的method.
另外如果某一个顶点为n个三角形所公共,则最好的做法是:将这n个三角形所在面的法线作和然后normalize作为这个定点的法线.
当然主要还是看具体要什么效果.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 06:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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