class cogs::BoneTransform

Overview

Class used for effective management and manipulation with bone transformation. More…

#include <BoneTransform.h>

class BoneTransform: public cogs::Transform {
public:
    // construction

    BoneTransform();
    BoneTransform(const glm::vec3& global_tail, const glm::mat4& global_parent_tail_transform, const float basis_roll_angle = 0.0f);
    BoneTransform(const BoneTransform&);
    BoneTransform(BoneTransform&&);

    // methods

    BoneTransform& operator=(const BoneTransform&);
    BoneTransform& operator=(BoneTransform&&);
    void StretchLength(const float& length_change);
    void SetLength(const float& new_length);
    const float& GetLength() const;
    const glm::mat4& GetHeadMat4() const;
    const glm::mat4& GetTailMat4() const;
    void InterpolateTo(const BoneTransform& target_transform, const float target_weight, BoneTransform* out_transform) const;
    virtual void SaveToStream(std::ostream& ostr) const;
    virtual void LoadFromStream(std::istream& istr);

protected:
    // methods

    virtual void OnInvariantChange();
};

Inherited Members

public:
    // methods

    Transform& operator=(const Transform&);
    Transform& operator=(Transform&&);
    void Translate(const glm::vec3& move_vector);
    void SetPosition(const glm::vec3& position);
    const glm::vec3 GetPosition() const;
    void Rotate(const glm::quat& rotation);
    void SetRotation(const glm::quat& rotation);
    const glm::quat GetRotation() const;
    void Scale(const glm::vec3& scale);
    void SetScaling(const glm::vec3& scale);
    const glm::vec3 GetScaling() const;
    void Set(const glm::mat4& trans_mat);
    virtual const glm::mat4& GetMat4() const;
    void AddTransform(const Transform& transform);
    void InterpolateWith(const Transform& target, const float target_weight, Transform* out_transform) const;
    virtual void SaveToStream(std::ostream& ostr) const;
    virtual void LoadFromStream(std::istream& istr);
    Transform operator*(const Transform& t) const;
    operator glm::mat4() const;

protected:
    // methods

    virtual void OnInvariantChange();

Detailed Documentation

Class used for effective management and manipulation with bone transformation.

Position represents offset from parent tail node in parent space. All the transformations are relative to parent bone transformation.

Construction

BoneTransform()

Creates identity bone with unit length.

BoneTransform(const glm::vec3& global_tail, const glm::mat4& global_parent_tail_transform, const float basis_roll_angle = 0.0f)

Creates child bone, oriented and stretched in length. Relative to the parent.

Parameters:

global_tail

Global position of tail node of bone.

global_parent_tail_transform

Transformation matrix which describes parent space at its tail.

basis_roll_angle

Angular parameter which influences initial roll of generated y bone basis.

Methods

void StretchLength(const float& length_change)

Changes length of bone by multiplying current length.

void SetLength(const float& new_length)

Resets bone length to the new value.

const float& GetLength() const

Returns bone length.

const glm::mat4& GetHeadMat4() const

Returns local transformation matrix, with origin according to the bone head position.

const glm::mat4& GetTailMat4() const

Returns local transformation matrix, with origin according to the bone tail position.

void InterpolateTo(const BoneTransform& target_transform, const float target_weight, BoneTransform* out_transform) const

Interpolates current transform with another, in a specific mix ratio.

Parameters:

target

The Transform which to interpolate to.

target_weight

Defines how much of target should be taken. Value 0 results in 100% of this transform, value 1 results in 100% of target.

out_transform

A pointer to an object where the computed transformation will be stored.

virtual void SaveToStream(std::ostream& ostr) const

Writes relevant information to stream.

virtual void LoadFromStream(std::istream& istr)

Reads relevant information from stream.

virtual void OnInvariantChange()

Function called each time a change on position, rotation or scaling is performed.