Skip to content
/ Slicer Public
forked from Slicer/Slicer

Commit

Permalink
ENH: Simplify EndoscopyLogic API introducing saveOrientationAtIndex
Browse files Browse the repository at this point in the history
  • Loading branch information
jcfr committed Dec 8, 2023
1 parent 5fdf4c2 commit eb73109
Showing 1 changed file with 25 additions and 15 deletions.
40 changes: 25 additions & 15 deletions Modules/Scripted/Endoscopy/Endoscopy.py
Original file line number Diff line number Diff line change
Expand Up @@ -428,24 +428,10 @@ def onPlayButtonToggled(self, checked):
self.saveOrientationButton.enabled = True

def onSaveOrientationButtonClicked(self):
# Compute new dictionary key and value
resampledCurve = self.logic.resampledCurve
resampledCurvePointIndex = int(self.frameSlider.value)
distanceAlongResampledCurve = EndoscopyLogic.distanceAlongCurveOfNthControlPoint(
resampledCurve, resampledCurvePointIndex,
)
cameraPosition = self.cameraNode.GetPosition()
focalPoint = self.cameraNode.GetFocalPoint()
viewUp = self.cameraNode.GetViewUp()
worldMatrix3x3 = EndoscopyLogic.buildCameraMatrix3x3(cameraPosition, focalPoint, viewUp)
worldOrientation = EndoscopyLogic.matrix3x3ToOrientation(worldMatrix3x3)

# Add new dictionary key-value pair
cameraOrientations = EndoscopyLogic.getCameraOrientationsFromInputCurve(self.inputCurve)
cameraOrientations[distanceAlongResampledCurve] = worldOrientation

self.ignoreInputCurveModified += 1
EndoscopyLogic.setInputCurveCameraOrientations(self.inputCurve, cameraOrientations)
cameraOrientations = self.logic.saveOrientationAtIndex(resampledCurvePointIndex, self.cameraNode)
self.ignoreInputCurveModified -= 1

self.logic.interpolateOrientations(cameraOrientations)
Expand Down Expand Up @@ -772,6 +758,30 @@ def interpolateOrientations(self, cameraOrientations):

self.resampledCurve.SetNthControlPointOrientation(resampledCurvePointIndex, worldOrientation)

def saveOrientationAtIndex(self, resampledCurvePointIndex, cameraNode):
inputCurve = self.inputCurve
resampledCurve = self.resampledCurve

# Compute CameraOrientations dictionary key
distanceAlongResampledCurve = EndoscopyLogic.distanceAlongCurveOfNthControlPoint(
resampledCurve, resampledCurvePointIndex,
)

# Compute CameraOrientations dictionary value
cameraPosition = cameraNode.GetPosition()
focalPoint = cameraNode.GetFocalPoint()
viewUp = cameraNode.GetViewUp()
worldMatrix3x3 = EndoscopyLogic.buildCameraMatrix3x3(cameraPosition, focalPoint, viewUp)
worldOrientation = EndoscopyLogic.matrix3x3ToOrientation(worldMatrix3x3)

# Add new dictionary key-value pair
cameraOrientations = EndoscopyLogic.getCameraOrientationsFromInputCurve(inputCurve)
cameraOrientations[distanceAlongResampledCurve] = worldOrientation

EndoscopyLogic.setInputCurveCameraOrientations(inputCurve, cameraOrientations)

return cameraOrientations

def removeOrientationAtIndex(self, resampledCurvePointIndexToDelete):
inputCurve = self.inputCurve
resampledCurve = self.resampledCurve
Expand Down

0 comments on commit eb73109

Please sign in to comment.