我想创建一个可以查看/呈现JT文件格式的查看器。我知道有一个查看器可用JT2Go,但我想为自己创建1,因为JT2GO不是开源的。
我的要求不是那么高,我不需要JT2GO的功能,我只想渲染3D文件,不需要分层或选择单个组件。只是一个飞机观众。
答案 0 :(得分:4)
首先获取规范:
并编写一个库来读取文件。该规范看起来很大但直接实施。我认为应该可以访问文件的元素而不将整个数据结构保留在内存中。
编程查看器部件时,不要直接使用OpenGL,而是使用场景图库。 (OpenSceneGraph是第一个出现在我脑海中的人)
答案 1 :(得分:3)
您可以从此处使用Java库:http://www.johannes-raida.de/jnetcad。 据我所知,它应该支持JT版本8文件。我使用了DXF导入库,非常高兴。 API是相同的,因此您可以访问所有三角形及其坐标,法线,颜色和图层。
答案 2 :(得分:2)
也可以使用Open Cascade库。它是一个开源C ++库(LGPL),主要用于CAD。目前它还支持读取JT文档的facets(三角形): http://www.opencascade.org/support/applications/jt_assistant/ Jt助手也可以看到JT文件。这个应用程序的C ++代码是开源的(GPL)。与Jt2Go相比,Jt助手的一个优点是可以显示JT文档的不同层(组)。
答案 3 :(得分:1)
您可以尝试将对此文件格式的支持添加到“打开资产导入库”:
http://assimp.sourceforge.net/
也是由不幸的缩写ASSIMP知道的。他们已经有了一个查看器,所以一旦你将格式添加到导入库,你就会完成。此外,您将为现有的开源库添加对另一种格式的支持。
答案 4 :(得分:0)
要在加载文件后查看文件,您基本上需要在程序中实现OpenGL。每个对象都是一个浮点值数组,表示它的几何(顶点)。所以一旦你把这些信息拿出来,你就可以使用标准的OpenGL调用来渲染它了。例如,将顶点放入紧密排列的数组(浮点数的单维数组):
vertexX, vertexY, vertexZ, normalX, normalY, normalZ
此浮点数组表示模型的所有面。每个面有三个顶点,上面的线是一个顶点。一旦你有一个浮点数组,它就很容易渲染。
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(vertices[0])*6, &vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(vertices[0])*6, &vertices[3]);
glColor4f(R, G, B, 1); //range 0-1
glDrawArrays(GL_TRIANGLES, 0, numVertices); //number of floats in array divided by 6
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
然后将其放入OpenGL-ES 1.1渲染循环中。让我知道这是否适合你。另外,如果你有工作,请分享如何阅读JT文件格式。