Understanding Models with multiple meshes










0















So I'm trying to design a model class for my OpenGL project, but I'm trying to figure out how I data should be stored generically to be able to render an entire model.



For example, a car model. The car would consist of three meshes: the body, wheel, and axle. I want the wheels to rotate with the axles and the axles to follow the body around.



My current class setup is as follows:



struct Vertex 
glm::vec3 position;
glm::vec3 normal;
glm::vec2 texCoord;
;

struct Texture
unsigned int id;
std::string type;
;


class Mesh

public:
Mesh();
Mesh(std::vector<Vertex> pVerticies, std::vector<unsigned int> pIndicies, std::vector<Texture> pTextures);
~Mesh();

private:
std::vector<Vertex> verticies;
std::vector<unsigned int> indicies;
std::vector<Texture> textures;
;


And the model class



class Model

public:
Model();
~Model();

private:
std::vector<Mesh> meshes;
unsigned int shaderID;
;


The model class is not fleshed out at all since I don't know how to store the relationship data.










share|improve this question
























  • You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

    – Ripi2
    Nov 13 '18 at 19:21











  • Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

    – CoopTang
    Nov 14 '18 at 18:11






  • 1





    One common way to represent such mesh hierarchies is a scene graph.

    – Nico Schertler
    Nov 14 '18 at 19:22















0















So I'm trying to design a model class for my OpenGL project, but I'm trying to figure out how I data should be stored generically to be able to render an entire model.



For example, a car model. The car would consist of three meshes: the body, wheel, and axle. I want the wheels to rotate with the axles and the axles to follow the body around.



My current class setup is as follows:



struct Vertex 
glm::vec3 position;
glm::vec3 normal;
glm::vec2 texCoord;
;

struct Texture
unsigned int id;
std::string type;
;


class Mesh

public:
Mesh();
Mesh(std::vector<Vertex> pVerticies, std::vector<unsigned int> pIndicies, std::vector<Texture> pTextures);
~Mesh();

private:
std::vector<Vertex> verticies;
std::vector<unsigned int> indicies;
std::vector<Texture> textures;
;


And the model class



class Model

public:
Model();
~Model();

private:
std::vector<Mesh> meshes;
unsigned int shaderID;
;


The model class is not fleshed out at all since I don't know how to store the relationship data.










share|improve this question
























  • You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

    – Ripi2
    Nov 13 '18 at 19:21











  • Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

    – CoopTang
    Nov 14 '18 at 18:11






  • 1





    One common way to represent such mesh hierarchies is a scene graph.

    – Nico Schertler
    Nov 14 '18 at 19:22













0












0








0








So I'm trying to design a model class for my OpenGL project, but I'm trying to figure out how I data should be stored generically to be able to render an entire model.



For example, a car model. The car would consist of three meshes: the body, wheel, and axle. I want the wheels to rotate with the axles and the axles to follow the body around.



My current class setup is as follows:



struct Vertex 
glm::vec3 position;
glm::vec3 normal;
glm::vec2 texCoord;
;

struct Texture
unsigned int id;
std::string type;
;


class Mesh

public:
Mesh();
Mesh(std::vector<Vertex> pVerticies, std::vector<unsigned int> pIndicies, std::vector<Texture> pTextures);
~Mesh();

private:
std::vector<Vertex> verticies;
std::vector<unsigned int> indicies;
std::vector<Texture> textures;
;


And the model class



class Model

public:
Model();
~Model();

private:
std::vector<Mesh> meshes;
unsigned int shaderID;
;


The model class is not fleshed out at all since I don't know how to store the relationship data.










share|improve this question
















So I'm trying to design a model class for my OpenGL project, but I'm trying to figure out how I data should be stored generically to be able to render an entire model.



For example, a car model. The car would consist of three meshes: the body, wheel, and axle. I want the wheels to rotate with the axles and the axles to follow the body around.



My current class setup is as follows:



struct Vertex 
glm::vec3 position;
glm::vec3 normal;
glm::vec2 texCoord;
;

struct Texture
unsigned int id;
std::string type;
;


class Mesh

public:
Mesh();
Mesh(std::vector<Vertex> pVerticies, std::vector<unsigned int> pIndicies, std::vector<Texture> pTextures);
~Mesh();

private:
std::vector<Vertex> verticies;
std::vector<unsigned int> indicies;
std::vector<Texture> textures;
;


And the model class



class Model

public:
Model();
~Model();

private:
std::vector<Mesh> meshes;
unsigned int shaderID;
;


The model class is not fleshed out at all since I don't know how to store the relationship data.







c++ opengl glm-math






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 13 '18 at 19:45









genpfault

41.9k95398




41.9k95398










asked Nov 13 '18 at 19:13









CoopTangCoopTang

5415




5415












  • You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

    – Ripi2
    Nov 13 '18 at 19:21











  • Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

    – CoopTang
    Nov 14 '18 at 18:11






  • 1





    One common way to represent such mesh hierarchies is a scene graph.

    – Nico Schertler
    Nov 14 '18 at 19:22

















  • You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

    – Ripi2
    Nov 13 '18 at 19:21











  • Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

    – CoopTang
    Nov 14 '18 at 18:11






  • 1





    One common way to represent such mesh hierarchies is a scene graph.

    – Nico Schertler
    Nov 14 '18 at 19:22
















You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

– Ripi2
Nov 13 '18 at 19:21





You need to store also the type of the mesh (body, wheel, axle). Each type may have a different behaviour Then for a given situation use the "angle of rotation for this wheel" or some info alike, proper for each type.

– Ripi2
Nov 13 '18 at 19:21













Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

– CoopTang
Nov 14 '18 at 18:11





Doesn't that then become way more complex when the project gets larger? I can't possibly have a case for every possibility in a generic model class.

– CoopTang
Nov 14 '18 at 18:11




1




1





One common way to represent such mesh hierarchies is a scene graph.

– Nico Schertler
Nov 14 '18 at 19:22





One common way to represent such mesh hierarchies is a scene graph.

– Nico Schertler
Nov 14 '18 at 19:22












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288011%2funderstanding-models-with-multiple-meshes%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288011%2funderstanding-models-with-multiple-meshes%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







這個網誌中的熱門文章

Barbados

How to read a connectionString WITH PROVIDER in .NET Core?

Node.js Script on GitHub Pages or Amazon S3