1

我有一个能够在 OpenGL 上下文中解析和解释 OBJ 文件格式的程序。

我在 Blender 中创建了一个小项目,其中包含一个带有“头发”粒子的简单球体。

转换后(从球体中分离粒子)我的粒子形成一个新的网格。所以我的项目中有两个网格(名为“Sphere”和“Hair”)。当我想在 OBJ 文件(文件/导出/Wavefront (.obj))中导出网格“球体”时,选择“包含法线”,导出后,该文件包含有关法线的所有信息(例如:vn 0.5889 0.14501 0.45455, ...)。

当我尝试对粒子做同样的事情时,也选择“包含法线”,我在 OBJ 文件中没有法线。(在导出之前,我已经选择了正确的网格。)

所以,我不明白为什么不为类型粒子的网格导出法线属性。

这是我的头发颗粒的一般 Blender 渲染图。如您所见,所有粒子都会与光发生反应。所以 Blender 使用这些粒子的法线属性。

在此处输入图像描述

现在,上图显示(在 Blender 的“编辑模式”-> 转换后)粒子由几行组成。在我的 opengl 程序中,我使用 GL_LINES 来渲染相同的粒子。我只想拥有法线信息来管理我的粒子上的光属性。

在此处输入图像描述

您知道如何导出粒子网格的法线属性吗?

在此先感谢您的帮助。

4

1 回答 1

3

您正在尝试为线条提供法线。让我们想想这意味着什么。

当我们谈论表面上的法向量时,我们的意思是“指向表面之外”

表面法线

对于三角形,当我们将一侧定义为“正面”面时,正好有一个法线。对于线,任何垂直于线的向量都算作法线——有无限的,任何一个都会“做”。

我们关心图形中的法线的一些原因是什么?

  • 照明:例如,漫射照明通过使用法线与入射光矢量的点积来近似。不过这不适用于头发!
  • 得到一个变换矩阵:为此你可以选择任何法线(你想变换成头发空间吗?)

简而言之:您可以为您的法线选择任何垂直向量(这很容易计算),或者根本不为您的头发使用法线。这取决于你想要做什么。

于 2013-03-16T16:24:14.433 回答