Package gaiasky.scenegraph.camera
Class AbstractCamera
- java.lang.Object
-
- gaiasky.scenegraph.camera.AbstractCamera
-
- All Implemented Interfaces:
ICamera
- Direct Known Subclasses:
FovCamera
,NaturalCamera
,RelativisticCamera
,SpacecraftCamera
public abstract class AbstractCamera extends java.lang.Object implements ICamera
-
-
Field Summary
Fields Modifier and Type Field Description protected float
angleEdgeRad
Angle from the center to the corner of the screen in scene coordinates, in radiansprotected float
ar
Aspect ratiodouble
CAM_FAR
Camera far valuedouble
CAM_NEAR
Camera near valuecom.badlogic.gdx.graphics.PerspectiveCamera
camera
The main cameraprotected com.badlogic.gdx.graphics.PerspectiveCamera[]
cameras
Vector with all perspective camerasprotected com.badlogic.gdx.graphics.PerspectiveCamera
camLeft
Stereoscopic mode camerasprotected com.badlogic.gdx.graphics.PerspectiveCamera
camRight
Stereoscopic mode camerasprotected IFocus
closest
The closest betweenclosestBody
andclosestStar
protected IFocus
closestBody
Closest non-star body to the cameraprotected IFocus
closestStar
The closest particle to the cameraprotected Matrix4d
combined
protected double
distance
Distance of camera to centerfloat
fovFactor
protected Frustumd
frustumd
protected static Logger.Log
logger
protected CameraManager
parent
The parentVector3d
pos
Vector3d
posinv
protected com.badlogic.gdx.math.Matrix4
prevCombined
Vector3d
prevpos
protected Matrix4d
projection
Vector3d
shift
Vector3d
tmp
protected Matrix4d
view
-
Constructor Summary
Constructors Constructor Description AbstractCamera(CameraManager parent)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
checkClosestBody(IFocus cb)
Called after updating the body's distance to the cam, it updates the closest body in the camera to figure out the camera nearvoid
checkClosestParticle(IFocus star)
Sets the current closest particle to this camera.protected boolean
computeVisibleFovs(CelestialBody cb, FovCamera fcamera)
Returns true if a body with the given position is observed in any of the given directions using the given cone anglevoid
copyParamsFrom(AbstractCamera other)
float
getAngleEdge()
Gets the angle of the edge of the screen, diagonally.float
getAngleEdge(int width, int height, float angle)
com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoLeft()
com.badlogic.gdx.graphics.PerspectiveCamera
getCameraStereoRight()
IFocus
getClosest()
Returns the current closest objectIFocus
getClosestBody()
IFocus
getClosestParticle()
Gets the current closest particle to this cameraICamera
getCurrent()
double
getDistance()
Gets the distance from the camera to the centre of our reference frame (Sun)double
getFar()
float
getFovFactor()
Vector3d
getInversePos()
CameraManager
getManager()
double
getNear()
Vector3d
getPos()
Vector3d
getPreviousPos()
com.badlogic.gdx.math.Matrix4
getPreviousProjView()
com.badlogic.gdx.math.Matrix4
getProjView()
IFocus
getSecondClosestBody()
Vector3d
getShift()
Vector3d
getVelocity()
boolean
isVisible(ITimeFrameProvider time, double viewAngle, Vector3d pos, double distToCamera)
boolean
isVisible(ITimeFrameProvider time, CelestialBody cb)
void
render(int rw, int rh)
void
setCameraStereoLeft(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setCameraStereoRight(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setClosest(IFocus focus)
Sets the closest of allprotected void
setFrustumPlanes(com.badlogic.gdx.graphics.PerspectiveCamera cam)
void
setPos(Vector3d pos)
void
setPreviousPos(Vector3d prevpos)
void
setPreviousProjView(com.badlogic.gdx.math.Matrix4 mat)
void
setShift(Vector3d shift)
void
update(com.badlogic.gdx.graphics.PerspectiveCamera cam, Vector3d position, Vector3d direction, Vector3d up)
void
updateAngleEdge(int width, int height)
void
updateFrustumPlanes()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface gaiasky.scenegraph.camera.ICamera
getCamera, getDirection, getDirections, getFocus, getFrontCameras, getMode, getNCameras, getSpeed, getUp, isFocus, resize, setCamera, setDirection, speedScaling, update, updateMode
-
-
-
-
Field Detail
-
logger
protected static final Logger.Log logger
-
CAM_FAR
public double CAM_FAR
Camera far value
-
CAM_NEAR
public double CAM_NEAR
Camera near value
-
pos
public Vector3d pos
-
posinv
public Vector3d posinv
-
prevpos
public Vector3d prevpos
-
shift
public Vector3d shift
-
tmp
public Vector3d tmp
-
angleEdgeRad
protected float angleEdgeRad
Angle from the center to the corner of the screen in scene coordinates, in radians
-
ar
protected float ar
Aspect ratio
-
distance
protected double distance
Distance of camera to center
-
parent
protected CameraManager parent
The parent
-
camera
public com.badlogic.gdx.graphics.PerspectiveCamera camera
The main camera
-
camLeft
protected com.badlogic.gdx.graphics.PerspectiveCamera camLeft
Stereoscopic mode cameras
-
camRight
protected com.badlogic.gdx.graphics.PerspectiveCamera camRight
Stereoscopic mode cameras
-
cameras
protected com.badlogic.gdx.graphics.PerspectiveCamera[] cameras
Vector with all perspective cameras
-
projection
protected Matrix4d projection
-
view
protected Matrix4d view
-
combined
protected Matrix4d combined
-
frustumd
protected Frustumd frustumd
-
fovFactor
public float fovFactor
-
closestBody
protected IFocus closestBody
Closest non-star body to the camera
-
closestStar
protected IFocus closestStar
The closest particle to the camera
-
prevCombined
protected com.badlogic.gdx.math.Matrix4 prevCombined
-
closest
protected IFocus closest
The closest betweenclosestBody
andclosestStar
-
-
Constructor Detail
-
AbstractCamera
public AbstractCamera(CameraManager parent)
-
-
Method Detail
-
updateAngleEdge
public void updateAngleEdge(int width, int height)
- Specified by:
updateAngleEdge
in interfaceICamera
-
getAngleEdge
public float getAngleEdge(int width, int height, float angle)
-
getFovFactor
public float getFovFactor()
- Specified by:
getFovFactor
in interfaceICamera
-
getPreviousPos
public Vector3d getPreviousPos()
- Specified by:
getPreviousPos
in interfaceICamera
-
setPreviousPos
public void setPreviousPos(Vector3d prevpos)
- Specified by:
setPreviousPos
in interfaceICamera
-
getInversePos
public Vector3d getInversePos()
- Specified by:
getInversePos
in interfaceICamera
-
getAngleEdge
public float getAngleEdge()
Description copied from interface:ICamera
Gets the angle of the edge of the screen, diagonally. It assumes the vertical angle is the field of view and corrects the horizontal using the aspect ratio. It depends on the viewport size and the field of view itself.- Specified by:
getAngleEdge
in interfaceICamera
- Returns:
- The angle in radians.
-
getManager
public CameraManager getManager()
- Specified by:
getManager
in interfaceICamera
-
getCurrent
public ICamera getCurrent()
- Specified by:
getCurrent
in interfaceICamera
-
isVisible
public boolean isVisible(ITimeFrameProvider time, CelestialBody cb)
-
isVisible
public boolean isVisible(ITimeFrameProvider time, double viewAngle, Vector3d pos, double distToCamera)
-
computeVisibleFovs
protected boolean computeVisibleFovs(CelestialBody cb, FovCamera fcamera)
Returns true if a body with the given position is observed in any of the given directions using the given cone angle- Parameters:
cb
- The body.fcamera
- The FovCamera.- Returns:
- True if the body is observed. False otherwise.
-
getDistance
public double getDistance()
Description copied from interface:ICamera
Gets the distance from the camera to the centre of our reference frame (Sun)- Specified by:
getDistance
in interfaceICamera
- Returns:
- The distance
-
copyParamsFrom
public void copyParamsFrom(AbstractCamera other)
-
getCameraStereoLeft
public com.badlogic.gdx.graphics.PerspectiveCamera getCameraStereoLeft()
- Specified by:
getCameraStereoLeft
in interfaceICamera
-
getCameraStereoRight
public com.badlogic.gdx.graphics.PerspectiveCamera getCameraStereoRight()
- Specified by:
getCameraStereoRight
in interfaceICamera
-
setCameraStereoLeft
public void setCameraStereoLeft(com.badlogic.gdx.graphics.PerspectiveCamera cam)
- Specified by:
setCameraStereoLeft
in interfaceICamera
-
setCameraStereoRight
public void setCameraStereoRight(com.badlogic.gdx.graphics.PerspectiveCamera cam)
- Specified by:
setCameraStereoRight
in interfaceICamera
-
update
public void update(com.badlogic.gdx.graphics.PerspectiveCamera cam, Vector3d position, Vector3d direction, Vector3d up)
-
checkClosestBody
public void checkClosestBody(IFocus cb)
Description copied from interface:ICamera
Called after updating the body's distance to the cam, it updates the closest body in the camera to figure out the camera near- Specified by:
checkClosestBody
in interfaceICamera
- Parameters:
cb
- The body to check
-
getClosestBody
public IFocus getClosestBody()
- Specified by:
getClosestBody
in interfaceICamera
-
getSecondClosestBody
public IFocus getSecondClosestBody()
- Specified by:
getSecondClosestBody
in interfaceICamera
-
getClosestParticle
public IFocus getClosestParticle()
Description copied from interface:ICamera
Gets the current closest particle to this camera- Specified by:
getClosestParticle
in interfaceICamera
- Returns:
- The closest particle
-
checkClosestParticle
public void checkClosestParticle(IFocus star)
Description copied from interface:ICamera
Sets the current closest particle to this camera. This will be only set if the given particle is closer than the current.- Specified by:
checkClosestParticle
in interfaceICamera
- Parameters:
star
- The candidate particle
-
getClosest
public IFocus getClosest()
Description copied from interface:ICamera
Returns the current closest object- Specified by:
getClosest
in interfaceICamera
-
setClosest
public void setClosest(IFocus focus)
Description copied from interface:ICamera
Sets the closest of all- Specified by:
setClosest
in interfaceICamera
- Parameters:
focus
- The new closest object
-
getVelocity
public Vector3d getVelocity()
- Specified by:
getVelocity
in interfaceICamera
-
updateFrustumPlanes
public void updateFrustumPlanes()
- Specified by:
updateFrustumPlanes
in interfaceICamera
-
setFrustumPlanes
protected void setFrustumPlanes(com.badlogic.gdx.graphics.PerspectiveCamera cam)
-
getProjView
public com.badlogic.gdx.math.Matrix4 getProjView()
- Specified by:
getProjView
in interfaceICamera
-
getPreviousProjView
public com.badlogic.gdx.math.Matrix4 getPreviousProjView()
- Specified by:
getPreviousProjView
in interfaceICamera
-
setPreviousProjView
public void setPreviousProjView(com.badlogic.gdx.math.Matrix4 mat)
- Specified by:
setPreviousProjView
in interfaceICamera
-
-