[engine] 3D model types, and overview

This is probably the wrong board, it’s more about engine development really.

So I’m trying to implement a all-around model loader framework for my library, that just parses vertices and stores them as ‘Vertex’ objects…

Vertex.java

Vector4f position;
Vector2f textureUV;
Vector3f color; // I should probably remove this by now... xD
Vector3f normal;

// ... getters and setters / constructors

I made it like this because I wanted it to be super easy to send vertices down the pipeline however you want. By making a vertex class, and making VBOs read from them. Or draw them directly from immediate mode statically. This way I could have a model, loaded from any source, be rendered in the same way throughout the app.

But my problem is, what should a basic 3D model do? What fields/methods should it inherit? In other words, what stays constant per 3D model type?

Summary: I have a universal vertex class, wrapping a position, normal, texture UV, and a color… What functions/fields stay the same while loading different types of 3D models? Also, what different model types do I have to focus on?

EDIT: Also, where would I find documentation on format of each model?

Thanks in advance.

Speaking from experience, don’t use 5 or more objects to represent a single vertex. Don’t represent verticies as as objects at all.
When you come to a point where you want to display a model which is a bit more complex then a Mine Craft Character you will thank me.

Use a ByteBuffer to store the model data and provide some data layout functionality or accessor methods like setVertexPosition(int vertexId, Vector3f pos). This has not only the benefit of saveing you a lot of memory, but is also needed by opengl.