Represents a 3D mesh created by extruding a 2D shape along a specified height. This class inherits from the Mesh class and provides methods to generate vertices and faces for the extruded mesh. It also includes methods for culling faces based on the camera's view direction and logging mesh information. More...
#include <ExtrudeMesh.hpp>
Public Member Functions | |
ExtrudeMesh (mesh_info_t &mesh_info, const Camera &cam) | |
Constructs an ExtrudeMesh object with the specified mesh information and camera reference. | |
~ExtrudeMesh ()=default | |
Default destructor for the ExtrudeMesh class. | |
void | generate_vertices () override |
Deleted copy constructor for the ExtrudeMesh class. | |
void | generate_faces () override |
Generates the faces of the extruded mesh. | |
bool | are_vertices_coplanar (const glm::fvec4 &v1, const glm::fvec4 &v2, const glm::fvec4 &v3, const glm::fvec4 &v4, float tolerance=0.1f) |
Verifies if four vertices are coplanar. | |
void | log_mesh_info () const |
Logs detailed information about the mesh. | |
![]() | |
Mesh ()=delete | |
Construct a new Mesh object (deleted constructor). | |
virtual | ~Mesh ()=default |
Default virtual destructor for the Mesh class. | |
Mesh (mesh_info_t &mesh_info) | |
Construct a new Mesh object with mesh information. | |
const std::vector< glm::fvec4 > & | get_vertices () const |
Get the vertices object. | |
const std::vector< face_t > & | get_faces () const |
Get the faces object. | |
const size_t | get_total_vertices () const |
Get the total vertices object. | |
size_t | get_total_vertices () |
Get the total vertices object. | |
void | recalculate () |
Recalculate the mesh vertices and faces. | |
void | apply_transform_to_vertices () |
Apply the current transformation to the vertices of the mesh. This method applies the transformation matrix obtained from the Transform class to each vertex in the mesh. This is useful for updating the mesh vertices after any transformation has been applied, such as translation, rotation, or scaling. It modifies the vertices in place, transforming them according to the current transformation matrix. | |
void | set_color (uint16_t new_color) |
Set the color of the mesh. | |
uint16_t | get_color () const |
Get the color of the mesh. | |
![]() | |
Component ()=default | |
Default constructor for the Component class. | |
virtual | ~Component ()=default |
Default virtual destructor for the Component class. | |
Component (const Component &)=delete | |
Deleted copy constructor for the Component class. | |
Component (const Component &&)=delete | |
Deleted move constructor for the Component class. | |
Component & | operator= (const Component &)=delete |
Deleted assignment operator for the Component class. | |
Component & | operator= (const Component &&)=delete |
Deleted move assignment operator for the Component class. | |
void | add_component (std::shared_ptr< Component > component) |
Adds a component to the collection. | |
void | remove_component (std::shared_ptr< Component > component) |
Removes a component from the collection. | |
const std::vector< std::shared_ptr< Component > > | get_components () const |
Gets the collection of components. | |
![]() | |
Node ()=default | |
Default constructor for Node. Initializes an empty node with no parent and no children. | |
virtual | ~Node ()=default |
Default destructor for Node. Cleans up the node and its children. | |
Node (const Node &)=delete | |
Deleted copy constructor for Node. Prevents copying of Node instances. | |
Node (const Node &&)=delete | |
Deleted move constructor for Node. Prevents moving of Node instances. | |
Node & | operator= (const Node &)=delete |
Deleted assignment operator for Node. Prevents assignment of Node instances. | |
Node & | operator= (const Node &&)=delete |
Deleted move assignment operator for Node. Prevents moving of Node instances. | |
void | add_child (std::shared_ptr< Node > child) |
Get the parent node. | |
void | remove_child (std::shared_ptr< Node > child) |
Remove a child node. | |
const std::vector< std::shared_ptr< Node > > & | get_children () const |
Get the parent node. | |
mat4 | get_transform_matrix () override |
Get the transform matrix object. | |
![]() | |
Transform () | |
Default constructor for the Transform class. | |
virtual | ~Transform ()=default |
Virtual destructor for the Transform class. | |
void | set_position (const vec3 &pos) |
Sets the position of the object. | |
vec3 | get_position () const |
Gets the current position of the object. | |
void | set_rotation (const vec3 &rot) |
Moves the object by a specified vector. | |
vec3 | get_rotation () const |
Gets the current rotation of the object. | |
void | rotate (const float angle, const vec3 &axis) |
Rotates the object by a specified angle around a given axis. | |
void | set_scale (const vec3 &scale) |
Sets the scale of the object. | |
vec3 | get_scale () const |
Sets the scale of the object uniformly. | |
bool | is_dirty () const |
Checks if the transformation matrix is dirty (needs recalculation). | |
Protected Attributes | |
float | height = 1.0f |
Height of the extrusion. | |
bool | faces_can_be_quads = false |
Flag indicating whether the faces can be quads. | |
const Camera & | cam |
Camera reference for culling faces based on the camera's view direction. | |
glm::vec4 | planes [4] |
Array of planes used for culling faces. | |
glm::vec3 | camPos |
Position of the camera in world space. | |
![]() | |
mesh_info_t | mesh_info |
Information about the mesh, including coordinates and rendering type. | |
uint16_t | color = 0xFFFF |
Color of the mesh, default is white (0xFFFF). | |
std::vector< glm::fvec4 > | vertices |
Vector of vertices representing the mesh in 3D space. | |
std::vector< face_t > | faces |
Vector of faces representing the mesh, each face can be a triangle or a quad. | |
int | slices = 16 |
Number of slices for generating the mesh, default is 16. | |
![]() | |
std::vector< std::shared_ptr< Component > > | components |
Collection of components managed by this Component instance. | |
![]() | |
std::vector< std::shared_ptr< Node > > | children |
List of child nodes. | |
Node * | parent = nullptr |
Pointer to the parent node. | |
![]() | |
vec3 | position |
The position of the object in 3D space. | |
vec3 | rotation |
The rotation of the object in degrees around each axis (x, y, z). | |
vec3 | scale |
The scale of the object in 3D space, default is (1, 1, 1). | |
bool | dirty = true |
Flag indicating whether the transformation matrix needs to be recalculated. | |
Static Protected Attributes | |
static const char * | EXTRUDE_TAG = "ExtrudeMesh" |
Tag for logging messages related to the ExtrudeMesh class. | |
Represents a 3D mesh created by extruding a 2D shape along a specified height. This class inherits from the Mesh class and provides methods to generate vertices and faces for the extruded mesh. It also includes methods for culling faces based on the camera's view direction and logging mesh information.
The ExtrudeMesh class is designed to create a 3D mesh by extruding a 2D shape along a specified height. It uses the GLM library for vector and matrix operations, and includes functionality for face culling based on the camera's view direction. The class also provides a method to log detailed information about the mesh, including its position, rotation, scale, and vertex data.
|
inline |
Constructs an ExtrudeMesh object with the specified mesh information and camera reference.
mesh_info | Information about the mesh to be extruded. |
cam | Reference to the camera used for culling faces. |
|
default |
Default destructor for the ExtrudeMesh class.
This destructor is used to clean up resources when the ExtrudeMesh object is destroyed.
bool Ragot::ExtrudeMesh::are_vertices_coplanar | ( | const glm::fvec4 & | v1, |
const glm::fvec4 & | v2, | ||
const glm::fvec4 & | v3, | ||
const glm::fvec4 & | v4, | ||
float | tolerance = 0.1f ) |
Verifies if four vertices are coplanar.
This method checks if the four vertices v1, v2, v3, and v4 are coplanar within a specified tolerance. It uses the scalar triple product to determine coplanarity.
v1 | First vertex in homogeneous coordinates. |
v2 | Second vertex in homogeneous coordinates. |
v3 | Third vertex in homogeneous coordinates. |
v4 | Fourth vertex in homogeneous coordinates. |
tolerance | Tolerance value for coplanarity check (default is 0.1). |
The method calculates the scalar triple product of the vectors formed by the vertices and checks if it is close to zero within the specified tolerance. The scalar triple product is computed as the dot product of the first vector with the cross product of the other two vectors. This method is useful for determining if a set of vertices can form a valid face in the mesh.
|
overridevirtual |
Generates the faces of the extruded mesh.
This method creates the faces of the mesh based on the vertices generated by the generate_vertices method. It checks if the vertices are coplanar and creates either quads or triangles accordingly.
Implements Ragot::Mesh.
|
overridevirtual |
Deleted copy constructor for the ExtrudeMesh class.
This constructor is deleted to prevent copying of ExtrudeMesh objects.
Implements Ragot::Mesh.
void Ragot::ExtrudeMesh::log_mesh_info | ( | ) | const |
Logs detailed information about the mesh.
|
protected |
Camera reference for culling faces based on the camera's view direction.
This reference is used to determine which faces of the mesh are visible from the camera's perspective.
|
protected |
Position of the camera in world space.
This vector represents the position of the camera in the 3D world. It is used to calculate the visibility of faces based on the camera's position.
|
staticprotected |
Tag for logging messages related to the ExtrudeMesh class.
|
protected |
Flag indicating whether the faces can be quads.
This flag is set to true if the number of vertices is a multiple of 8 or if it is exactly 4. It determines how faces are generated in the mesh.
|
protected |
Height of the extrusion.
This value determines how far the 2D shape is extruded in the Z direction.
|
protected |
Array of planes used for culling faces.
This array contains the planes that define the view frustum of the camera. It is used to determine which faces are visible and which can be culled.