|
Rumba C++ SDK
|
A bounding volume hierarchy to quickly intersect 3d triangles. More...
#include <BVHTriangle.h>
Public Member Functions | |
| BVHTriangle () | |
| BVHTriangle (const Value &v) | |
| Cast a Value object in BVHTriangle. More... | |
| BVHTriangle (const Mesh &mesh) | |
| Build a BVH using the mesh triangles. More... | |
| int | intersect_closest (const Imath::V3f &position, const Imath::V3f &direction, float tnear, float &tfar, Imath::V2f *st=nullptr) const |
| Find the closest intersection of a ray against the triangles. More... | |
| int | closest (const Imath::V3f &position, float &d, Imath::V3f *closest_pos=nullptr, Imath::V2f *st=nullptr) const |
| Find the closest triangle. More... | |
Public Member Functions inherited from maquina::Value | |
| Value () | |
| Value (Value &&other)=default | |
| Value (const Value &other)=default | |
| Value & | operator= (Value &&other)=default |
| Value & | operator= (const Value &other)=default |
| virtual | ~Value ()=default |
| Value | duplicate () const |
| Duplicate the value. More... | |
| bool | as_bool () const |
| Returns the value as a bool. More... | |
| int | as_int () const |
| Returns the value as an integer. More... | |
| float | as_float () const |
| Returns the value as a float. More... | |
| double | as_double () const |
| Returns the value as a double. More... | |
| const std::string & | as_string () const |
| Returns the value as a string. More... | |
| std::wstring | as_wstring () const |
| Returns the value as a wstring. More... | |
| Imath::V2f | as_V2f () const |
| Returns the value as a V2f. More... | |
| Imath::V3f | as_V3f () const |
| Returns the value as a V3f. More... | |
| Imath::V4f | as_V4f () const |
| Returns the value as a V4f. More... | |
| const Imath::V2d & | as_V2d () const |
| Returns the value as a V2d. More... | |
| const Imath::V3d & | as_V3d () const |
| Returns the value as a V3d. More... | |
| const Imath::V4d & | as_V4d () const |
| Returns the value as a V4d. More... | |
| const Imath::V2i & | as_V2i () const |
| Returns the value as a V2i. More... | |
| const Imath::V3i & | as_V3i () const |
| Returns the value as a V3i. More... | |
| const Imath::V4i & | as_V4i () const |
| Returns the value as a V4i. More... | |
| Imath::M44f | as_M44f () const |
| Returns the value as a M44f. More... | |
| const Imath::M44d & | as_M44d () const |
| Returns the value as a M44d. More... | |
| const Imath::Box3f & | as_Box3f () const |
| Returns the value as a Box3f. More... | |
| const Imath::Color4f & | as_Color4f () const |
| Returns the value as a Color4f. More... | |
| Imath::Quatf | as_Quatf () const |
| Returns the value as a Quatf. More... | |
| const Imath::Quatd & | as_Quatd () const |
| Returns the value as a Quatd. More... | |
| std::shared_ptr< const UserData > | as_user_data () const |
| Returns the value as a user data. More... | |
| StringView | type_name () const |
| Return the type name of the Value. More... | |
| virtual bool | has_node_delegate () const |
| Check if this value can produces a NodeDelegate. More... | |
| virtual std::shared_ptr< NodeDelegate > | node_delegate (const std::shared_ptr< NodeDelegate > &parent, const StringView &name) const |
| bool | operator== (const Value &o) const |
| Compare the two values. More... | |
| bool | operator!= (const Value &o) const |
| bool | is_instance (const char *value_type_name) const |
| Check if this type derives from another value type. More... | |
| operator bool () const | |
| Value (bool) | |
| Create a boolean value. More... | |
| Value (int) | |
| Create an integer value. More... | |
| Value (float) | |
| Create a float value. More... | |
| Value (double) | |
| Create a double value (stored in a float right now) More... | |
| Value (const char *string) | |
| Create a string value. More... | |
| Value (const wchar_t *string) | |
| Create a string value. More... | |
| Value (const std::string &string) | |
| Create a string value. More... | |
| Value (const std::wstring &string) | |
| Create a wide string value. More... | |
| Value (const Imath::V2f &) | |
| Create a Imath::V2f value. More... | |
| Value (const Imath::V3f &) | |
| Create a Imath::V3f value. More... | |
| Value (const Imath::V4f &) | |
| Create a Imath::V4f value. More... | |
| Value (const Imath::V2d &) | |
| Create a Imath::V2d value. More... | |
| Value (const Imath::V3d &) | |
| Create a Imath::V3d value. More... | |
| Value (const Imath::V4d &) | |
| Create a Imath::V4d value. More... | |
| Value (const Imath::V2i &) | |
| Create a Imath::V2i value. More... | |
| Value (const Imath::V3i &) | |
| Create a Imath::V3i value. More... | |
| Value (const Imath::V4i &) | |
| Create a Imath::V4i value. More... | |
| Value (const Imath::Color4f &) | |
| Create a Imath::Color4f value. More... | |
| Value (const Imath::M44f &) | |
| Create a Imath::M44f value. More... | |
| Value (const Imath::M44d &) | |
| Create a Imath::M44d value. More... | |
| Value (const Imath::Box3f &) | |
| Create a Imath::Box3f value. More... | |
| Value (const Imath::Quatf &) | |
| Create a Imath::Quatf value. More... | |
| Value (const Imath::Quatd &) | |
| Create a Imath::Quatd value. More... | |
| Value (const std::shared_ptr< const UserData > &user_data) | |
| Create a user data value. More... | |
Static Public Attributes | |
| static const BVHTriangle | default_value |
| The default value. More... | |
Static Public Attributes inherited from maquina::Value | |
| static const Value | default_value |
| The default value. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from maquina::Value | |
| static bool | validate_type_name (const char *type_name) |
| Return true if the name is a valid type name. More... | |
| static Value | get_default_value (const char *type_name) |
| Return a default value for a given type. More... | |
A bounding volume hierarchy to quickly intersect 3d triangles.
| maquina::BVHTriangle::BVHTriangle | ( | ) |
| maquina::BVHTriangle::BVHTriangle | ( | const Value & | v | ) |
Cast a Value object in BVHTriangle.
If v has not the good type, a default value is constructed.
| maquina::BVHTriangle::BVHTriangle | ( | const Mesh & | mesh | ) |
Build a BVH using the mesh triangles.
| mesh | The mesh |
| int maquina::BVHTriangle::closest | ( | const Imath::V3f & | position, |
| float & | d, | ||
| Imath::V3f * | closest_pos = nullptr, |
||
| Imath::V2f * | st = nullptr |
||
| ) | const |
Find the closest triangle.
Return the triangle index if an intersection has been found. Returns -1 if no intersection has been found. If the function returns a positive value, d is filled with the distance to the closest triangle and if closest_pos is not null, *closest_pos is filled with the closest position. The function considers only the triangle closer than d.
| position | The position where to look for the closest triangle |
| d | The maximum search distance. In return, d is filled with the closest triangle distance |
| closest_pos | If not null and if a closest triangle has been found, closest_pos is filled with the closest triangle position. |
| st | If not null and if a closest triangle has been found, st is filled with the closest triangle barycenric coordinates. |
| int maquina::BVHTriangle::intersect_closest | ( | const Imath::V3f & | position, |
| const Imath::V3f & | direction, | ||
| float | tnear, | ||
| float & | tfar, | ||
| Imath::V2f * | st = nullptr |
||
| ) | const |
Find the closest intersection of a ray against the triangles.
Return the triangle index if an intersection has been found. Returns -1 if no intersection has been found. If the function returns a positive value, tfar is filled with the intersection parameter. The hit position is then position+direction*tfar. The function considers only the intersections with a t between [tnear, tfar[ .
| position | The position from where the ray starts |
| direction | The direction of the ray |
| tnear | The near t parameter before which no intersection are tested |
| tfar | The far t parameter after which no intersection are tested. If an intersection has been found, tfar get in return the t parameter of the closest hit. |
| st | If not null and if a triangle has been hit, st is filled with the hit point triangle barycenric coordinates. |
|
static |
The default value.