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.

    Member documentation

    • 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 – Position of the camera relative to the coordinate space defined by the corresponding node. The default value is 0|0|0.
    • 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 – '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 – Half 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 – 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 – 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 – 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.

    Layout

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

      • SIZEOF

        public static final int SIZEOF
        The struct size in bytes.
    • 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
      • mHorizontalFOV

        public float mHorizontalFOV()
        Returns the value of the mHorizontalFOV field.
      • mClipPlaneNear

        public float mClipPlaneNear()
        Returns the value of the mClipPlaneNear field.
      • mClipPlaneFar

        public float mClipPlaneFar()
        Returns the value of the mClipPlaneFar field.
      • mAspect

        public float mAspect()
        Returns the value of the mAspect field.
      • 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)
        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

        public static AICamera mallocStack()
        Returns a new AICamera instance allocated on the thread-local MemoryStack.
      • callocStack

        public static AICamera callocStack()
        Returns a new AICamera instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
      • mallocStack

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

        public static AICamera callocStack(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
      • mallocStack

        public static AICamera.Buffer mallocStack(int capacity)
        Returns a new AICamera.Buffer instance allocated on the thread-local MemoryStack.
        Parameters:
        capacity - the buffer capacity
      • callocStack

        public static AICamera.Buffer callocStack(int capacity)
        Returns a new AICamera.Buffer instance allocated on the thread-local MemoryStack and initializes all its bits to zero.
        Parameters:
        capacity - the buffer capacity
      • mallocStack

        public static AICamera.Buffer mallocStack(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
      • callocStack

        public static AICamera.Buffer callocStack(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