Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何为JT 3D文件格式创建查看器_Opengl_Graphics_3d - Fatal编程技术网

Opengl 如何为JT 3D文件格式创建查看器

Opengl 如何为JT 3D文件格式创建查看器,opengl,graphics,3d,Opengl,Graphics,3d,我想创建一个可以查看/呈现JT文件格式的查看器。我知道JT2Go有一个可用的查看器,但我想为自己创建一个,因为JT2Go不是开源的 我的要求不高,也不需要JT2GO具备的功能,我只想渲染3D文件,不需要分层或选择单个组件。只是一个平面查看器。从以下位置获取规范开始: 并编写一个库来读取文件。该规范看起来很大,但很容易实现。我认为应该可以访问文件的元素,而不必将整个数据结构保存在内存中 在编写查看器部分时,不要直接使用OpenGL,而是使用场景图库。(OpenSceneGraph是我脑海中第一个

我想创建一个可以查看/呈现JT文件格式的查看器。我知道JT2Go有一个可用的查看器,但我想为自己创建一个,因为JT2Go不是开源的


我的要求不高,也不需要JT2GO具备的功能,我只想渲染3D文件,不需要分层或选择单个组件。只是一个平面查看器。

从以下位置获取规范开始:

并编写一个库来读取文件。该规范看起来很大,但很容易实现。我认为应该可以访问文件的元素,而不必将整个数据结构保存在内存中


在编写查看器部分时,不要直接使用OpenGL,而是使用场景图库。(OpenSceneGraph是我脑海中第一个想到的文件)

您可以尝试将此文件格式的支持添加到开放资产导入库中:


也知道被不幸的缩写为ASSIMP。他们已经有了一个查看器,所以一旦将格式添加到导入库中,就可以完成了。此外,您还将向现有的开源库中添加对另一种格式的支持。

要在加载文件后查看这些文件,您基本上需要在程序中实现OpenGL。每个对象都是表示其几何体(顶点)的浮点值数组。因此,一旦您提取出这些信息,您就可以使用标准的OpenGL调用来渲染它。例如,将顶点放入紧密排列的数组(浮动的一维数组):

此浮动数组表示模型的所有面。每个面三个顶点,上面的线是一个顶点。一旦有了浮点数组,渲染就很简单了

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文件格式正常,请分享如何读取它。

您可以从这里使用Java库:。
据我所知,它应该支持JT版本8文件。我使用了DXF导入库,非常高兴。API是相同的,因此您可以访问所有三角形及其坐标、法线、颜色和图层。

也可以使用开放级联库。它是一个开源C++库(LGPL),主要是为CAD设计的。目前,它还支持读取JT文档的面(三角形):
Jt助手还可以可视化Jt文档。C++代码是这个应用程序的开源(GPL)。与Jt2Go相比,Jt assistant的一个优点是可以显示Jt文档的不同层(组)

我有那个规格,你能在查看器部分提供更多细节吗??我对这一部分感到困惑,我想知道,一旦我在屏幕上阅读了JT的文章,我将如何展示它??谢谢,你能在查看器部分给出更多的解决方案吗?你给出的解决方案只适用于windows??查看器究竟是如何工作的,在3D图形区域中它被称为什么?您是否知道如何从JT文件中提取三角形和材质信息?如果是这样,你介意分享一下你是如何做到这一点的吗?我正在尝试做同样的事情,但是我在想如何从JT文件中获取数据时遇到了困难。帕里,你最终成功开发了查看器吗?事先谢谢。您好,没有。我们没有更改我们的要求,我们开始使用OpenGL
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);