Difference between revisions of "User talk:Lchauvin"

From NAMIC Wiki
Jump to: navigation, search
Line 31: Line 31:
  
 
===OsteoPlan===
 
===OsteoPlan===
 +
 +
* DONE: Fixed issue that didn't allow to show/hide model from polydata
 +
** FIX: Use this piece of code to create a MRMLModelNode from polydata:
 +
 
 +
  // Create new polydata
 +
  vtkPolyData* polyDataModel1 = vtkPolyData::New();
 +
  //
 +
  // Create New vtkMRMLNode
 +
  this->part1 = vtkMRMLModelNode::New();
 +
  //
 +
  // Create New vtkMRMLModelDisplayNode
 +
  vtkMRMLModelDisplayNode* dnode1 = vtkMRMLModelDisplayNode::New();
 +
  //
 +
  // Add them to the scene
 +
  this->part1->SetScene(this->GetMRMLScene());
 +
  dnode1->SetScene(this->GetMRMLScene());
 +
  //
 +
  this->GetMRMLScene()->AddNode(dnode1);
 +
  this->GetMRMLScene()->AddNode(part1);
 +
  //
 +
  // Use new polydata model to be "ready" to receive data
 +
  part1->SetAndObservePolyData(polyDataModel1);
 +
  part1->SetAndObserveDisplayNodeID(dnode1->GetID());
 +
  //
 +
  // Copy polydata to the new polydata model
 +
  dnode1->SetPolyData(clipper->GetOutput());
 +
  //
 +
  // Clean
 +
  polyDataModel1->Delete();
  
 
* DONE: Enable to resize cutter and keep same position
 
* DONE: Enable to resize cutter and keep same position

Revision as of 00:14, 1 March 2011

Home < User talk:Lchauvin

Projects



Progress reports


Biopsy Module

  • BUG: When slider is smaller than line's length, both sliders are moved
    • FIXED: Add test to watch witch one reach limit, and update range
  • DONE: Use new planes to reslice
    • ISSUE: Render and reslice are two different things, render is called when reslicing (don't call it again)
      • SOLUTION: Add a checkbox
        • Not rendering twice, but render is not call anymore if not reslicing (need to put mouse on 3D Render to update)
  • DONE: Create 3 planes (instead of one): Perpendicular, In-Plane 0 and In-Plane 90
  • DONE: Posibility to create and use different fiducial list to draw line
  • DONE: Add toggle checkbox to turn on/off plane visibility
  • DONE: Translate plane along the axis
  • DONE: Create plane along the line
    • MODIFIED: Plane is now perpendicular to the line
  • DONE: Use two sliders to extend line
    • Line could be extended and retracted, but the distance between fiducials define minimal distance of the line allowed
  • DONE: Create line between two fiducials

OsteoPlan

  • DONE: Fixed issue that didn't allow to show/hide model from polydata
    • FIX: Use this piece of code to create a MRMLModelNode from polydata:
 // Create new polydata 
 vtkPolyData* polyDataModel1 = vtkPolyData::New();
 //
 // Create New vtkMRMLNode
 this->part1 = vtkMRMLModelNode::New();
 //
 // Create New vtkMRMLModelDisplayNode
 vtkMRMLModelDisplayNode* dnode1 = vtkMRMLModelDisplayNode::New();
 //
 // Add them to the scene 
 this->part1->SetScene(this->GetMRMLScene());
 dnode1->SetScene(this->GetMRMLScene());
 //
 this->GetMRMLScene()->AddNode(dnode1);
 this->GetMRMLScene()->AddNode(part1);
 //
 // Use new polydata model to be "ready" to receive data
 part1->SetAndObservePolyData(polyDataModel1);
 part1->SetAndObserveDisplayNodeID(dnode1->GetID());
 //
 // Copy polydata to the new polydata model
 dnode1->SetPolyData(clipper->GetOutput());
 //
 // Clean
 polyDataModel1->Delete();
  • DONE: Enable to resize cutter and keep same position
  • IN PROGRESS: Study the OsteoPlan.tcl from Slicer2
  • IN PROGRESS: Clipped part inside the box, and use vtkPolyDataConnectivityFilter to create models from the two separated part
    • Could be good with SpecifiedRegion if the model was not empty (too many regions else)
      • Is there a way to fill a surface in slicer ?
    • Use Largest region
      • Need a new function on this classs to get "second largest region"
        • Largest region use a sorted array -> Need to find second largest region and return it
          • Second largest region seems not to be the "piece" I needed
  • FAILED: Try to use boudingbox and perform one first positive clipping, and a second negative clipping on the output of the first one.
    • Not possible because of the output of the clipping. Return inside of the box as a model and outside (everything outside, which mean top and bottom part) as another
  • DONE: Installed VTK 5.7, and tried vtkClipClosedSurface
    • Good function, but use infinite plane
  • FAILED: Tried to use kind of boolean operation (vtkExtractPolyDataGeometry, with filters, etc...)
    • Took 15 minutes to perform clipping, with infinite plane, and with model bugs
    • Do not use this way
  • DONE: Clipping with big boundingbox
    • Working, fast, but not really a cutter
    • A cap is missing on the clipped part

LineMotion Extension

  • Extension Completed
  • DONE: Use color for different lines
  • DONE: Keep index of fiducial list and actor synchronized when deleting a fiducial list
  • DONE: Display multiple lines
  • DONE: Posibility to create and use different fiducial list to draw line
  • DONE: Add toggle checkbox to turn on/off plane visibility
  • DONE: Translate plane along the axis
  • DONE: Create plane along the line
    • MODIFIED: Plane is now perpendicular to the line
  • DONE: Use two sliders to extend line
    • Line could be extended and retracted, but the distance between fiducials define minimal distance of the line allowed
  • DONE: Create line between two fiducials

Todo, Bug, Ideas, ...


  • Transform Module
    • ISSUE: Report Transform Module Issue (vtkKWMatrix4x4 observing Matrix4x4 and not vtkMRMLLinearTransformNode, if using ApplyTransform, new node is created and pointer is broken, then Transform Module is not updating anymore)
  • LineMotion Extension
    • BUG: Leaks when clicking several times on "Draw line" button
      • FIXED: Move all "New()" method in constructor instead of event of "draw line" button, and add some verification before using this objects
    • TODO: Find a better way to link Fiducial list and Actor list
      • Synchronize 2 vtkCollections seems not possible -> Need to keep index "synchronized" manually
        • Remove actor when fiducial list deleted to keep the index "synchronized"
  • OsteoPlan Module
    • STEP1: Use cutter to clip model
      • Deadline: February, 27th
    • STEP2: Use widget to move clipped parts of the model
      • Deadline: February, 27th
    • STEP3: Overlap different parts (snap them ?)
      • Deadline: March, 13th
    • STEP4: Put marks on parts
      • Dealine: March, 20th
    • STEP5: Back to original model with marks on it (use original model ? Inverse transformation matrix ?)
      • Deadline: March, 27th
    • IDEA: Use vtkImplicitModeller with vtkBoxWidget2 and a clipping function (propably vtkClipPolyData)
      • FAILED: vtkImplicitModeller compute distance with geometry. Not what I'm looking for.
    • IDEA: Use a filled model
    • IDEA: Use vtkCellPicker to pick the cell in the region and vtkPolyDataConnectivityFilter (option seed region) to find the region selected
    • SUGGESTION: Use box to clip for now, try to improve with just a cutter later