Maria GDK 5.0.0.738
Documentation of native code in develop branch
Loading...
Searching...
No Matches
STK::MeshGraphicsModel Class Reference

#include <StkMeshGraphicsModel.h>

Inheritance diagram for STK::MeshGraphicsModel:
STK::GraphicsModel STK::AxisModel STK::BillboardRenderItem STK::MarkerObject Maria::EntityBadge3D STK::TextLabel3D Maria3D::PointSymbolLabel

Classes

struct  HilitMesh
 

Public Member Functions

 MeshGraphicsModel (std::shared_ptr< ShaderProgramManager > prg_mgr, const std::string &name="")
 
void addMeshRender (std::shared_ptr< MeshRender > mesh_render)
 
unsigned int addMeshGroup (std::shared_ptr< MaterialMeshGroup > mesh_grp, const unsigned int layer=0)
 
std::shared_ptr< MaterialMeshGroupgetMeshGroup (const unsigned int id)
 
void setMeshGroup (const unsigned int id, std::shared_ptr< MaterialMeshGroup > mesh_grp)
 
void removeMeshGroup (const unsigned int id)
 
const std::map< unsigned int, std::shared_ptr< MaterialMeshGroup > > & getMeshGroups () const
 
std::map< unsigned int, std::shared_ptr< MaterialMeshGroup > > & getMeshGroups ()
 
std::shared_ptr< STK::MaterialfindMaterial (const std::string &name) const
 
void needsUpdate (const bool needs_update)
 
std::shared_ptr< const MeshNodegetRoot () const
 
std::shared_ptr< MeshNodegetRoot ()
 
void setRoot (const std::shared_ptr< MeshNode > &node)
 
void redraw (const STK::Camera &cam, const STK::Viewport &vp, int render_mask=STK::OpaqueMask, const std::vector< std::shared_ptr< STK::Uniform > > *uniforms=nullptr) override
 
void calcBoundingSphere (STK::Vector3f &center, double &radius) override
 
void drawShadowMap (const STK::Camera &cam, const STK::Viewport &vp, const Camera &shd_cam, const Viewport &shd_vp, STK::ShaderProgram *shader, STK::ShaderProgram *tex_shader) override
 
void addAnimation (std::shared_ptr< AnimationController > anim)
 
const std::vector< std::shared_ptr< AnimationController > > & getAnimations () const
 
int findAnimations (const std::string &search, std::list< std::shared_ptr< AnimationController > > &anims)
 
std::shared_ptr< AnimationControllerfindAnimation (const std::string &name)
 Find the animation with the exact name.
 
void findMeshNodes (const std::string &search, std::vector< std::shared_ptr< STK::MeshNode > > &nodes) const
 
void findMeshNodes (const std::regex &re, std::vector< std::shared_ptr< STK::MeshNode > > &nodes) const
 
std::shared_ptr< STK::MeshNodefindMeshNode (const std::string &name) const
 
void calcBoundingBox (STK::Vector3f &min, STK::Vector3f &max) override
 
std::shared_ptr< STK::ShaderProgramManagershaderProgramManager ()
 
std::shared_ptr< MeshGraphicsModelrefCopy ()
 
void redrawBackToFront (const Camera &cam, const STK::Viewport &, int render_mask, const std::vector< std::shared_ptr< Uniform > > *uniforms)
 
- Public Member Functions inherited from STK::GraphicsModel
 GraphicsModel (const std::string &name="")
 
void setName (const std::string &name)
 
const std::string & getName () const
 
virtual void filterChildren (const filter_fn &fn, std::vector< std::shared_ptr< GraphicsModel > > &matched)
 
void setTransform (const STK::Matrix4x4f &transform)
 
const STK::Matrix4x4fgetTransform () const
 
void setEnvironmentMap (const std::shared_ptr< STK::CubeMap > &env_map)
 
std::shared_ptr< STK::CubeMapgetEnvironmentMap ()
 
std::shared_ptr< const STK::CubeMapgetEnvironmentMap () const
 
void setWireframe (bool wireframe)
 
bool getWireframe () const
 
void setInvisible (bool invisible)
 
bool getInvisible () const
 
void setCastShadows (bool cast_shadows)
 
bool getCastShadows () const
 
void setDebugGraphics (bool debug_gfx)
 
bool getDebugGraphics () const
 
virtual void redraw (const STK::Camera &cam, const STK::Viewport &vp, int render_mask=STK::OpaqueMask, const std::vector< std::shared_ptr< STK::Uniform > > *uniforms=nullptr)=0
 
virtual void drawShadowMap (const STK::Camera &cam, const STK::Viewport &vp, const STK::Camera &shd_cam, const STK::Viewport &shd_vp, STK::ShaderProgram *shader, STK::ShaderProgram *tex_shader)=0
 
virtual void calcBoundingSphere (STK::Vector3f &center, double &radius)=0
 
virtual void calcBoundingBox (STK::Vector3f &min, STK::Vector3f &max)=0
 

Static Public Member Functions

static void getMeshModels (std::shared_ptr< STK::GraphicsModel > rootModel, std::vector< std::shared_ptr< STK::MeshGraphicsModel > > &mesh_models)
 

Protected Types

using visit_func = std::function< void(const std::shared_ptr< GraphicsModel > &)>
 

Protected Member Functions

void calcNodeBounds (const MeshNode &parent, const STK::Matrix4x4f &m, STK::Vector3f &min, STK::Vector3f &max)
 
void drawHilitMeshes (const STK::Matrix4x4f &mesh_mvp, const STK::Matrix4x4f &pj, const std::vector< HilitMesh > &hilitMeshes)
 
void update ()
 
void updateIfNeeded ()
 

Static Protected Member Functions

static void visitTree (const std::shared_ptr< GraphicsModel > &root, visit_func func)
 

Protected Attributes

std::shared_ptr< MeshNoderoot_
 
std::map< unsigned int, std::shared_ptr< MaterialMeshGroup > > material_meshes_
 
bool needs_update_
 
std::shared_ptr< ShaderProgramManagerprg_mgr_
 
std::vector< std::shared_ptr< AnimationController > > animations_
 
- Protected Attributes inherited from STK::GraphicsModel
std::string name_
 
STK::Matrix4x4f transform_
 
std::shared_ptr< STK::CubeMapenv_map_
 
bool wireframe_
 
bool invisible_
 
bool cast_shadows_
 
bool debug_gfx_
 

Additional Inherited Members

- Public Types inherited from STK::GraphicsModel
using filter_fn = std::function< bool(const GraphicsModel &)>
 

Detailed Description

MeshGraphicsModel - A graphics model consisting of one or more indexed meshes. The MeshGraphicsModel consists of a set of indexed primitive Meshes. The meshes are arranged in a tree of MeshNodes which have transformation matrices relative to the GraphicsModel transform. Each MeshNode may contain a number of Meshes as well as a number of child nodes. The same Mesh can be referenced by different MeshNodes, supporting instancing within a MeshGraphicsModel

For optimal rendering, the meshes are sorted by material into MaterialMeshGroups. Each such group references a single material and a set of Meshes. In addition, each material group must reference the vertex buffer used by the meshes in this group. All meshes in one group must use the same vertex buffer, and the same vertex buffer can be referenced by many MaterialMeshGroups.

See also
Mesh
MeshNode
VertexBuffer
MaterialMeshGroup

Member Function Documentation

◆ addMeshGroup()

unsigned int STK::MeshGraphicsModel::addMeshGroup ( std::shared_ptr< MaterialMeshGroup mesh_grp,
const unsigned int  layer = 0 
)
inline

Add material mesh group. All meshes in the model are sorted by material by grouping meshes with equal materials into MaterialMeshGroups. These groups are organized in layers so that higher layers are rendered later than lower layers. For example transparent objects should be placed in higher layers for them to be rendered after the opaque objects.

Returns
ID for the material mesh group.

◆ calcBoundingBox()

void MeshGraphicsModel::calcBoundingBox ( STK::Vector3f min,
STK::Vector3f max 
)
overridevirtual

Implements STK::GraphicsModel.

◆ calcBoundingSphere()

void MeshGraphicsModel::calcBoundingSphere ( STK::Vector3f center,
double &  radius 
)
overridevirtual

Implements STK::GraphicsModel.

◆ drawShadowMap()

void MeshGraphicsModel::drawShadowMap ( const STK::Camera cam,
const STK::Viewport vp,
const Camera shd_cam,
const Viewport shd_vp,
STK::ShaderProgram shader,
STK::ShaderProgram tex_shader 
)
overridevirtual

Implements STK::GraphicsModel.

◆ findMeshNode()

std::shared_ptr< STK::MeshNode > STK::MeshGraphicsModel::findMeshNode ( const std::string &  name) const
inline

Find the first node matching the given name.

◆ findMeshNodes() [1/2]

void STK::MeshGraphicsModel::findMeshNodes ( const std::regex &  re,
std::vector< std::shared_ptr< STK::MeshNode > > &  nodes 
) const
inline

Recursively find all mesh nodes with names matching the given regular expression.

◆ findMeshNodes() [2/2]

void STK::MeshGraphicsModel::findMeshNodes ( const std::string &  search,
std::vector< std::shared_ptr< STK::MeshNode > > &  nodes 
) const
inline

Recursively find all mesh nodes with names matching the given search string exactly. If an empty string is given, all nodes are returned.

◆ redraw()

void MeshGraphicsModel::redraw ( const STK::Camera cam,
const STK::Viewport vp,
int  render_mask = STK::OpaqueMask,
const std::vector< std::shared_ptr< STK::Uniform > > *  uniforms = nullptr 
)
overridevirtual

Implements STK::GraphicsModel.

◆ refCopy()

std::shared_ptr< MeshGraphicsModel > MeshGraphicsModel::refCopy ( )

Referenced (semi-shallow) copy. This method will copy all the transform and animation hierarchy, as well as material groups, but all referencing the same meshes. and materials. The referenced copy can modify animations, node transforms and material groups without changing the original model, including replacing materials in the material group with new ones.


The documentation for this class was generated from the following files: