5#ifndef __pinocchio_extra_base_visualizer_hpp__ 
    6#define __pinocchio_extra_base_visualizer_hpp__ 
    8#include "pinocchio/macros.hpp" 
    9#include "pinocchio/visualizers/config.hpp" 
   10#include "pinocchio/multibody/data.hpp" 
   11#include "pinocchio/multibody/geometry.hpp" 
   13#include <boost/optional.hpp> 
   20    typedef PINOCCHIO_SCALAR_TYPE_DEFAULT Scalar;
 
   21    PINOCCHIO_COMMON_TYPEDEF(PINOCCHIO_SCALAR_TYPE_DEFAULT, PINOCCHIO_OPTIONS_DEFAULT)
 
   23    typedef Eigen::Ref<const VectorXs> ConstVectorRef;
 
   24    typedef Eigen::Ref<const MatrixXs> ConstMatrixRef;
 
   37      typedef SE3::Matrix4 Matrix4;
 
   87      virtual void display(
const boost::optional<ConstVectorRef> & q = boost::none);
 
   91      void display(
const Eigen::MatrixBase<D> & q)
 
   93        boost::optional<ConstVectorRef> 
q_(q);
 
 
   99      virtual void play(
const std::vector<ConstVectorRef> & 
qs, Scalar 
dt);
 
  101      void play(
const ConstMatrixRef & 
qs, Scalar 
dt);
 
  128        this->setCameraPose(
pose.toHomogeneousMatrix());
 
 
  147      const Model & model()
 const 
  154        return *m_visualModel;
 
  157      const GeometryModel & collisionModel()
 const 
  160          hasCollisionModel(), std::logic_error, 
"No collision model in the visualizer.");
 
  161        return *m_collisionModel;
 
  164      bool hasCollisionModel()
 const 
  166        return m_collisionModel != 
nullptr;
 
  179      const Data & data()
 const 
  184      GeometryData & visualData()
 
  186        return *m_visualData;
 
  188      const GeometryData & visualData()
 const 
  190        return *m_visualData;
 
  193      GeometryData & collisionData()
 
  196          hasCollisionModel(), std::logic_error, 
"No collision model in the visualizer.");
 
  197        return *m_collisionData;
 
  200      const GeometryData & collisionData()
 const 
  203          hasCollisionModel(), std::logic_error, 
"No collision model in the visualizer.");
 
  204        return *m_collisionData;
 
  208      std::reference_wrapper<Model const> m_model;
 
  209      GeometryModel 
const * m_visualModel;
 
  210      GeometryModel 
const * m_collisionModel;
 
  213      GeometryData * m_visualData;
 
  214      GeometryData * m_collisionData;
 
  221      virtual void displayImpl() = 0;
 
 
A base class for defining visualizers for Pinocchio in C++. This provides basic building blocks (a ba...
virtual void clean()
Delete all objects from the scene.
virtual void displayPrecall()
This method is called at the beginning of display().
virtual void initViewer()
Initialize the viewer.
virtual void setCameraTarget(const Eigen::Ref< const Vector3 > &)
Set the active camera target.
virtual void setCameraZoom(Scalar)
Set camera zoom level; what this means depends on the implementation (FOV zoom or moving forwards).
void setCameraPose(const SE3 &pose)
Set the active camera 6D pose.
BaseVisualizer(const Model &model, const GeometryModel &visual_model, const GeometryModel *collision_model=nullptr)
Class constructor which will create internally-managed data objects.
void display(const Eigen::MatrixBase< D > &q)
virtual void rebuildData()
Re-build data objects. Required if the models were modified.
virtual void setCameraPose(const Eigen::Ref< const Matrix4 > &)
Set the active camera 6D pose.
BaseVisualizer(const Model &model, const GeometryModel &visual_model, const GeometryModel *collision_model, Data &data, GeometryData &visual_data, GeometryData *collision_data)
Class constructor for borrowing external data.
virtual void play(const std::vector< ConstVectorRef > &qs, Scalar dt)
Play an entire trajectory, waiting for time dt between each keyframe.
virtual void setCameraPosition(const Eigen::Ref< const Vector3 > &)
Set the active camera position.
virtual bool forceRedraw()
Override this in child class when the scene has to be redrawn. Useful for play().
virtual void enableCameraControl(bool)
Enable/disable controlling the camera from keyboard and mouse.
bool hasExternalData() const
Whether the internal data pointers are borrowed (external), or owned.
virtual void loadViewerModel()=0
Load the Pinocchio model.
virtual void display(const boost::optional< ConstVectorRef > &q=boost::none)
Display configuration q (if an actual value is given) or update the Pinocchio frames.
Main pinocchio namespace.