计算球体的顶点法线。

7

我想知道如何从我的缓冲区中获取每个球体的顶点,并单独计算每个球体的法线。在OpenGL中是否有可能实现?

1个回答

20

OpenGL通常用于渲染网格,而不是计算它们。法线是网格数据的一部分。通常由网格的构建者提供法线。

对于一个球体而言,正常向量非常容易计算得到。对于球体上给定的向量位置P,其圆心为C,法线是norm(P - C),其中norm将向量归一化。


2
@TrtTrt:那这样计算就更容易了,是吗? - Nicol Bolas
2
@TrtTrt 确保您完全理解法线的概念及其应具备的属性。然后确保您完全理解Nicol计算球体法线的解决方案以及其原理。然后再次思考,如果球心为(0,0,0),是否会出现概念上或数学上的问题。最后接受并点赞这个完美正确的答案。 - Christian Rau
2
@TrtTrt:你不能画法线。你可以画三角形;你可以画直线。你可以画指向法线方向的直线,但这不是自动发生的。你必须亲自实现它。无论哪种情况,这都是一个完全不同的问题,所以你应该提出那个问题。 - Nicol Bolas
@TrtTrt 所以你不仅想画一个发光的球体,还想可视化它的法线。为什么要让OpenGL自动完成呢?你需要从法线中生成一组顶点,然后只需使用这些生成的顶点绘制一组线条。这些线条应该有v作为一个点,v+a*n作为另一个点,其中v是球体顶点,n是其法线,而a是某个常数,取决于你想要线条有多大。 - Christian Rau
@NicolBolas 基本上我想计算出表面法线方向,并增加我的线框球绘图,短线表示每个顶点的法线方向。好的,我理解错了。所以我应该将每个表面补丁视为一个平面,然后计算并绘制它的法线,对吗? - Trt Trt
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接