[vtkusers] Drawing objects interactively in VTK..??
Rakesh Patil
rakeshthp at in.com
Wed Apr 14 03:22:17 EDT 2010
Hi,As far as my knowledge is concerned, vtkImageTracerWidget generates only one Polyline at a time..thanks Original message From:Darshan Pai< darshanpai at gmail.com >Date: 14 Apr 10 02:24:31Subject:Re: [vtkusers] Drawing objects interactively in VTK..??To: Rakesh Patil , vtkusers at vtk.orgIf in 2D , why not just use a vtkImageCanvas2D and the vtkImageTracerWidget ?RegardsDarshanOn Mon, Apr 12, 2010 at 3:22 AM, Rakesh Patilwrote:Hello Darshan,I see that your code works fine.. There was only a small change in yours and mine ... The difference was that i was displaying the actors outside the mouse click event and in your case, you are displaying actors in the mouse click event..When i rendered my actors it also worked fine.. But i found a small problem.. As i go deeper and deeper by zooming.. points the clicking point and displaying points are not matching each others. Then i though there might be some problem in my code.. So, i carried out the same test with your code, and found t
hat as I click away from the center point, the mouse position and display position are not matching... Just zoom out as much as possible and check it once... Ya and i forgot to tell one more thing... I want to implement it in 2D display.. So i changed the followin part of code: sphereSource>SetCenter(pt[0],pt[1],pt[2]*1*n[0]);tosphereSource>SetCenter(pt[0],pt[1],0);Will this change create some problem..??ThanksRegardsRakesh Patil Original message From:Darshan Pai< darshanpai at gmail.com > Date: 12 Apr 10 06:27:53Subject: Re: [vtkusers] Drawing objects interactively in VTK..??To: Rakesh Patil #include #include#include #include #include #include#include #include #include #include #include #include #include// Define interaction styleclass MouseInteractorStyle : public vtkInteractorStyleTrackballCamera{ public:static MouseInteractorStyle* New();vtkTypeRevisionMacro(MouseInteractorStyle, vtkInteractorStyleTrackballCamera); virtual void OnLeftButtonDown() { cout GetEventPosition()[0
]; double y = this>Interactor>GetEventPosition()[1]; cout SetColor(1,0,0); //render>ResetCamera(); //render>ResetCameraClippingRange(); render>GetRenderWindow()>GetInteractor()>Render(); // vtkInteractorStyleTrackballCamera::OnLeftButtonDown();} virtual void OnMiddleButtonDown() { cout AddRenderer(renderer); renderWindow>SetSize(500,500); // renderWindow>SetSvtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); renderWindowInteractor>SetRenderWindow ( renderWindow );vtkSmartPointer style = vtkSmartPointer::New(); renderWindowInteractor>SetInteractorStyle( style ); style>render = renderer; renderWindowInteractor>Initialize(); renderer>ResetCamera(); //renderer>ResetCameraClippingRange(); renderWindow>Render(); vtkCamera *camera = renderer>GetActiveCamera(); camera>SetClippingRange(1,30); double *n = new double[2]; n = camera>GetClippingRange();vtkSmartPointer coordinate = vtkSmartPointer::New(); coordinate>SetCoordinateSystemToDisplay(); coordinate>SetValue(250,147
); double *pt = new double[3]; pt = coordinate>GetComputedWorldValue(renderer); cout AddActor(actor); //renderer>ResetCamera();renderWindowInteractor>Start();return EXITSUCCESS;}On Thu, Apr 8, 2010 at 9:25 PM, Rakesh Patilwrote: Hi,I tried with that also... But no use.. By the way, I'm using wxVTKRenderWindowInteractor.. So wil this create any problem..?? Because you said, you reproduced the same without any actor.. can you attach your piece of code ..?? thanksregardsrakesh patil Original message From:Darshan Pai< darshanpai at gmail.com >Date: 09 Apr 10 00:18:54Subject: Re: [vtkusers] Drawing objects interactively in VTK..??To: Rakesh Patil This should be mainPG::getInstance()>newArc>InsertNextPoint(pt[0], pt[1], pt[2]*1*n[0]);RegardsDP On Thu, Apr 8, 2010 at 1:05 PM, Rakesh Patilwrote: Hi Darshan, In the mouse click event, i have the followin block of code..vtkCamera *camera = this>Interactor>GetRenderWindow()>GetRenderers()>GetFirstRenderer()>GetActiveCamera();double *n = ne
w double[2];n = camera>GetClippingRange();vtkSmartPointer coordinate = vtkSmartPointer::New(); coordinate>SetCoordinateSystemToDisplay();coordinate>SetValue(x,y); // display coordinates double *pt = new double[3]; pt = coordinate>GetComputedWorldValue(this>Interactor>GetRenderWindow()>GetRenderers()>GetFirstRenderer()); mainPG::getInstance()>newArc>InsertNextPoint( pt[0]*pt[2], pt[1]*pt[2], pt[2]*1*n[0]);mainPG::getInstance()>newArc>EndOfDrawing(false); So here, for each mouse click event, the values are stored in an object called newArc.. I use right click to stop the iteractively drawing..Thus for the right click event, i call,mainPG::getInstance()>newArc>EndOfDrawing(true); mainPG::getInstance()>newArc>Update();Here the Update() function causes that object to create an actor and display it in the render window. But i still not getting the way it comes using vtkImageTracerWidget.. I mean, i ckick at one place and it really get displayed somewhere else..Any more ideas or su
ggestions..??ThanksRegardsRakesh Patil Original message From:Darshan Pai< darshanpai at gmail.com >Date: 08 Apr 10 08:13:18Subject: Re: [vtkusers] Drawing objects interactively in VTK..?? To: Rakesh Patil Did you multiply z with the near clipping plane . because I could reproduce what you want to do without the actor . Anyway if that is not working for you then I don't have any other explanations at this time :)RegardsDarshanOn Wed, Apr 7, 2010 at 9:58 PM, Rakesh Patilwrote: Yes..I did try that at the very beginning... Not only this but i tried out the various combination of the coordinates.. none ofthem matched for me... :)vtkImageTracerWidget is performing the task what i want.. but it needs a prop beneath it.... and for me, it is with or without prop object.. wither ways it should be possible for me to draw...Any suggestions..?? Thanks RegardsRakesh Patil Original message From:Darshan Pai< darshanpai at gmail.com >Date: 08 Apr 10 04:55:02Subject: Re: [vtkusers] Drawing objects
interactively in VTK..??To: Rakesh Patil replied too fast . The displaytoview() and viewToWorld does not take points as input.But you can use the vtkCoordinate . Try this particular snippet of code.vtkCamera *camera = renderer>GetActiveCamera(); double *n = new double[2];n = camera>GetClippingRange();vtkSmartPointer coordinate = vtkSmartPointer::New(); coordinate>SetCoordinateSystemToDisplay();coordinate>SetValue(x,y); // display coordinates double *pt = new double[3]; pt = coordinate>GetComputedWorldValue(renderer); coutdoing is at every left button down event, i get the mouse position and store> it is a vector list. Later using this points am displaying on the rendering> window.>> But when i do this, i noticed the following:>>The mouse position values are totally different from the the points which> are displayed.. I mean, i click at one location, and it is displayed at far> end another location..>> I tried changing the coordinate system also.. Still the result is> unchang
ed..>> Any suggestions how it is to be done..??>> Thanks> Rakesh Patil>Sounds like you may need a coordinate system conversion in there somewhere, check out:http://vtk.org/Wiki/VTK/Examples/CoordinateIt also sounds like you are trying to duplicate already working code in:http://vtk.org/Wiki/VTK/Examples/Widgets/ImageTracerWidgetThanks,DavidGet Yourself a cool, short @in.com Email ID now! Powered by www.kitware.comVisit other Kitware opensource projects at http://www.kitware.com/opensource/opensource.htmlPlease keep messages ontopic and check the VTK FAQ at: http://www.vtk.org/Wiki/VTKFAQFollow this link to subscribe/unsubscribe: http://www.vtk.org/mailman/listinfo/vtkusersDear Darshan Pai ! Get Yourself a cool, short @in.com Email ID now!Get Yourself a cool, short @in.com Email ID now!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100414/6352a46a/attachment.htm>
More information about the vtkusers
mailing list