我在C代码中有一个3D数据结构,我希望将其显示为3D空间中的框和点。所以我有一堆坐标,一些用于点,一些用于盒子,我想用3D绘制这些坐标来可视化数据结构。有没有经验做过类似的事情?我开始尝试使用paraview。我的计划是生成一个paraview statefile(xml类型文件),然后用paraview打开它。问题是那些状态文件庞大而复杂。为了尝试找出xml结构,我在paraview中创建Boxes和Point源,然后查看它生成的状态文件。看起来很糟糕。
我只想说能够以简约的方式显示带有这些坐标的框和带有这些坐标的点。有人有主意吗?不必必须在C或paraview中,因为我可以输出坐标和输入以生成最终产品。 Python + Matlab如果能够工作的话也能正常工作。
答案 0 :(得分:2)
由于您的数据似乎并不复杂......为什么不将其导出为CSV文件?
您可以从ParaView,MATLAB等打开它...此外,它是一个非常简单的实现。
如果您的数据不会比这更复杂,我会选择这个。
快乐的编码!
答案 1 :(得分:0)
如果您的算法是纯C并且它正在生成静态或预制动画数据,您可能希望导出为XML格式或专有格式,这将打开许多选项。
Collada是一种XML格式,用于以软件无关的方式表示3D对象,当然值得一看。然后,您可以在众多应用程序中打开以查看它,甚至Max和Maya,这意味着无需编码即可查看它。还有一些引擎可以原生地读取这些出口。
至于可视化的其他具体方法,这可能是一个完全开放的答案,所以取决于你想要想象的项目数量以及你需要多少交互是一些建议,但我知道这只是提示冰山一角。
Matlab似乎非常擅长绘制数学图形,但我对它的相当陈旧的记忆是操作非常缓慢和麻烦。
如果它是简单的gouraud阴影纹理的东西,你想要完全控制只是去一个原生的OpenGL程序,因为这些天没有什么太可怕。这也意味着你可以保留C代码。缺点是需要更长的时间,特别是如果您需要处理相机控制或“像素质量”问题。即如果你正在寻找阴影,动画,着色器效果等......请继续阅读...
如果它需要一些用户交互,一个独立的应用程序,更复杂的渲染和数据集不是很大或你可以编译为C#(即没有使用指针)你可能想看看Unity。它将3D渲染简化为一个数量级,您只需编写C#即可生成要渲染的网格/粒子,并将一些简单的相机控件放入(或导入您的collada文件)。棘手的一点是,如果你是新手,它需要一两天才能熟悉为你的目的生成网格。
或者你可以通过HTML5在WebGL中编写代码,或者更好地使用别人的WebGL系统为你做这些代码!
如果您选择这条路线,有一些项目值得一看。我最喜欢的是PlayCanvas,我相信如果你只需要生成它们,它也会带你的collada文件。
还有SceneJS.org,它更加原始,但尚未亲自尝试,但提到它也应该具有吸引力。