Class AICamera

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

    public class AICamera
    extends Struct
    implements 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

        The struct size in bytes.
      • ALIGNOF

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

        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()
        Description copied from class: Struct
        Returns sizeof(struct).
        Specified by:
        sizeof in class Struct
      • 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 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​(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​(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.
      • 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​(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​(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
      • 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
      • callocStack

        public static AICamera.Buffer callocStack​(int capacity,
                                                  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().
      • 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.