Class AICamera

  • All Implemented Interfaces:
    java.lang.AutoCloseable, org.lwjgl.system.NativeResource, org.lwjgl.system.Pointer

    public class AICamera
    extends org.lwjgl.system.Struct
    implements org.lwjgl.system.NativeResource
    Helper structure to describe a virtual camera.

    Cameras have a representation in the node graph and can be animated. An important aspect is that the camera itself is also part of the scenegraph. This means, any values such as the look-at vector are not *absolute*, they're relative to the coordinate system defined by the node which corresponds to the camera. This allows for camera animations. For static cameras parameters like the 'look-at' or 'up' vectors are usually specified directly in aiCamera, but beware, they could also be encoded in the node transformation.

    Layout

    
     struct aiCamera {
         struct aiString mName();
         struct aiVector3D mPosition();
         struct aiVector3D mUp();
         struct aiVector3D mLookAt();
         float mHorizontalFOV();
         float mClipPlaneNear();
         float mClipPlaneFar();
         float mAspect();
         float mOrthographicWidth();
     }
    • Field Detail

      • SIZEOF

        The struct size in bytes.
      • ALIGNOF

        The struct alignment in bytes.
      • MNAME, MPOSITION, MUP, MLOOKAT, MHORIZONTALFOV, MCLIPPLANENEAR, MCLIPPLANEFAR, MASPECT, MORTHOGRAPHICWIDTH

        The struct member offsets.
    • Constructor Detail

      • AICamera

        public AICamera​(java.nio.ByteBuffer container)
        Creates a AICamera instance at the current position of the specified ByteBuffer container. Changes to the buffer's content will be visible to the struct instance and vice versa.

        The created instance holds a strong reference to the container object.

    • Method Detail

      • sizeof

        public int sizeof()
        Specified by:
        sizeof in class org.lwjgl.system.Struct
      • mName

        public AIString mName()
        The name of the camera. There must be a node in the scenegraph with the same name. This node specifies the position of the camera in the scene hierarchy and can be animated.
      • mPosition

        public AIVector3D mPosition()
        Position of the camera relative to the coordinate space defined by the corresponding node. The default value is 0|0|0.
      • mUp

        public AIVector3D mUp()
        'Up' - vector of the camera coordinate system relative to the coordinate space defined by the corresponding node. The 'right' vector of the camera coordinate system is the cross product of the up and lookAt vectors. The default value is 0|1|0. The vector may be normalized, but it needn't.
      • mLookAt

        public AIVector3D mLookAt()
        'LookAt' - vector of the camera coordinate system relative to the coordinate space defined by the corresponding node. This is the viewing direction of the user. The default value is 0|0|1. The vector may be normalized, but it needn't.
      • mHorizontalFOV

        public float mHorizontalFOV()
        Horizontal field of view angle, in radians. The field of view angle is the angle between the center line of the screen and the left or right border. The default value is 1/4PI.
      • mClipPlaneNear

        public float mClipPlaneNear()
        Distance of the near clipping plane from the camera. The value may not be 0.f (for arithmetic reasons to prevent a division through zero). The default value is 0.1f.
      • mClipPlaneFar

        public float mClipPlaneFar()
        Distance of the far clipping plane from the camera. The far clipping plane must, of course, be further away than the near clipping plane. The default value is 1000.f. The ratio between the near and the far plane should not be too large (between 1000-10000 should be ok) to avoid floating-point inaccuracies which could lead to z-fighting.
      • mAspect

        public float mAspect()
        Screen aspect ratio. This is the ration between the width and the height of the screen. Typical values are 4/3, 1/2 or 1/1. This value is 0 if the aspect ratio is not defined in the source file. 0 is also the default value.
      • mOrthographicWidth

        public float mOrthographicWidth()
        Half horizontal orthographic width, in scene units.

        The orthographic width specifies the half width of the orthographic view box. If non-zero the camera is orthographic and the mAspect should define to the ratio between the orthographic width and height and mHorizontalFOV should be set to 0. The default value is 0 (not orthographic).

      • mName

        public AICamera mName​(java.util.function.Consumer<AIString> consumer)
        Passes the mName() field to the specified Consumer.
      • mPosition

        public AICamera mPosition​(java.util.function.Consumer<AIVector3D> consumer)
        Passes the mPosition() field to the specified Consumer.
      • mUp

        public AICamera mUp​(java.util.function.Consumer<AIVector3D> consumer)
        Passes the mUp() field to the specified Consumer.
      • mLookAt

        public AICamera mLookAt​(java.util.function.Consumer<AIVector3D> consumer)
        Passes the mLookAt() field to the specified Consumer.
      • mHorizontalFOV

        public AICamera mHorizontalFOV​(float value)
        Sets the specified value to the mHorizontalFOV() field.
      • mClipPlaneNear

        public AICamera mClipPlaneNear​(float value)
        Sets the specified value to the mClipPlaneNear() field.
      • mClipPlaneFar

        public AICamera mClipPlaneFar​(float value)
        Sets the specified value to the mClipPlaneFar() field.
      • mAspect

        public AICamera mAspect​(float value)
        Sets the specified value to the mAspect() field.
      • set

        public AICamera set​(AIString mName,
                            AIVector3D mPosition,
                            AIVector3D mUp,
                            AIVector3D mLookAt,
                            float mHorizontalFOV,
                            float mClipPlaneNear,
                            float mClipPlaneFar,
                            float mAspect,
                            float mOrthographicWidth)
        Initializes this struct with the specified values.
      • set

        public AICamera set​(AICamera src)
        Copies the specified struct data to this struct.
        Parameters:
        src - the source struct
        Returns:
        this struct
      • malloc

        public static AICamera malloc()
        Returns a new AICamera instance allocated with memAlloc. The instance must be explicitly freed.
      • calloc

        public static AICamera calloc()
        Returns a new AICamera instance allocated with memCalloc. The instance must be explicitly freed.
      • create

        public static AICamera create()
        Returns a new AICamera instance allocated with BufferUtils.
      • create

        public static AICamera create​(long address)
        Returns a new AICamera instance for the specified memory address.
      • createSafe

        @Nullable
        public static AICamera createSafe​(long address)
        Like create, but returns null if address is NULL.
      • malloc

        public static AICamera.Buffer malloc​(int capacity)
        Returns a new AICamera.Buffer instance allocated with memAlloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • calloc

        public static AICamera.Buffer calloc​(int capacity)
        Returns a new AICamera.Buffer instance allocated with memCalloc. The instance must be explicitly freed.
        Parameters:
        capacity - the buffer capacity
      • create

        public static AICamera.Buffer create​(int capacity)
        Returns a new AICamera.Buffer instance allocated with BufferUtils.
        Parameters:
        capacity - the buffer capacity
      • create

        public static AICamera.Buffer create​(long address,
                                             int capacity)
        Create a AICamera.Buffer instance at the specified memory.
        Parameters:
        address - the memory address
        capacity - the buffer capacity
      • createSafe

        @Nullable
        public static AICamera.Buffer createSafe​(long address,
                                                 int capacity)
        Like create, but returns null if address is NULL.
      • mallocStack

        @Deprecated
        public static AICamera mallocStack()
        Deprecated.
        Deprecated for removal in 3.4.0. Use malloc(MemoryStack) instead.
      • callocStack

        @Deprecated
        public static AICamera callocStack()
        Deprecated.
        Deprecated for removal in 3.4.0. Use calloc(MemoryStack) instead.
      • mallocStack

        @Deprecated
        public static AICamera mallocStack​(org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use malloc(MemoryStack) instead.
      • callocStack

        @Deprecated
        public static AICamera callocStack​(org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use calloc(MemoryStack) instead.
      • mallocStack

        @Deprecated
        public static AICamera.Buffer mallocStack​(int capacity,
                                                  org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use malloc(int, MemoryStack) instead.
      • callocStack

        @Deprecated
        public static AICamera.Buffer callocStack​(int capacity,
                                                  org.lwjgl.system.MemoryStack stack)
        Deprecated.
        Deprecated for removal in 3.4.0. Use calloc(int, MemoryStack) instead.
      • malloc

        public static AICamera malloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new AICamera instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
      • calloc

        public static AICamera calloc​(org.lwjgl.system.MemoryStack stack)
        Returns a new AICamera instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
      • malloc

        public static AICamera.Buffer malloc​(int capacity,
                                             org.lwjgl.system.MemoryStack stack)
        Returns a new AICamera.Buffer instance allocated on the specified MemoryStack.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • calloc

        public static AICamera.Buffer calloc​(int capacity,
                                             org.lwjgl.system.MemoryStack stack)
        Returns a new AICamera.Buffer instance allocated on the specified MemoryStack and initializes all its bits to zero.
        Parameters:
        stack - the stack from which to allocate
        capacity - the buffer capacity
      • nmName

        public static AIString nmName​(long struct)
        Unsafe version of mName().
      • nmUp

        public static AIVector3D nmUp​(long struct)
        Unsafe version of mUp().
      • nmHorizontalFOV

        public static float nmHorizontalFOV​(long struct)
        Unsafe version of mHorizontalFOV().
      • nmClipPlaneNear

        public static float nmClipPlaneNear​(long struct)
        Unsafe version of mClipPlaneNear().
      • nmClipPlaneFar

        public static float nmClipPlaneFar​(long struct)
        Unsafe version of mClipPlaneFar().
      • nmAspect

        public static float nmAspect​(long struct)
        Unsafe version of mAspect().
      • nmOrthographicWidth

        public static float nmOrthographicWidth​(long struct)
        Unsafe version of mOrthographicWidth().
      • nmName

        public static void nmName​(long struct,
                                  AIString value)
        Unsafe version of mName.
      • nmPosition

        public static void nmPosition​(long struct,
                                      AIVector3D value)
        Unsafe version of mPosition.
      • nmUp

        public static void nmUp​(long struct,
                                AIVector3D value)
        Unsafe version of mUp.
      • nmLookAt

        public static void nmLookAt​(long struct,
                                    AIVector3D value)
        Unsafe version of mLookAt.
      • nmHorizontalFOV

        public static void nmHorizontalFOV​(long struct,
                                           float value)
        Unsafe version of mHorizontalFOV.
      • nmClipPlaneNear

        public static void nmClipPlaneNear​(long struct,
                                           float value)
        Unsafe version of mClipPlaneNear.
      • nmClipPlaneFar

        public static void nmClipPlaneFar​(long struct,
                                          float value)
        Unsafe version of mClipPlaneFar.
      • nmAspect

        public static void nmAspect​(long struct,
                                    float value)
        Unsafe version of mAspect.
      • nmOrthographicWidth

        public static void nmOrthographicWidth​(long struct,
                                               float value)
        Unsafe version of mOrthographicWidth.