Open CASCADE, the 3D modelling kernel
3D modeling & numerical simulation

Search the Forums
See All Topics
 

Display dynamic (changing) graphics

Display dynamic (changing) graphics
Hugues Delorme 2013/02/18 12:14
Hello,

I have to display 3d points that are generated dynamically (anytime some input device is moved).
So I've created a class inheriting AIS_InteractiveObject and redefined Compute(Handle_PrsMgr_PresentationManager3d, Handle_Prs3d_Presentation, ...) method.

This sub-class relies on a Graphic3d_ArrayOfPrimitives being filled with specific purpose addPoint() :

class AIS_Path : public AIS_InteractiveObject
{
public:
AIS_Path(Standard_Integer maxPoints)
: m_points(new Graphic3d_ArrayOfPolylines(maxPoints))
{
}

void addPoint(const gp_Pnt& pnt)
{
m_points->AddVertex(pnt);
}

protected:
void Compute(const Handle_PrsMgr_PresentationManager3d& pm,
const Handle_Prs3d_Presentation& pres,
const Standard_Integer mode)
{
Handle_Graphic3d_Group group = Prs3d_Root::CurrentGroup(pres);
if (group.IsNull())
return;

group->BeginPrimitives();
group->AddPrimitiveArray(m_points);
group->EndPrimitives();
}

void ComputeSelection(const Handle_SelectMgr_Selection& selection, const Standard_Integer mode)
{ }

private:
Handle_Graphic3d_ArrayOfPrimitives m_points;
};


Each time a new point is added AIS_InteractiveContext::RecomputePrsOnly() is called and then Update() but only the points added with addPoint() before the very first call to Display() can be seen, after that nothing is displayed.

How should I proceed to get things work ?
Hugues Delorme 2013/07/03 15:00
I still have no solution with this issue.

How can we force OpenCascade to display dynamic graphics ?

I'm using OCC v6.6.0 and in Graphic3d_Group.hxx there is some doc about "main group usage models" :

1) Non-modifiable, or unbounded, group ('black box')
2) Bounded group (...) Such a group have simplified organization in memory (a single block of attributes followed by a block of primitives) and therefore it can be modified

How to change the primitive array (eg. AddVertex()) inside a Graphic3d_Group and update the display automatically ?
Marco Nawijn 2013/07/04 20:16
Hi Hugues,

I know this is an OCC forum and don't want to move you away from it, but if you only have to deal with points I think OCC is not the proper tool. Are you aware of VTK and it's GUI bindings to for example Qt? It would be quite straighforward to implement dynamic graphics with points with it (it has excellent Python bindings too).

Regards,

Marco
Hugues Delorme 2013/07/05 18:54
Hello Marco,

Thanks for the advice, but I would like to stay with OpenCascade as I need to display part files (STEP, IGES, ...).
What at least I would like to known is whether or not it's possible to display dynamic graphics with OpenCascade.
Any trick or workaround would be of great help.
 
 
Latest news
  • Open CASCADE Technology 6.8.0 is available for download!
  • New features to enhance the development process
  • Open CASCADE Technology 6.7.1 is available for download!

  • © OPEN CASCADE 2000 - 2014  |  Search  |  Contacts   |  Site map