Hi Nil and Thomas, I think it depends heavily on the features the implementation should cover. Nil, could you clarify them in more detail?
Concerning PointSetInteractor for a surface: picking a point won't be a problem, but I assume that this would not satisfy the needs. As setting the exact position in a 3D window is not trivial (because you are interacting on a 2D view) I think you want to interact on the 2D widgets. If you would show the vertices of a surface the way PointSetVtkMappper3D does, you could pick a vertex on a 2D widget. But this would at least snap the point onto that plane. Depending on what you want to achieve this is distracting because you can't set the vertex on a position that lies between all three orthogonal planes (neglecting slice rotation mode). One possibility would be to implement some type of a magnifier tool for surfaces where several vertices in a defined region are moved. So you pick a position in an epsilon region around the surface and you move the vertices in the region the same direction the mouse moves relative to the distance between picked position and those vertices in the region. That interaction would be even possible in 3D if you calculate the mean up vector of the modified region and move the surface in that direction according to mouse movement. The main reason for your boss: A contribution would be more than beneficial because if you give it to the main MITK developers they will also take care of maintaining that code in future releases. Less bugs, more quality and stability... That's what makes a good application, right? Best regards, Ingmar Am 12.06.2013 15:30, schrieb Nil Goyette: > Hi Thomas, thanks for your answer and your suggestions! I can now stop > searching all over mitk's code to be sure I didn't miss anything :) I'll > probably create this Interactor in the next weeks, but I can't say now > if I will contribute it or not. I would, but it's not only my decision. > Thanks again. > > Le 2013-06-12 03:43, Kilgus, Thomas a écrit : >> >> Hi Nil, >> >> this is definitely a feature request. I have not seen something like >> this in MITK, although it would be nice to have. >> >> As you already found out, the PointSetInteractor does the job for >> PointSets. In my opinion, the only tough part is to implement point >> picking on a surface. I have never done anything with picking before. >> You could check VTK if there is any interaction method to select a >> point on a vtkPolydata. All you need is the Id of the point you want >> to modify. Then you could use the arrow-keys/mouse to move your point >> according to the users input. Examples should be in the >> PointSetInteractor and the MoveBaseDataInteractor. After the >> polydata/point is modified you can it transfer to our mitkSurface via >> SetVtkPolyData. Hope that helps. Let me know if you manage to >> implement this and if you would like to contribute it to MITK. >> >> Regards, >> >> Thomas >> >> Thomas Kilgus >> >> German Cancer Research Center (DKFZ) >> >> Div. Medical and Biological Informatics >> >> Junior group: Computer-assisted Interventions (E131) >> >> Im Neuenheimer Feld 280 >> >> 69120 Heidelberg, Germany >> >> Phone: +49(0) 6221-42-3545 >> >> *From:*Nil Goyette [mailto:[email protected]] >> *Sent:* Dienstag, 11. Juni 2013 20:27 >> *To:* [email protected] >> *Subject:* Re: [mitk-users] Mesh, moving points and volume >> >> Hi mitk's users, >> >> Nearly two months have past since my last request for help. I know you >> are all busy, but here's an update anyway, in the hope that someone >> might have a few minutes to help me. >> >> I had time in the last days to search further into my "Move some >> points" problem. Here's some details. I build the mesh of a heart and >> it works quite well. To do so, I use three objects : vtkPolyData >> mitk::Mesh and mitk::Surface. My goal would be to let the user modify >> the mesh/surface by moving points with his mouse. Surprisingly, I >> can't find anything to do it in mitk. I thought it was a frequent >> job. As for now, I found: >> - nothing with vtkPolyData because there's probably no interactor for >> vtk stuff :) >> - mitk::PointSet with a *PointSetInteractor* using type >> "onlymovepointsetinteractor" works perfectly, but ONLY with a >> mitk::PointSet. Even if mitk::Mesh is a subclass of mitk::PointSet, it >> doesn't work, probably because of the >> "dynamic_cast<mitk::PointSet*>(m_DataNode->GetData());" in >> PointSetInteractor::CanHandleEvent in mitkPointSetInteractor.cpp. >> - mitk::Surface with a *SurfaceInteractor* using type >> "AffineInteractor3D" which would work like your Clipping Plane plugin. >> I would probably be able to modify my surface with it, but it only >> works in the 3D view and it's too coarse, I can't target a single >> point. So, it's probably not the good tool for us. >> >> In the end, the only working solution I found is to use a >> mitk::PointSet, but I don't want to copy my points, let the user >> change some, click update and then let the user see the modification >> on the mesh. I want to let him move points (or cells) directly on the >> mesh/surface. >> >> So, does anyone know how to move points/cells on a mesh/surface? Do I >> need to code my own interactor? Thanks for your time. >> > -- > Logo Imeka <http://imeka.ca/> Nil Goyette, M.Sc. > www.imeka.ca <http://imeka.ca/> > > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > > > > _______________________________________________ > mitk-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/mitk-users > ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ mitk-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mitk-users
