Class SurfaceRender

  • All Implemented Interfaces:
    com.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback, ViewImageUpdateInterface, java.awt.event.ActionListener, java.awt.event.KeyListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.ChangeListener
    Direct Known Subclasses:
    FlythruRender, SurfaceView

    public class SurfaceRender
    extends RenderViewBase
    implements java.awt.event.KeyListener, java.beans.PropertyChangeListener
    Frame that holds the surface renderer. This frame is only possible to activate if a three dimensional image is loaded. The image shows up in the frame as the three planes, with an axial view, a coronal view, and a sagittal view. The user can slide these planes up and down and can turn them on and off. The user can also load in surfaces created from the original image. These 3D surfaces will appear in the proper place within the three image planes. There are many options for viewing the surfaces. Additionally, the user can change the view mode, so that the mouse causes the view to "fly". The user can then record the different mouse actions and play them back.
    See Also:
    ViewJComponentSurfaceImage, JDialogSurface, JDialogView, JDialogMouseRecorder, Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.awt.Canvas

        java.awt.Canvas.AccessibleAWTCanvas
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void actionPerformed​(java.awt.event.ActionEvent event)
      Calls various methods depending on the action.
      private void addBoxSlice​(int orientation)
      Adds the slice frame for slice of the given orientation to the scene graph.
      void addCubicControl()
      Attach cubic control branch group.
      void autoCapture()
      Overrides the parent autoCapture method.
      private com.sun.j3d.utils.geometry.Box buildCubicBox()
      Create the rotation control cubic box.
      private void buildCubicBranch()
      Build the cubic branch under the objRootBG.
      void cleanMouseRecorder()
      Clean mouse recorder for any existing event items.
      void close()
      Closes the image.
      private void configureSliceFrame()
      Constructs main frame structures for 3 image planes.
      void configureVolumeFrame()
      Constructs main frame structures for 3 image planes.
      private void createImageSceneGraph()
      Creates the scene graph, made up of a branch group parent, a transform group under that which applies mouse behavior and lights to the scene, and three branch groups under the transform group for each of the three image planes.
      void cropClipVolume()
      Crop the region of the clipped volume.
      void detachVolRender()
      Detach volume render branch group.
      void disableClipping()
      Diable all the six clipping planes at a time.
      void dispatchSavedEvent​(java.util.EventObject event)
      Dispatches event to appropriate object.
      void disposeLocal​(boolean flag)
      Sets all variables to null, disposes, and garbage collects.
      void drawRFAPoint​(javax.vecmath.Point3f kPoint)
      Called from the parent class when the Probe Entry Point is selected in the PlaneRender object.
      void enableEntryPoint​(boolean flag)
      Set entry point rotation flag.
      void enableObjBehavior​(boolean flag)
      Enable objBehavior branch group.
      private void generateRFACoordMaps()
      Generates the texture coord map vectors for the three orthogonal slices.
      private javax.vecmath.Vector4f generateRFACoordMaps​(int orientation, int texCoord)
      create texture coordmaps for the texture-mapped planes displaying the triSliceImages.
      private void getBoxSliceInScreen​(javax.vecmath.Vector3f[] screenBoxPoints, int[] boxSliceConstants)
      sets up the values for the ViewJComponentBoxSlice array.
      JPanelCamera getCameraControl()
      Get the rotation control dialog box.
      JPanelClip getClipDialog()
      Return clipPanel from parent frame.
      JPanelDisplay getDisplayDialog()
      Return the diaplay dialog.
      boolean getDisplayMode3D()
      Return the current volume display mode.
      JPanelGeodesic getGeodesicPanel()
      Get the geodesic control panel.
      ModelImage getImageA()
      Accessor that returns the reference to image A.
      ModelImage getImageB()
      Accessor that returns the reference to image B.
      JPanelMouse getMouseDialog()
      Return mousePanel from parent frame.
      int getMouseMode()
      Gets the mouse pointer mode - standard or fly - from the view dialog.
      javax.media.j3d.BranchGroup getObjBoxSlice_BG​(int orientation)
      Return the X box color frame.
      javax.media.j3d.BranchGroup getObjPlane_BG​(int orientation)
      Gets the objXYPlaneBG branch group.
      double getOriginalScreenScale()
      Return the original ScreenScale for orthographic projection:
      ViewJFrameVolumeView getParentFrame()
      Return the parent frame.
      JPanelProbe getProbeDialog()
      Return probePanel from parent frame.
      float[] getResolutions()
      Returns the ModelImage resolutions.
      java.lang.Object getSceneState()
      Gets the current scene state, in terms of what numbers the slices are on and whether or not they are visible.
      JPanelSculptor getSculptorPanel()
      Return the sculptor panel.
      ModelImage getSegmentationImage()
      Return the segmentation region map image which contains info on where the vascualture, etc are located.
      JPanelSlices getSlicePanel()
      return the current active slicePanel interface.
      float getSliceSpacingCoarse()
      Retrieve the current "coarse" spacing between slices.
      float getSliceSpacingFine()
      Retrieve the current "fine" spacing between slices.
      JPanelSurface getSurfaceDialog()
      Return surfacePanel from parent frame.
      JPanelSurfaceTexture getSurfaceTexture()
      Returns the surface texture panel interface.
      javax.swing.JPanel getSurfaceTexturePanel()
      Returns the surface texture panel mainPanel interface.
      JPanelView getViewDialog()
      Return the viewPanel from parent frame.
      JPanelVolumeOpacity getVolOpacityPanel()
      Return volume opacity control Dialog from parent frame.
      javax.media.j3d.BranchGroup getVolRenderBG()
      Return volume render Branch Group.
      javax.media.j3d.OrderedGroup getVolRenderOG()
      Return volume render Order Group.
      VolumeTexture getVolumeTexture()
      Return texture, the VolumeTexture member variable.
      javax.media.j3d.Group getVolumeTextureCopy​(int iView)
      Returns the left of right eye copy of the NodeVolumeTextureRender:
      void hideBoxFrame()
      Makes the box frame invisible.
      void invokeClipping()
      Enable the six clipping planes at a time.
      boolean isVolViewMode()
      Check is volume view frame or not.
      void keyPressed​(java.awt.event.KeyEvent arg0)  
      void keyReleased​(java.awt.event.KeyEvent arg0)  
      void keyTyped​(java.awt.event.KeyEvent arg0)  
      void ModelToScreen​(javax.vecmath.Vector3f model, javax.vecmath.Vector3f screen)
      Translate from Model coordinates to normalized plane coordinates:
      void propertyChange​(java.beans.PropertyChangeEvent arg0)  
      void reConfigureVolumeFrame()
      Constructs main frame structures for 3 image planes.
      void removeBoxSlice​(int orientation)
      Detaches the slice frame on the slice for the given orientation.
      void removeCubicControl()
      Detach cubic control branch group.
      void resetAxisX()
      Overrides the parent resetImage method.
      void resetAxisY()
      Overrides the parent resetImage method.
      void resetImage()
      Overrides the parent resetImage method.
      void rotateImage()
      Overrides the rotateImage to rotate the surface volume.
      void saveCropVolume()
      Save crop region with the clipped volume.
      private void ScreenToModel​(javax.vecmath.Vector3f screen, javax.vecmath.Vector3f model)
      Translate from normalized plane coordinates to Model coordinates:
      void setAlphaBlend​(int value)
      Sets the alpha blending of parameter for two image displays.
      void setCenter​(javax.vecmath.Vector3f center)
      Sets the values for JPanelSlices, based on the positions in the PlaneRender class for the AXIAL, CORONAL, and SAGITTAL views.
      void setCompositeMode()
      Set the texture renderer to render in composite mode.
      void setDisplayMode3D​(boolean flag)
      Hack.
      void setGUI​(java.lang.Object scene)
      Sets the GUI components to their proper state before the action is dispatched from the player.
      void setLightingMode()
      Set the texture render to render in lighting mode.
      void setLUTa​(ModelLUT LUT)
      Accessor that sets the LUT for image A.
      void setLUTb​(ModelLUT LUT)
      Accessor that sets the LUT for image B.
      void setMaterialShininess​(float value)
      Set the texture material shininess value.
      void setMouseMode​(int mode)
      Sets the mouse pointer mode - standard or fly - in the view dialog.
      void setMouseRotateEnable​(boolean bEnable)
      Allow disabling or enabling mouse rotation:
      void setParallelRotation​(boolean flag)
      Set the parallel rotation flag from the viewJFrameVolumeView.
      void setProbeTG​(javax.media.j3d.Transform3D kTransform, boolean bTwist)
      Sets the Transform3D for the slices based on the Probe Transform.
      void setRayBasedRender​(VolumeRenderer _rayBasedRender)
      Set the reference to ray based renderer, raycast renderer or shear warp renderer.
      void setRenderPerspective​(boolean bEnable)
      Enable perspective projection rendering; otherwise use orthographic projection.
      void setRGBTA​(ModelRGB RGBT)
      Sets the RGB table for image A.
      void setRGBTB​(ModelRGB RGBT)
      Sets the RGB table for image B.
      void setSegmentationImage​(ModelImage img)
      Set the image which we can check to see if the probe is hitting anything important (such as vessels, etc).
      void setSlice​(int slice)
      Does nothing but must instantiate for this to implements ViewImageUpdateInterface.
      void setSliceColor​(java.awt.Color color, int orientation)
      Sets the color of the x slice frame.
      void setSliceSpacingCoarse​(float fSpacing)
      Set the desired "coarse" spacing between slices.
      void setSliceSpacingFine​(float fSpacing)
      Set the desired "fine" spacing between slices.
      void setTimeSlice​(int slice)
      Sets the time slice to be displayed and changes the image planes displayed.
      private void setupEye()
      Set up the center point of the red line boxframe.
      void setViewTextureAligned​(boolean flag)
      Switch between the volume texture mode and the regular volume texture mode.
      void setVolumeDisplayMode​(boolean volDisplayMode)
      Accessor that sets the volumeDisplayMode flag.
      void setVolView​(boolean flag)
      Set the volume view mode to true from the ViewJFrameVolumeView During mouse recorder displaying, the flag control the updating of the opacity histogram.
      void showBoxFrame()
      Makes the box frame visible.
      void showBoxSlice​(int orientation)
      Makes the box slice for the given orientation visible.
      void stateChanged​(javax.swing.event.ChangeEvent e)
      Sets how the image plane should be displayed depending on value of slider.
      void switchToSliceView​(boolean firstTime)
      Perform some actions required when switching to the slice renderer.
      void switchToVolView​(boolean firstTime)
      Perform some actions required when switching to the volume renderer.
      private void transformBoxSlices​(javax.media.j3d.Transform3D kTransform)
      transform the points used to render the triSliceImages textures.
      void transformChanged​(int type, javax.media.j3d.Transform3D transform)
      Tells the mouse dialog that the transform has changed.
      void transformUpdate​(int type, javax.media.j3d.Transform3D transform)
      The raybased renderer invokes this method when a mouse release event occurs.
      void undoCropVolume()
      Undo crop region with the clipped volume.
      boolean update3DTriplanar​(ModelLUT LUTa, ModelLUT LUTb, boolean forceShow)
      This methods calls the componentImage's update method to redraw the screen.
      void updateBoxSlicePos​(boolean bParentUpdate)
      Update the X, Y, Z box frame positions.
      void updateBoxSlices()
      Sets new frame around slice x based on the new position.
      void updateCubicTransform​(double[] mat)
      Update the transform3D for the cubic.
      void updateCubicTransform​(javax.media.j3d.Transform3D transform)
      Update the transform3D for the cubic.
      void updateData()
      Called when the underlying data has changed, due to sculpting.
      boolean updateImageExtents()
      This methods calls the componentImage's REPAINT method to redraw the screen.
      void updateImageFromRotation()
      Build a image with the current rotational transformation matrix.
      boolean updateImages()
      This methods calls the componentImage's update method to redraw the screen - fastest of the three update methods.
      boolean updateImages​(boolean flag)
      This methods calls the componentImage's update method to redraw the screen.
      boolean updateImages​(ModelLUT LUTa, ModelLUT LUTb, boolean forceShow, int interpMode)
      This methods calls the componentImage's update method to redraw the screen.
      void updateLighting()
      This method is normally called by JPanelLights when a light bulb property changes.
      void updateOpacityOfOthrogPlanes​(int opX, int opY, int opZ)
      Updates the 3 orthogonal 2D texture maps' opacities.
      void updateParent()  
      void updateProbe​(boolean forceShow, boolean bInterpolate, boolean bReset)
      Updates the slice textures based on the Probe position and rotation angle.
      void updateProbePos()
      Not used now.
      void updateRaycastRender()
      Update the raycast based renderer.
      void updateShininess​(float value)
      Update the shininess from the JPanelLights.
      private void updateTextureVolumeRender()
      Determine the current viewing transformation and pass it to the texture volume renderer so that it can update itself.
      void updateTransform()
      Tells the mouse dialog that the transform has changed.
      private void updateViewScreenScale​(javax.media.j3d.Transform3D kTransform)
      This function calculates the scale factor for zooming in parallel projection.
      boolean updateVolume​(ModelLUT LUTa, ModelLUT LUTb, boolean forceShow)
      This methods calls the componentImage's update method to redraw the screen.
      void useSliceSpacingCoarse()
      Select the "coarse" slice sampling for rendering.
      void useSliceSpacingFine()
      Retrieves whether the "fine" slice sampling is currently selected.
      int whichTissue​(float x, float y, float z)
      Check the given voxel belong to which segmentation.
      • Methods inherited from class javax.media.j3d.Canvas3D

        addNotify, getCenterEyeInImagePlate, getDoubleBufferAvailable, getDoubleBufferEnable, getGraphics2D, getGraphicsContext3D, getImagePlateToVworld, getInverseVworldProjection, getLeftEyeInImagePlate, getLeftManualEyeInImagePlate, getLocationOnScreen, getMonoscopicViewPolicy, getOffScreenBuffer, getOffScreenLocation, getOffScreenLocation, getPhysicalHeight, getPhysicalWidth, getPixelLocationFromImagePlate, getPixelLocationInImagePlate, getPixelLocationInImagePlate, getRightEyeInImagePlate, getRightManualEyeInImagePlate, getSceneAntialiasingAvailable, getScreen3D, getStereoAvailable, getStereoEnable, getView, getVworldProjection, getVworldToImagePlate, isOffScreen, isRendererRunning, isShadingLanguageSupported, postRender, preRender, queryProperties, removeNotify, renderField, renderOffScreenBuffer, setDoubleBufferEnable, setLeftManualEyeInImagePlate, setMonoscopicViewPolicy, setOffScreenBuffer, setOffScreenLocation, setOffScreenLocation, setRightManualEyeInImagePlate, setStereoEnable, startRenderer, stopRenderer, swap, waitForOffScreenRendering
      • Methods inherited from class java.awt.Canvas

        createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy
      • Methods inherited from class java.awt.Component

        action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, revalidate, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setMixingCutoutShape, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Use serialVersionUID for interoperability.
        See Also:
        Constant Field Values
      • ARTERIAL_SEG

        public static final int ARTERIAL_SEG
        Value which indicates a voxel that is part of the arterial vasculature tree.
        See Also:
        Constant Field Values
      • VEINOUS_SEG

        public static final int VEINOUS_SEG
        Value which indicates a voxel in the segmenation image that is part of the veinous vasculature tree.
        See Also:
        Constant Field Values
      • VASCULATURE_SEG

        public static final int VASCULATURE_SEG
        Value which indicates a voxel in the segmenation image that is part of the vasculature (arterial or veinous).
        See Also:
        Constant Field Values
      • TUMOR_SEG

        public static final int TUMOR_SEG
        Value which indicates a voxel in the segmenation image that is part of the tumor.
        See Also:
        Constant Field Values
      • BONE_SEG

        public static final int BONE_SEG
        Value which indicates a bone in the image.
        See Also:
        Constant Field Values
      • ENTRY_POINT

        public static final int ENTRY_POINT
        Value which indicates the probe entry point color.
        See Also:
        Constant Field Values
      • isViewTextureAligned

        protected boolean isViewTextureAligned
        Flag to indicate whether the view volume texture is aligned or not.
      • rayBasedRender

        protected VolumeRenderer rayBasedRender
        Raycast based renderer reference, raycast renderer or shear warp renderer.
      • isTriPlanarVolView

        boolean isTriPlanarVolView
        Mode is tri-planar volume view or not.
      • boxPanel

        private JPanelDisplay boxPanel
        Dialog to turn bounding box of surface renderer on and off, and to change the color of the frame.
      • boxSlices

        private final ViewJComponentBoxSlice[] boxSlices
        The frame around the AXIAL, CORONAL, SAGITTAL slices:
      • boxSliceVertices

        private javax.vecmath.Vector3f[][] boxSliceVertices
        The transformed boxSlices frames used to sample the volume data along diagonal slices:
      • clipPanel

        private JPanelClip clipPanel
        Dialog to turn the clipping palne box on and off.
      • triSliceGeometry

        private final javax.media.j3d.Shape3D[] triSliceGeometry
      • cubicBehaviorBG

        private javax.media.j3d.BranchGroup cubicBehaviorBG
        The cubic roational behavior branch group.
      • cubicBG

        private javax.media.j3d.BranchGroup cubicBG
        Cubic branch group.
      • cubicRotate

        private com.sun.j3d.utils.behaviors.mouse.MouseRotate cubicRotate
        Cubic mouse rotation behavior.
      • cubicTG

        private javax.media.j3d.TransformGroup cubicTG
        Cubic transform group.
      • currentTransform

        private javax.media.j3d.Transform3D currentTransform
        Current transform matrix.
      • currentTransformType

        private int currentTransformType
        Current transform changes type.
      • first6ClipPlane

        private boolean first6ClipPlane
        flag indicate the first time 6 clipping plane branch switch.
      • firstClipArbi

        private boolean firstClipArbi
        flag indicate the first time arbitrary clipping plane branch switch.
      • imageA

        private ModelImage imageA
        Current image A.
      • imageB

        private ModelImage imageB
        Current image B.
      • imageVolBufferA

        private float[] imageVolBufferA
        Buffer that holds image A volume data.
      • imageVolBufferB

        private float[] imageVolBufferB
        Buffer that holds image B volume data.
      • isEntryPoint

        private boolean isEntryPoint
        Flag indicates that probe rotate around the entry point or not.
      • m_bRenderModeLighting

        private boolean m_bRenderModeLighting
        Flag set when texture volume is being rendered using lights.
      • m_dOriginalScreenScale

        private double m_dOriginalScreenScale
        Zoomfactor, zooming in screen scale space, and is relative to original position, this stores that original position:.
      • m_kObjBoxSliceProbe_TG

        private final javax.media.j3d.TransformGroup[] m_kObjBoxSliceProbe_TG
        TransformGroup[] used to rotate the AXIAL, CORONAL, SAGITTAL slice BOXES:
      • m_kObjPlaneProbe_TG

        private final javax.media.j3d.TransformGroup[] m_kObjPlaneProbe_TG
        TransformGroup[] used to rotate the AXIAL, CORONAL, SAGITTAL slice PLANES:
      • m_kProbeTransform

        private javax.media.j3d.Transform3D m_kProbeTransform
        The Transform3D used to position the planes based on the Probe position and angle. The planes are rotates about the intersection between the probe and the plane, which may or may not be in the center of the plane. This transform allows non-origin rotations by conactenating the translation to the origin, rotation, and translation matricies into one transform, which is used to set the Transforms for the TransformGroups above and also to sample the ModelImage data on the diagonal slice:
      • m_kSoftwareLightSet

        private SoftwareLightSet m_kSoftwareLightSet
        Used to compute software lighting of composite texture volume.
      • m_kSoftwareMaterial

        private SoftwareMaterial m_kSoftwareMaterial
        DOCUMENT ME!
      • mousePanel

        private JPanelMouse mousePanel
        Dialog for recording and playing back mouse events.
      • mouseRotateBehavior

        private MouseRotateExt mouseRotateBehavior
        Mouse Rotate behavior.
      • mouseTranslateBehavior

        private com.sun.j3d.utils.behaviors.mouse.MouseTranslate mouseTranslateBehavior
        Mouse Translate behavior.
      • mouseZoomBehavior

        private com.sun.j3d.utils.behaviors.mouse.MouseZoom mouseZoomBehavior
        Mouse Zoom behavior.
      • myEyePoint

        private final javax.vecmath.Point3d myEyePoint
        Initial center viewing point of the image.
      • objBoxSlices_BG

        private final javax.media.j3d.BranchGroup[] objBoxSlices_BG
        BranchGroup[] containing the slice BOXES:
      • objTransSlices_TG

        private final javax.media.j3d.TransformGroup[] objTransSlices_TG
        Group dictating how the XY plane is translated.
      • objPlane_BG

        private final javax.media.j3d.BranchGroup[] objPlane_BG
        BranchGroup[] containing the image planes.
      • parallelRotation

        private boolean parallelRotation
        Parallel rotation flag.
      • parallelScaleT3D

        private javax.media.j3d.Transform3D parallelScaleT3D
        Transformation matrix.
      • parent

        private ViewJFrameBase parent
        Controls for the image. ViewJFrameVolumeView
      • probePanel

        private JPanelProbe probePanel
        Dialog for loading and displaying probes.
      • resols

        private float[] resols
        Resolutions of image A.
      • rotationCount

        private int rotationCount
        fix one bug from threading.
      • segmentationImage

        private ModelImage segmentationImage
        Image with areas marked with values indicating that they are special tissue types (vessels, etc).
      • slicePanel

        private JPanelSlices slicePanel
        Dialog to turn the slices control box on and off.
      • surfacePanel

        private JPanelSurface surfacePanel
        Dialog for loading and displaying surfaces.
      • surfaceTexturePanel

        private JPanelSurfaceTexture surfaceTexturePanel
        Panel for displaying the SurfaceTexture interface:
      • switchGroup

        private javax.media.j3d.Switch switchGroup
        Tri planar view and the 3D texture volume view switch group.
      • rotationAlpha

        private javax.media.j3d.Alpha rotationAlpha
      • sliceTransparency

        private final javax.media.j3d.TransparencyAttributes[] sliceTransparency
        ViewJComponentTriSliceImages -> Texture2D transparency values:
      • texture

        private VolumeTexture texture
        Reference to 3D texture node for the volume.
      • sliceTextures

        private final javax.media.j3d.Texture2D[] sliceTextures
        ViewJComponentTriSliceImages -> Texture2D to display the image slices:
      • sliceImageComponent2D

        private final javax.media.j3d.ImageComponent2D[] sliceImageComponent2D
        Each Texture2D adds a ImageComponent2D:
      • m_kRFACoordMaps

        javax.vecmath.Vector4f[][] m_kRFACoordMaps
        Texture mapping for the RFA probe rotation:
      • transformCubic

        private javax.media.j3d.Transform3D transformCubic
        Cubic tansform3D.
      • transformNode3d

        private javax.media.j3d.Transform3D transformNode3d
        Setup the initial position of the image, added to ScenerootTG transform group.
      • view

        private javax.media.j3d.View view
        View object in rendering a three dimensional scene from one viewpoint.
      • volBG

        private javax.media.j3d.BranchGroup volBG
        Volume branch group.
      • volRenderBG

        private javax.media.j3d.BranchGroup volRenderBG
        Volume render branch group.
      • volRenderOG

        private javax.media.j3d.OrderedGroup volRenderOG
        Volume render order group, specify the rendering order.
      • volumeDisplayMode3D

        private boolean volumeDisplayMode3D
        If true display 3D volume as a 3D texture map or 2D array of texture maps. If false display 3 orthogonal image planes.
      • xBox

        private float xBox
        Numbers dicatating the sizes of the planes based on the extents and resolutions of the image.
      • yBox

        private float yBox
        Numbers dicatating the sizes of the planes based on the extents and resolutions of the image.
      • zBox

        private float zBox
        Numbers dicatating the sizes of the planes based on the extents and resolutions of the image.
      • maxBox

        private float maxBox
        Numbers dicatating the sizes of the planes based on the extents and resolutions of the image.
      • xDim

        private int xDim
        Dimensions of image A.
      • yDim

        private int yDim
        Dimensions of image A.
      • zDim

        private int zDim
        Dimensions of image A.
      • tDim

        private int tDim
        Dimensions of image A.
    • Constructor Detail

      • SurfaceRender

        public SurfaceRender​(ModelImage _imageA,
                             ModelImage _imageB,
                             java.awt.GraphicsConfiguration _config)
        Constructor called by the VirtualEndoscopyView. Used for instantiation.
        Parameters:
        _imageA - ModelImage imageA
        _imageB - ModelImage imageB always null
        _config - GraphicsConfiguration graphics configuration
      • SurfaceRender

        public SurfaceRender​(ModelImage _imageA,
                             ModelLUT _LUTa,
                             ModelImage _imageB,
                             ModelLUT _LUTb,
                             ViewJFrameBase _parent,
                             java.awt.GraphicsConfiguration _config,
                             ViewJProgressBar _pBar)
        Makes a frame and puts the three image planes into it. Creates the scene graph which dictates the behavior of the image planes and surfaces. Initializes the surface dialog and the mouse recorder dialog, so that this original view is saved. When the user opens these dialogs, they have already been created; they are just set to visible.
        Parameters:
        _imageA - First image to display, cannot be null.
        _LUTa - LUT of the imageA (if null grayscale LUT is constructed).
        _imageB - Second loaded image, may be null.
        _LUTb - LUT of the imageB, may be null.
        _parent - Frame base reference.
        _config - configuration reference.
        _pBar - progress bar
    • Method Detail

      • actionPerformed

        public void actionPerformed​(java.awt.event.ActionEvent event)
        Calls various methods depending on the action.
        • Surface - opens the surface dialog
        • View - opens the view control dialog
        • Mouse - opens the mouse recorder dialog
        • About - displays a message about this renderer
        • Exit - sets variables to null and disposes of this frame
        • X, Y, Z checkboxes - toggles the appropriate image planes on or off
        Specified by:
        actionPerformed in interface java.awt.event.ActionListener
        Parameters:
        event - Event that triggered function.
      • addBoxSlice

        private void addBoxSlice​(int orientation)
        Adds the slice frame for slice of the given orientation to the scene graph. It is necessary to make a new branch group and transform group because otherwise there is a RestrictedAccessException.
        Parameters:
        orientation - the slice to add: AXIAL, CORONAL, or SAGITTAL
      • addCubicControl

        public void addCubicControl()
        Attach cubic control branch group.
      • autoCapture

        public void autoCapture()
        Overrides the parent autoCapture method. Camera use this method to take snapshot automatically.
        Overrides:
        autoCapture in class RenderViewBase
      • cleanMouseRecorder

        public void cleanMouseRecorder()
        Clean mouse recorder for any existing event items.
      • close

        public void close()
        Closes the image.
      • configureVolumeFrame

        public void configureVolumeFrame()
        Constructs main frame structures for 3 image planes. Makes the LUT if necessary, then sets up the buffer arrays appropriately and calls the constructors for the three image planes.
      • cropClipVolume

        public void cropClipVolume()
        Crop the region of the clipped volume.
      • detachVolRender

        public void detachVolRender()
        Detach volume render branch group.
      • disableClipping

        public void disableClipping()
        Diable all the six clipping planes at a time.
      • dispatchSavedEvent

        public void dispatchSavedEvent​(java.util.EventObject event)
        Dispatches event to appropriate object.
        Parameters:
        event - Event to dispatch.
      • disposeLocal

        public void disposeLocal​(boolean flag)
        Sets all variables to null, disposes, and garbage collects.
        Parameters:
        flag - DOCUMENT ME!
      • drawRFAPoint

        public void drawRFAPoint​(javax.vecmath.Point3f kPoint)
        Called from the parent class when the Probe Entry Point is selected in the PlaneRender object.
        Parameters:
        kPoint - probe entry point in ModelStorageBase Coordinates
      • enableEntryPoint

        public void enableEntryPoint​(boolean flag)
        Set entry point rotation flag.
        Parameters:
        flag - boolean
      • enableObjBehavior

        public void enableObjBehavior​(boolean flag)
        Enable objBehavior branch group.
        Parameters:
        flag - true means turn on, false means turn off.
      • getCameraControl

        public JPanelCamera getCameraControl()
        Get the rotation control dialog box.
        Returns:
        rotationControlDialog rotation control dialog
      • getClipDialog

        public JPanelClip getClipDialog()
        Return clipPanel from parent frame.
        Returns:
        clipPanel Clip Dialog box.
      • getDisplayDialog

        public JPanelDisplay getDisplayDialog()
        Return the diaplay dialog.
        Returns:
        boxPanel Display dialog.
      • getDisplayMode3D

        public boolean getDisplayMode3D()
        Return the current volume display mode.
        Returns:
        volumeDisplayMode3D volume 3D diaplay mode.
      • getGeodesicPanel

        public JPanelGeodesic getGeodesicPanel()
        Get the geodesic control panel.
        Returns:
        JPanelGeodesic geodesic control panel.
      • getMouseDialog

        public JPanelMouse getMouseDialog()
        Return mousePanel from parent frame.
        Returns:
        mousePanel Mouse Dialog box.
      • getMouseMode

        public int getMouseMode()
        Gets the mouse pointer mode - standard or fly - from the view dialog.
        Returns:
        The mouse pointer mode.
      • getObjBoxSlice_BG

        public javax.media.j3d.BranchGroup getObjBoxSlice_BG​(int orientation)
        Return the X box color frame.
        Returns:
        objBoxSliceX_BG Called be the JDialogSliceBox
      • getObjPlane_BG

        public javax.media.j3d.BranchGroup getObjPlane_BG​(int orientation)
        Gets the objXYPlaneBG branch group.
        Returns:
        objXYPlaneBG called by JDialogSliceBox
      • getOriginalScreenScale

        public double getOriginalScreenScale()
        Return the original ScreenScale for orthographic projection:
        Returns:
        DOCUMENT ME!
      • getParentFrame

        public ViewJFrameVolumeView getParentFrame()
        Return the parent frame.
        Returns:
        ViewJFrameVolumeView parent frame
      • getProbeDialog

        public JPanelProbe getProbeDialog()
        Return probePanel from parent frame.
        Returns:
        probePanel Probe Dialog box.
      • getSceneState

        public java.lang.Object getSceneState()
        Gets the current scene state, in terms of what numbers the slices are on and whether or not they are visible.
        Specified by:
        getSceneState in class RenderViewBase
        Returns:
        A SceneState object with the variables set appropriately.
      • getSculptorPanel

        public JPanelSculptor getSculptorPanel()
        Return the sculptor panel.
        Returns:
        JPanelSculptor sculptor control panel.
      • getSegmentationImage

        public ModelImage getSegmentationImage()
        Return the segmentation region map image which contains info on where the vascualture, etc are located.
        Returns:
        (vessel, etc) segmentation image
      • getSlicePanel

        public JPanelSlices getSlicePanel()
        return the current active slicePanel interface.
        Returns:
        slicePanel called by JDialogMouseRecorder
      • getSliceSpacingCoarse

        public float getSliceSpacingCoarse()
        Retrieve the current "coarse" spacing between slices.
        Returns:
        float Current "coarse" spacing between slices.
      • getSliceSpacingFine

        public float getSliceSpacingFine()
        Retrieve the current "fine" spacing between slices.
        Returns:
        float Current "fine" spacing between slices.
      • getSurfaceDialog

        public JPanelSurface getSurfaceDialog()
        Return surfacePanel from parent frame.
        Returns:
        surfacePanel Surface Dialog box.
      • getSurfaceTexture

        public JPanelSurfaceTexture getSurfaceTexture()
        Returns the surface texture panel interface.
        Returns:
        surface texture panel.
      • getSurfaceTexturePanel

        public javax.swing.JPanel getSurfaceTexturePanel()
        Returns the surface texture panel mainPanel interface.
        Returns:
        surface texture mainPanel.
      • getViewDialog

        public JPanelView getViewDialog()
        Return the viewPanel from parent frame.
        Returns:
        viewPanel View Dialog box.
      • getVolOpacityPanel

        public JPanelVolumeOpacity getVolOpacityPanel()
        Return volume opacity control Dialog from parent frame.
        Returns:
        volOpacityPanel volume opacity dialog box.
      • getVolRenderBG

        public javax.media.j3d.BranchGroup getVolRenderBG()
        Return volume render Branch Group.
        Returns:
        volRenderBG volume render branch group.
      • getVolRenderOG

        public javax.media.j3d.OrderedGroup getVolRenderOG()
        Return volume render Order Group.
        Returns:
        volRenderOG volume render order group.
      • getVolumeTexture

        public VolumeTexture getVolumeTexture()
        Return texture, the VolumeTexture member variable.
        Returns:
        DOCUMENT ME!
      • getVolumeTextureCopy

        public javax.media.j3d.Group getVolumeTextureCopy​(int iView)
        Returns the left of right eye copy of the NodeVolumeTextureRender:
        Parameters:
        iView - determines which view to return, 0 for left and 1 for right:
        Returns:
        the NodeVolumeTextureRender for displaying the volume texture in the stereo window.
      • getResolutions

        public float[] getResolutions()
        Returns the ModelImage resolutions.
        Returns:
        ModelImage resolutions
      • hideBoxFrame

        public void hideBoxFrame()
        Makes the box frame invisible.
      • invokeClipping

        public void invokeClipping()
        Enable the six clipping planes at a time.
      • isVolViewMode

        public boolean isVolViewMode()
        Check is volume view frame or not.
        Returns:
        boolean true means mode on, false means mode off.
      • reConfigureVolumeFrame

        public void reConfigureVolumeFrame()
        Constructs main frame structures for 3 image planes. Makes the LUT if necessary, then sets up the buffer arrays appropriately and calls the constructors for the three image planes. Used by the switch between aligned volume texture rendering and the volume texture rendering. Changed to public to allow updating after the volume is sculpted.
      • removeBoxSlice

        public void removeBoxSlice​(int orientation)
        Detaches the slice frame on the slice for the given orientation.
        Parameters:
        orientation - the slice to add: AXIAL, CORONAL, or SAGITTAL
      • removeCubicControl

        public void removeCubicControl()
        Detach cubic control branch group.
      • resetAxisX

        public void resetAxisX()
        Overrides the parent resetImage method. This method reset the surface volume to the original position.
        Overrides:
        resetAxisX in class RenderViewBase
      • resetAxisY

        public void resetAxisY()
        Overrides the parent resetImage method. This method reset the surface volume to the original position.
        Overrides:
        resetAxisY in class RenderViewBase
      • resetImage

        public void resetImage()
        Overrides the parent resetImage method. This method reset the surface volume to the original position.
        Overrides:
        resetImage in class RenderViewBase
      • rotateImage

        public void rotateImage()
        Overrides the rotateImage to rotate the surface volume.
        Overrides:
        rotateImage in class RenderViewBase
      • saveCropVolume

        public void saveCropVolume()
        Save crop region with the clipped volume.
      • setAlphaBlend

        public void setAlphaBlend​(int value)
        Sets the alpha blending of parameter for two image displays.
        Specified by:
        setAlphaBlend in class RenderViewBase
        Parameters:
        value - Amount [0,100] that is the percentage of Image A to be displayed.
      • setCompositeMode

        public void setCompositeMode()
        Set the texture renderer to render in composite mode.
      • setDisplayMode3D

        public void setDisplayMode3D​(boolean flag)
        Hack. Set the update 3D texture volume win-level flag.
        Parameters:
        flag - true update 3D texture volume with win-level, false not update.
      • setGUI

        public void setGUI​(java.lang.Object scene)
        Sets the GUI components to their proper state before the action is dispatched from the player.
        Specified by:
        setGUI in class RenderViewBase
        Parameters:
        scene - The state of the scene.
      • setLightingMode

        public void setLightingMode()
        Set the texture render to render in lighting mode.
      • setLUTa

        public void setLUTa​(ModelLUT LUT)
        Accessor that sets the LUT for image A.
        Parameters:
        LUT - The LUT.
      • setLUTb

        public void setLUTb​(ModelLUT LUT)
        Accessor that sets the LUT for image B.
        Parameters:
        LUT - The LUT
      • setMaterialShininess

        public void setMaterialShininess​(float value)
        Set the texture material shininess value.
        Parameters:
        value - shininess value.
      • setMouseMode

        public void setMouseMode​(int mode)
        Sets the mouse pointer mode - standard or fly - in the view dialog.
        Parameters:
        mode - Mode to set to.
      • setMouseRotateEnable

        public void setMouseRotateEnable​(boolean bEnable)
        Allow disabling or enabling mouse rotation:
        Parameters:
        bEnable - DOCUMENT ME!
      • setParallelRotation

        public void setParallelRotation​(boolean flag)
        Set the parallel rotation flag from the viewJFrameVolumeView.
        Parameters:
        flag - true set all the renderer to parallel rotation, false parallel rotation mode off.
      • setProbeTG

        public void setProbeTG​(javax.media.j3d.Transform3D kTransform,
                               boolean bTwist)
        Sets the Transform3D for the slices based on the Probe Transform. To allow rotation about the probe position, and not just the center of the slices, the probe translation and rotation protions of the matrix are separated. First the center of the slice is translated from the probe position to the origin, then rotated, then translated back to the probe position. The three transformations are concatenated into one Transform3D, which is used to display the slices, boxes, and to sample the ModelImage on the diagonal:
        Parameters:
        kTransform - current probe transform
        bTwist - true if there is twist about the probe axis
      • setRayBasedRender

        public void setRayBasedRender​(VolumeRenderer _rayBasedRender)
        Set the reference to ray based renderer, raycast renderer or shear warp renderer. This method set the clipping dialog to control the both the 3D texture renderer and raycast based renderer.
        Parameters:
        _rayBasedRender - VolumeRenderer reference
      • setRenderPerspective

        public void setRenderPerspective​(boolean bEnable)
        Enable perspective projection rendering; otherwise use orthographic projection.
        Parameters:
        bEnable - true to enable perspective projection
      • setRGBTA

        public void setRGBTA​(ModelRGB RGBT)
        Sets the RGB table for image A.
        Specified by:
        setRGBTA in class RenderViewBase
        Parameters:
        RGBT - New RGB table for image A.
      • setRGBTB

        public void setRGBTB​(ModelRGB RGBT)
        Sets the RGB table for image B.
        Specified by:
        setRGBTB in class RenderViewBase
        Parameters:
        RGBT - New RGB table for image B.
      • setSegmentationImage

        public void setSegmentationImage​(ModelImage img)
        Set the image which we can check to see if the probe is hitting anything important (such as vessels, etc).
        Parameters:
        img - segmentation image
      • setCenter

        public void setCenter​(javax.vecmath.Vector3f center)
        Sets the values for JPanelSlices, based on the positions in the PlaneRender class for the AXIAL, CORONAL, and SAGITTAL views.
        Parameters:
        center - the three slider values in File Coordinates
      • setSlice

        public void setSlice​(int slice)
        Does nothing but must instantiate for this to implements ViewImageUpdateInterface.
        Specified by:
        setSlice in interface ViewImageUpdateInterface
        Parameters:
        slice - DOCUMENT ME!
      • setSliceSpacingCoarse

        public void setSliceSpacingCoarse​(float fSpacing)
        Set the desired "coarse" spacing between slices.
        Parameters:
        fSpacing - float Desired "coarse" spacing between slices.
      • setSliceSpacingFine

        public void setSliceSpacingFine​(float fSpacing)
        Set the desired "fine" spacing between slices.
        Parameters:
        fSpacing - float Desired "fine" spacing between slices.
      • setSliceColor

        public void setSliceColor​(java.awt.Color color,
                                  int orientation)
        Sets the color of the x slice frame.
        Parameters:
        color - Color to set to.
      • setTimeSlice

        public void setTimeSlice​(int slice)
        Sets the time slice to be displayed and changes the image planes displayed.
        Specified by:
        setTimeSlice in interface ViewImageUpdateInterface
        Parameters:
        slice - Indicates image time-slice (4th dimension) to be displayed.
      • setViewTextureAligned

        public void setViewTextureAligned​(boolean flag)
        Switch between the volume texture mode and the regular volume texture mode.
        Parameters:
        flag - texture aligned view enabled or not
      • setVolumeDisplayMode

        public void setVolumeDisplayMode​(boolean volDisplayMode)
        Accessor that sets the volumeDisplayMode flag. If true image is displayed as a volume. If false image is displayed as three orthogonal planes.
        Parameters:
        volDisplayMode - if true image is displayed as a volume ( 3D texture or 2D array Texture).
      • setVolView

        public void setVolView​(boolean flag)
        Set the volume view mode to true from the ViewJFrameVolumeView During mouse recorder displaying, the flag control the updating of the opacity histogram.
        Parameters:
        flag - true means mode on, false means mode off.
      • showBoxFrame

        public void showBoxFrame()
        Makes the box frame visible.
      • showBoxSlice

        public void showBoxSlice​(int orientation)
        Makes the box slice for the given orientation visible.
        Parameters:
        orientation - : AXIAL, CORONAL, or SAGITTAL
      • stateChanged

        public void stateChanged​(javax.swing.event.ChangeEvent e)
        Sets how the image plane should be displayed depending on value of slider.
        Specified by:
        stateChanged in interface javax.swing.event.ChangeListener
        Parameters:
        e - Event that triggered this function.
      • switchToSliceView

        public void switchToSliceView​(boolean firstTime)
        Perform some actions required when switching to the slice renderer.
        Parameters:
        firstTime - perform special actions required when switching for the first time
      • switchToVolView

        public void switchToVolView​(boolean firstTime)
        Perform some actions required when switching to the volume renderer.
        Parameters:
        firstTime - perform special actions required when switching for the first time
      • transformChanged

        public void transformChanged​(int type,
                                     javax.media.j3d.Transform3D transform)
        Tells the mouse dialog that the transform has changed. Does not use the type parameter.
        Specified by:
        transformChanged in interface com.sun.j3d.utils.behaviors.mouse.MouseBehaviorCallback
        Parameters:
        type - Type of transform.
        transform - Transform that was changed to.
      • transformUpdate

        public void transformUpdate​(int type,
                                    javax.media.j3d.Transform3D transform)
        The raybased renderer invokes this method when a mouse release event occurs.
        Parameters:
        type - Type of transform.
        transform - Transform that was changed to.
      • undoCropVolume

        public void undoCropVolume()
        Undo crop region with the clipped volume.
      • update3DTriplanar

        public boolean update3DTriplanar​(ModelLUT LUTa,
                                         ModelLUT LUTb,
                                         boolean forceShow)
        This methods calls the componentImage's update method to redraw the screen.
        Parameters:
        LUTa - LUT used to update imageA.
        LUTb - LUT used to update imageB.
        forceShow - Forces show to reimport image and calculate java image.
        Returns:
        Confirms successful update.
      • transformBoxSlices

        private void transformBoxSlices​(javax.media.j3d.Transform3D kTransform)
        transform the points used to render the triSliceImages textures.
        Parameters:
        kTransform - the Transform3D used to rotate the boxes.
      • ScreenToModel

        private void ScreenToModel​(javax.vecmath.Vector3f screen,
                                   javax.vecmath.Vector3f model)
        Translate from normalized plane coordinates to Model coordinates:
        Parameters:
        screen - the input point to be transformed from normalized plane coordinates
        model - the output point in Model coordinates
      • ModelToScreen

        public void ModelToScreen​(javax.vecmath.Vector3f model,
                                  javax.vecmath.Vector3f screen)
        Translate from Model coordinates to normalized plane coordinates:
        Parameters:
        model - the input point in Model coordinates
        screen - the output point in normalized plane coordinates
      • getBoxSliceInScreen

        private void getBoxSliceInScreen​(javax.vecmath.Vector3f[] screenBoxPoints,
                                         int[] boxSliceConstants)
        sets up the values for the ViewJComponentBoxSlice array. Reorders the three boxSlice (x,y,z) coordinates and mode value into local ModelCoordinates.
        Parameters:
        Vector3f - [] the reordered (x,y,z) coordinates for each boxSlice remapped into ModelCoordinates.
        boxSliceConstants - the reordered mode value (X_SLICE, Y_SLICE, Z_SLICE) remapped into ModelCoordinates
      • updateBoxSlicePos

        public void updateBoxSlicePos​(boolean bParentUpdate)
        Update the X, Y, Z box frame positions.
        Parameters:
        bParentUpdate - if true, update the positions in the ParentFrame.
      • updateBoxSlices

        public void updateBoxSlices()
        Sets new frame around slice x based on the new position.
      • updateCubicTransform

        public void updateCubicTransform​(double[] mat)
        Update the transform3D for the cubic.
        Parameters:
        transform - Transform3D
      • updateCubicTransform

        public void updateCubicTransform​(javax.media.j3d.Transform3D transform)
        Update the transform3D for the cubic.
        Parameters:
        transform - Transform3D
      • updateData

        public void updateData()
        Called when the underlying data has changed, due to sculpting. Calls the ViewJFrameVolumeView updateSliceData function to update the data in the slices.
      • updateImageExtents

        public boolean updateImageExtents()
        This methods calls the componentImage's REPAINT method to redraw the screen. The extents on this image have changed, so the extents need to be read in again and menus, panes and slide bars adjusted accordingly.
        Specified by:
        updateImageExtents in interface ViewImageUpdateInterface
        Returns:
        DOCUMENT ME!
      • updateImageFromRotation

        public void updateImageFromRotation()
        Build a image with the current rotational transformation matrix. Step.1 convert the java3D transform matrix into a quaternion component. Step.2 convert the quaternion into image( our world ) coordinate system. Step.3 convert the quaternion into a rotatin matrix. Quaternion q ( w, x, y, z ): rotation of w around the vector ( x, y, z ); Convert the quaternion into a rotation matrix. / \ | 1-2*y^2-2*z^2 2*x*y-2*w*z 2*x*z+2*w*y | | 2*xy+2*w*z 1-2*x^2-2*z^2 2*y*z-2*w*x | | 2*x*z-2*w*y 2*y*z+2*w*x 1-2*x^2-2*y^2 | \ / Step.4 Calling the transform algorithm to extract the image.
      • updateImages

        public boolean updateImages()
        This methods calls the componentImage's update method to redraw the screen - fastest of the three update methods.
        Specified by:
        updateImages in interface ViewImageUpdateInterface
        Returns:
        Confirms successful update.
      • updateImages

        public boolean updateImages​(boolean flag)
        This methods calls the componentImage's update method to redraw the screen. Without LUT changes.
        Specified by:
        updateImages in interface ViewImageUpdateInterface
        Parameters:
        flag - forces show to re import image and calc. java image
        Returns:
        boolean confirming successful update
      • updateImages

        public boolean updateImages​(ModelLUT LUTa,
                                    ModelLUT LUTb,
                                    boolean forceShow,
                                    int interpMode)
        This methods calls the componentImage's update method to redraw the screen. Without LUT changes.
        Specified by:
        updateImages in interface ViewImageUpdateInterface
        Parameters:
        LUTa - DOCUMENT ME!
        LUTb - DOCUMENT ME!
        forceShow - Forces show to reimport image and calculate java image.
        interpMode - DOCUMENT ME!
        Returns:
        Confirms successful update.
      • updateLighting

        public void updateLighting()
        This method is normally called by JPanelLights when a light bulb property changes. It is up to this instance to decide how to update the rendering.
      • updateOpacityOfOthrogPlanes

        public void updateOpacityOfOthrogPlanes​(int opX,
                                                int opY,
                                                int opZ)
        Updates the 3 orthogonal 2D texture maps' opacities.
        Parameters:
        opX - the opacity of the x plane, range [0,100] and -1 if no updating is required
        opY - the opacity of the y plane, range [0,100] and -1 if no updating is required
        opZ - the opacity of the z plane, range [0,100] and -1 if no updating is required
      • updateProbe

        public void updateProbe​(boolean forceShow,
                                boolean bInterpolate,
                                boolean bReset)
        Updates the slice textures based on the Probe position and rotation angle. The ModelImage data is sampled along the diagonal, not axis-aligned. bInterpolate indicates whether to use nearest-neighbors or to interpolate the data.
        Parameters:
        forceShow - Forces triSliceImages[i].show to re-calculate the image texture.
        bInterpolate - uses nearest-neighbors when false, interpolates data when true
        bReset - when true indicates that the probe navigation has been reset and the slice bounding boxes should be displayed, when false the probe is no axis-aligned and the slice bounding boxes are not displayed
      • updateProbePos

        public void updateProbePos()
        Not used now. Might be used later on.
      • updateRaycastRender

        public void updateRaycastRender()
        Update the raycast based renderer. JPanelSurface mouse release event invokes this method call.
      • updateShininess

        public void updateShininess​(float value)
        Update the shininess from the JPanelLights.
        Parameters:
        value - shininess value.
      • updateTransform

        public void updateTransform()
        Tells the mouse dialog that the transform has changed. Does not use the type parameter.
        Parameters:
        transform - Transform that was changed to.
      • updateVolume

        public boolean updateVolume​(ModelLUT LUTa,
                                    ModelLUT LUTb,
                                    boolean forceShow)
        This methods calls the componentImage's update method to redraw the screen.
        Parameters:
        LUTa - LUT used to update imageA.
        LUTb - LUT used to update imageB.
        forceShow - Forces show to reimport image and calculate java image.
        Returns:
        Confirms successful update.
      • useSliceSpacingCoarse

        public void useSliceSpacingCoarse()
        Select the "coarse" slice sampling for rendering.
      • useSliceSpacingFine

        public void useSliceSpacingFine()
        Retrieves whether the "fine" slice sampling is currently selected.
      • whichTissue

        public int whichTissue​(float x,
                               float y,
                               float z)
        Check the given voxel belong to which segmentation.
        Parameters:
        x - float given voxel x coordinate
        y - float given voxel y coordinate
        z - float given voxel z coordinate
        Returns:
        int segmentation component type
      • buildCubicBox

        private com.sun.j3d.utils.geometry.Box buildCubicBox()
        Create the rotation control cubic box.
        Returns:
        A cube representing the image orientation, with labels painted on the cube faces showing which axis corresponds to which axis in patient coordinates.
      • buildCubicBranch

        private void buildCubicBranch()
        Build the cubic branch under the objRootBG.
      • configureSliceFrame

        private void configureSliceFrame()
        Constructs main frame structures for 3 image planes. Makes the LUT if necessary, then sets up the buffer arrays appropriately and calls the constructors for the three image planes.
      • generateRFACoordMaps

        private void generateRFACoordMaps()
        Generates the texture coord map vectors for the three orthogonal slices.
      • generateRFACoordMaps

        private javax.vecmath.Vector4f generateRFACoordMaps​(int orientation,
                                                            int texCoord)
        create texture coordmaps for the texture-mapped planes displaying the triSliceImages.
        Parameters:
        orientation - the orientation of the plane for which the texture coordinates are generated (AXIAL, CORONAL, or SAGITTAL)
        texCoord - the dimension along which the texture coordinate varies
      • createImageSceneGraph

        private void createImageSceneGraph()
        Creates the scene graph, made up of a branch group parent, a transform group under that which applies mouse behavior and lights to the scene, and three branch groups under the transform group for each of the three image planes. The surfaces that can be added would be children of the transform group. Each image plane has a transform group associated with it and beneath that, a box shape where the texture maps are applied. The shape is what is actually displayed.
      • setupEye

        private void setupEye()
        Set up the center point of the red line boxframe.
      • updateTextureVolumeRender

        private void updateTextureVolumeRender()
        Determine the current viewing transformation and pass it to the texture volume renderer so that it can update itself.
      • updateViewScreenScale

        private void updateViewScreenScale​(javax.media.j3d.Transform3D kTransform)
        This function calculates the scale factor for zooming in parallel projection. The scenario is to calculate the distance between the origin boxframe center and tranformed boxframe center. This distance is used to compute the screen scale factor.
        Parameters:
        kTransform - The tranformation matrix from tranformChanged().
      • updateParent

        public void updateParent()
      • keyPressed

        public void keyPressed​(java.awt.event.KeyEvent arg0)
        Specified by:
        keyPressed in interface java.awt.event.KeyListener
      • keyReleased

        public void keyReleased​(java.awt.event.KeyEvent arg0)
        Specified by:
        keyReleased in interface java.awt.event.KeyListener
      • keyTyped

        public void keyTyped​(java.awt.event.KeyEvent arg0)
        Specified by:
        keyTyped in interface java.awt.event.KeyListener
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent arg0)
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener