从OpenGL程序到可导入的东西的顶点列表

时间:2012-04-05 23:38:05

标签: c++ opengl blender

我正在努力对我研究的双星的类型进行新的可视化,并且我从一个现有的代码开始,在给出一些合理的物理参数的情况下,可以很好地看到它们。

我想在动画方面有更多的自由,然而,我的第一个想法是以一种可以通过其他东西读取的格式输出程序制作的模型(Blender?)我已经阅读(Wavefront?)。OBJ格式,虽然看起来很简单,但我似乎无法做到正确;导入失败无声,我怀疑是因为我不了解对象的实际存储方式。

我开始的程序是一个名为BinSim的C ++项目,它已经有一个标志,可以将顶点输出到创建的所有对象的日志文件中。看起来很简单,只是一个索引列表,x,y,z和R,G,B(有时是A)值。我一直在使用的示例输出格式here;每个对象被划分为纬度/经度网格点,这是一个小片段(对于创建的所有对象,完整文件超过180 MB)。

我已经能够看到对象被定义为三角形条带,但是我对所有这些都很困惑,我无法看到将这个顶点列表转换为.OBJ(或者无论如何)格式。对不起,如果这真的属于另一个区域(GameDev?),谢谢!

1 个答案:

答案 0 :(得分:0)

OpenGL不是场景管理系统。它是一个绘图API,从模型存储的OpenGL数据结构开始是乏味的。如前所述,OpenGL 绘制事物。有几个绘图基元,三角形条是其中之一。从两个顶点(形成一条直线)开始,每个下一个入射顶点将最后两个指定顶点的直线延伸到三角形。 Wavefront OBJ格式不知道三角形条带,您必须将它们分解为单个三角形,模仿OpenGL的方式。

另外,不要忘记Blender可以使用Python脚本轻松扩展,您只需为已有的数据编写导入脚本,而无需使用一些不合适的格式。