我有一个能够在OpenGL上下文中解析和解释OBJ文件格式的程序。
我在Blender中创建了一个小项目,其中包含一个带有'Hair'粒子的简单球体。
转换后(从球体中分离粒子),我的粒子形成一个新的网格。所以我的项目中有两个网格(名为'Sphere'和'Hair')。当我想在OBJ文件(File / export / Wavefront(.obj))中导出网格'Sphere'时,选择'include Normals',导出后,该文件包含有关法线的所有信息(例如:vn 0.5889 0.14501 0.45455, ...)。
当我尝试用粒子做同样的事情时,也选择'include Normals',我在OBJ文件中没有法线。 (在导出之前,我选择了正确的网格。)
因此,我不会解释为什么不为粒子类型的网格导出法线属性。
以上是我的头发颗粒的一般Blender渲染。如你所见,所有颗粒都与光反应。因此Blender使用法线属性来制作粒子。
现在,上图显示(在Blender'编辑模式' - 转换后>>,粒子由几行组成)。在我的opengl程序中,我使用GL_LINES来渲染相同的粒子。我只想获得法线信息来管理我的粒子上的光属性。
您是否知道如何导出粒子网格的法线属性?
提前感谢您的帮助。
答案 0 :(得分:3)
你正试图给线条提供法线。让我们考虑一下这意味着什么。
当我们谈论表面上的法向量时,我们的意思是“指出表面”
对于三角形,当我们将一侧定义为“前”面时,恰好有一个法线。对于直线,任何垂直于直线的向量都算作法线 - 有无穷大,任何一个都会“做”。
我们关心图形法线的原因是什么?
简而言之:你可以为你的法线选择任何垂直向量(这很容易计算)或者根本不使用法线来完成你的头发。这取决于你想要做什么。