【发布时间】:2023-03-22 21:20:01
【问题描述】:
我正在尝试从 OBJ 文件加载顶点并渲染它们。但只有一些三角形在渲染。
模型的外观: Blender model
如何呈现: Rendered model
我的代码:
GL2 gl = glad.getGL().getGL2();
gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT );
gl.glRotatef(0.5f, 1f, 1f, 1f);
gl.glColor3f(1, 0, 0);
gl.glBegin(GL2.GL_TRIANGLE_STRIP); // Start Drawing The Cube
try (InputStream in = new FileInputStream("D:\\untitled.obj")) {
final IOBJParser parser = new OBJParser();
final OBJModel model = parser.parse(in);
for(int i = 0; i < model.getVertices().size(); i++) {
System.out.println(model.getVertices().get(i).x + " " + model.getVertices().get(i).y + " " + model.getVertices().get(i).z);
gl.glNormal3f(model.getNormals().get(i).x,model.getNormals().get(i).y, model.getNormals().get(i).z);
gl.glVertex3f(model.getVertices().get(i).x,model.getVertices().get(i).y, model.getVertices().get(i).z);
}
} catch (FileNotFoundException ex) {
Logger.getLogger(EventListener.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(EventListener.class.getName()).log(Level.SEVERE, null, ex);
}
gl.glEnd();
gl.glFlush();
(我知道这远非最有效的方法)
我使用 JOGL 库进行渲染,使用 java-data-front 加载 obj 文件并对其进行解析。模型已正确加载,但未渲染。
【问题讨论】:
-
显示 System.out.println(model.getVertices().get(i).x + " " + model.getVertices().get(i).y + " " + model.getVertices().get(i).z);
-
pastebin.com/8Au4HYZM 它打印出顶点以检查加载是否没有问题,并且我检查它与文件相同,因此正确加载
-
@Maratonec A Wavefront (OBJ) 由顶点和面索引组成。您需要遍历索引并按照索引的顺序渲染顶点。
-
@Rabbid76 谢谢!可以给我一些小代码sn-p吗?
-
没关系,我想通了。但真的感谢面部指数。我不知道它们的存在。我会自己回答