Class RMScene3D

  • All Implemented Interfaces:
    RMArchiver.Archiving, java.lang.Cloneable
    Direct Known Subclasses:
    RMGraphBarView3D, RMGraphContent, RMGraphPieView3D

    public class RMScene3D
    extends RMShape
    This class manages a list of children and transforms them to 3D representations for display based on X and Y axis rotations.

    ReportMill 3D conventions:

    Coordinate system: Right handed (not left handed) Polygon front: Right hand rule (counter-clockwise defined polygons face forward) Transforms: Row major notation (as opposed to column major, points are assumed row vectors)

    • Constructor Detail

      • RMScene3D

        public RMScene3D()
        Creates a new Scene3d.
    • Method Detail

      • getDepth

        public float getDepth()
        Returns the depth of the scene.
      • setDepth

        public void setDepth​(float aDepth)
        Sets the depth of the scene.
      • getOrigin

        public RMPoint3D getOrigin()
        Returns the scene's origin.
      • getYaw

        public float getYaw()
        Returns the rotation about the Y axis in degrees.
      • setYaw

        public void setYaw​(float aValue)
        Sets the rotation about the Y axis in degrees.
      • getPitch

        public float getPitch()
        Returns the rotation about the X axis in degrees.
      • setPitch

        public void setPitch​(float aValue)
        Sets the rotation about the X axis in degrees.
      • getZRoll

        public float getZRoll()
        Returns the rotation about the Z axis in degrees.
      • setZRoll

        public void setZRoll​(float aValue)
        Sets the rotation about the Z axis in degrees.
      • getFocalLength

        public float getFocalLength()
        Returns the focal length of the camera (derived from the field of view and with view size).
      • setFocalLength

        public void setFocalLength​(float aValue)
        Sets the focal length of the camera. Two feet is normal (1728 points).
      • getOffsetZ

        public float getOffsetZ()
        Returns the Z offset of the scene (for zooming).
      • setOffsetZ

        public void setOffsetZ​(float aValue)
        Sets the Z offset of the scene (for zooming).
      • isPseudo3D

        public boolean isPseudo3D()
        Returns whether scene is rendered in pseudo 3d.
      • setPseudo3D

        public void setPseudo3D​(boolean aFlag)
        Sets whether scene is rendered in pseudo 3d.
      • getPseudoSkewX

        public float getPseudoSkewX()
        Returns the skew angle for X by Z.
      • setPseudoSkewX

        public void setPseudoSkewX​(float anAngle)
        Sets the skew angle for X by Z.
      • getPseudoSkewY

        public float getPseudoSkewY()
        Returns the skew angle for Y by Z.
      • setPseudoSkewY

        public void setPseudoSkewY​(float anAngle)
        Sets the skew angle for Y by Z.
      • getFieldOfView

        public float getFieldOfView()
        Returns the field of view of the camera (derived from focalLength).
      • setFieldOfView

        public void setFieldOfView​(float aValue)
        Sets the field of view of the camera.
      • getCamera

        public RMVector3D getCamera()
        Returns the camera as a vector.
      • getLight

        public RMVector3D getLight()
        Returns the scene light as a vector.
      • getShape

        public RMShape getShape​(int anIndex)
        Returns the specific shape at the given index from the shape list.
      • getShapeCount

        public int getShapeCount()
        Returns the number of shapes in the shape list.
      • addShape

        public void addShape​(RMShape aShape)
        Adds a shape to the end of the shape list.
      • addShape

        public void addShape​(RMShape aShape,
                             int anIndex)
        Adds a shape to the shape list at the given index.
      • removeShape

        public void removeShape​(int anIndex)
        Removes the shape at the given index from the shape list.
      • getTransform3D

        public RMTransform3D getTransform3D()
        Returns the transform 3d for the scene's camera.
      • rebuild

        public void rebuild()
        Rebuilds 3D representation of shapes from shapes list.
      • addChild3D

        protected RMScene3D.RMShape3D addChild3D​(RMShape aShape,
                                                 float z1,
                                                 float z2,
                                                 boolean fixupEdges,
                                                 boolean axisAlign)
        Adds a given shape in 3D. fixupEdges flag indicates wheter or not to stroke the polygons created during extrusion, to try to make them mesh better. The axisAlign flag can be set to true to make sure the shape's coordinate system is aligned with the screen.
      • setFillAndStroke

        public void setFillAndStroke​(RMScene3D.RMShape3D aShape3D,
                                     RMShape aShape)
        Sets the fill and stroke of a 3D shape from a 2D shape.
      • setColor

        public void setColor​(RMScene3D.RMShape3D aShape3D,
                             RMColor aColor)
        Sets the color for a 3d shape from a base color.
      • resort

        public void resort()
        Resorts child shapes from back to front.
      • getBoundsSuperSelected

        public RMRect getBoundsSuperSelected()
        Returns the bounds of the shape in parect coords when super selected (same as getBoundsMarked by default).
        Overrides:
        getBoundsSuperSelected in class RMShape
      • getBoundsMarked

        public RMRect getBoundsMarked()
        Overrides shape implementation to reflect that transformed children may extend outside bounds.
        Overrides:
        getBoundsMarked in class RMShape
      • canBeUngrouped

        public boolean canBeUngrouped()
        Editor method - declares that this shape can't be ungrouped.
        Overrides:
        canBeUngrouped in class RMShape
      • superSelectable

        public boolean superSelectable()
        Editor method - indicates that scene 3d is super selectable.
        Overrides:
        superSelectable in class RMShape
      • acceptsMouse

        public boolean acceptsMouse()
        Viewer method.
        Overrides:
        acceptsMouse in class RMShape
      • mousePressed

        public void mousePressed​(RMViewer aViewer,
                                 java.awt.event.MouseEvent anEvent)
        Viewer method.
        Overrides:
        mousePressed in class RMShape
      • mouseDragged

        public void mouseDragged​(RMViewer aViewer,
                                 java.awt.event.MouseEvent anEvent)
        Viewer method.
        Overrides:
        mouseDragged in class RMShape
      • mouseReleased

        public void mouseReleased​(RMViewer aViewer,
                                  java.awt.event.MouseEvent anEvent)
        Viewer method.
        Overrides:
        mouseReleased in class RMShape
      • getChildrenWhoHitTest

        public java.util.List getChildrenWhoHitTest()
        Editor method - declares that no child of this shape can be selected.
        Overrides:
        getChildrenWhoHitTest in class RMShape
      • equals

        public boolean equals​(java.lang.Object anObj)
        Standard equals implementation.
        Overrides:
        equals in class RMShape
      • copy

        public void copy​(java.lang.Object anObj)
        Copies the attributes from the given object.
        Overrides:
        copy in class RMShape