Dynamic avatar application programming interface

The Dynamic Avatar API addresses inefficiencies in accessing avatar 3D representation data by allowing selective data retrieval, optimizing resource usage and adaptability to format changes, thereby enhancing performance and flexibility in managing avatar data.

WO2026093177A1PCT designated stage Publication Date: 2026-05-07INTERDIGITAL CE PATENT HOLDINGS SAS
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
INTERDIGITAL CE PATENT HOLDINGS SAS
Filing Date
2025-10-27
Publication Date
2026-05-07

AI Technical Summary

Technical Problem

Existing technologies face inefficiencies in accessing and managing avatar 3D representation data, particularly in handling dynamic format changes and resource usage, as they often require full conversion of data regardless of the application's needs, leading to unnecessary resource consumption and limited control over data flow.

Method used

A Dynamic Avatar API that allows selective access to a predefined range of avatar 3D representation data, enabling applications to request and receive specific portions of the data defined by formats like AJIF, thereby optimizing resource usage and data control.

Benefits of technology

The Dynamic Avatar API enables efficient and flexible access to avatar data, reducing resource consumption and improving data management by allowing applications to retrieve only the necessary data portions, thus enhancing performance and adaptability to format changes.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure EP2025080901_07052026_PF_FP_ABST
    Figure EP2025080901_07052026_PF_FP_ABST
Patent Text Reader

Abstract

A device may transmit a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation. A device may receive the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.
Need to check novelty before this filing date? Find Prior Art

Description

2024P00800WQDYNAMIC AVATAR APPLICATION PROGRAMMING INTERFACECROSS-REFERENCE TO RELATED APPLICATIONS

[0001] The present application claims benefit of European Patent Application No. EP24306812, entitled “DYNAMIC AVATAR APPLICATION PROGRAMMING INTERFACE” and filed October 28, 2024, which is hereby incorporated by reference in its entirety.BACKGROUND

[0002] The present application is related to decoding avatar three-dimensional (3D) representations. More specifically, the present application is related to an application programming interface (API) for dynamically decoding avatar 3D representations according to an avatar representation format defining a predefined range of data.SUMMARY

[0003] Briefly stated, in one embodiment, a method including: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.BRIEF DESCRIPTION OF THE DRAWINGS

[0004] The following detailed description will be better understood when read in conjunction with the appended drawings, in which there are shown examples of one or more of the multiple embodiments of the present application. It should be understood, however, that the embodiments described herein are not limited to the precise arrangements and instrumentalities shown in the drawings. In the drawings:

[0005] FIG. 1 is a block diagram illustrating an example system according to one or more embodiments of the present disclosure;

[0006] FIG. 2 is a block diagram illustrating an example video encoder according to one or more embodiments of the present disclosure;

[0007] FIG. 3 is a block diagram illustrating an example video decoder according to one or more embodiments of the present disclosure;

[0008] FIG. 4 is a flowchart illustrating a first example method for decoding a portion of an avatar 3D representation according to one or more embodiments of the present disclosure;2024P00800WQ

[0009] FIG. 5 is a flowchart illustrating a second example method for decoding a portion of an avatar 3D representation according to one or more embodiments of the present disclosure; and

[0010] FIGS. 6 and 7 illustrate a flowchart of a third example method for decoding a portion of an avatar 3D representation with the Dynamic Avatar API according to one or more embodiments of the present disclosure.DETAILED DESCRIPTION

[0011] In describing the various embodiments of the present disclosure, certain terminology is used herein for convenience only and should not be considered as limiting such embodiments. In the drawings, the same reference numerals are employed for designating the same elements throughout the several figures and the present description.

[0012] Referring to the drawings, there is shown in FIG. 1 a block diagram illustrating an example system 100 in which embodiments of the present disclosure can be implemented. The system 100 may be an electronic device including, for example, a personal computer, laptop computer, mobile phone, tablet computer, multimedia set-top box, digital television receiver, personal video recording system, connected home appliance, vehicle control and / or entertainment system, and server. One or more elements of the system 100, singly or in combination, may be implemented as an integrated circuit (IC), multiple ICs, and / or discrete components. For example, in one embodiment, the processing, encoding and / or decoding elements of system 100 are distributed across multiple ICs and / or discrete components. In some embodiments, the system 100 is communicatively coupled to and / or in communication with other systems or devices, via, for example, a communications bus or dedicated input / output ports.

[0013] One or more of the elements of system 100 may be provided within an integrated housing, with such elements being interconnected and able to transmit data therebetween using any suitable connection arrangement 115 generally known in the art, including, for example, an internal bus (e.g., I2C bus), wiring, and printed circuit boards.

[0014] The system 100 includes at least one processor 110 configured to execute instructions for implementing the embodiments described herein, including signal / data coding and processing. The processor 110 may be a general-purpose processor or microprocessor, digital signal processor (DSP), one or more microprocessors in association with a DSP core, a controller, a microcontroller, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), a state machine, and the like. The processor 110 may include at least one central processing unit (CPU), embedded memory, input and output interfaces, and other circuitries.2024P00800WQ

[0015] The system 100 includes at least one memory 120, for example, a volatile memory device and / or a non-volatile memory device. The system 100 includes a storage device 140, that may be or include nonvolatile memory and / or dynamic volatile memory, including EEPROM, ROM, PROM, RAM, DRAM, SRAM, DDR, flash, magnetic disk drives, solid state drives (SSD) and / or optical disk drives. The storage device 140 may be or include, for example, an internal storage device, an attached storage device, and / or a network accessible storage device. Although shown separately, the memory 120 and the storage device 140 may be collocated, integrated together, or otherwise combined.

[0016] The system 100 includes an encoder / decoder module 130 configured to process video data and to provide encoded video data or decoded video data. The encoder / decoder module 130 may include one or more processors and / or memory (not shown). Although FIG. 1 depicts the encoder / decoder module 130 as a separate element of system 100, it will be understood that the processor 110 and the encoder / decoder module 130 may be collocated and / or integrated together as a combination of hardware and / or software, e.g., in an electronic package or chip. The encoder / decoder module 130 may be or include one or more modules that may be included in one or more separate devices that perform encoding and / or decoding functions.

[0017] Instructions for execution by the processor 110 and / or the encoder / decoder module 130 may be stored in the storage device 140 and subsequently loaded into memory 120 for execution by the processor 110. In some embodiments, one or more of processor 110, memory 120, storage device 140, and encoder / decoder module 130 may store one or more items when performing the processes disclosed herein. Such items may include input video, decoded video or portions thereof, bitstreams, matrices, variables, operational logic, and intermediate and / or final results from processing of equations, formulas, or operations.

[0018] In some embodiments, the memory of the processor 110 and / or the encoder / decoder module 130 is used to store instructions and / or provide working memory for video encoding and decoding functions. In some embodiments, memory external to the processor 110 and / or the encoder / decoder module 130 (e.g., the memory 120 and / or the storage device 140) is used for one or more of these functions and / or, for example, to store the operating system of a television.

[0019] The system 100 may obtain or receive information via one or more input devices, interfaces, and / or ports as indicated in input block 105. Examples of the input devices include a radio frequency (RF) device for transmitting and / or receiving RF signals over various media, for example, RF signals received over the air from a broadcaster; component video (COMP) inputs; a Universal Serial Bus (USB) input; and / or a High- Definition Multimedia Interface (HDMI) input. Other examples include composite video input (not shown). In some embodiments, the input devices are associated with respective input processing elements, e.g., those2024P00800WQ generally known in the art. For example, the RF device may be associated with elements suitable for selecting a desired frequency (e.g., selecting or band-limiting a signal) or performing error correction on the signal. The USB and / or HDMI inputs may include respective interface processors and transceivers (or transmitters and receivers) for coupling the system 100 to other devices via USB and / or HDMI ports or connections. Various forms of input processing may be implemented, for example, by and / or within a separate input processing device or the processor 110.

[0020] The system 100 includes a communication interface 150 that enables wired and / or wireless communication with other devices, e.g., via a communication channel 190. The communication interface 150 may include one or more transceivers, modems, network cards and the like. The communication channel 190 may be or include wired and / or wireless mediums.

[0021] In some embodiments, data may be streamed to the system 100 via wired and / or wireless networks. Examples of such wireless networks include cellular, Bluetooth or Wi-Fi (e.g., IEEE 802.11) networks. The wired and / or wireless networks may include one or more base stations (e.g., cellular base stations, access points, etc.), and / or user equipment (e.g. cellular user equipment, stations, etc.), and / or other network elements that communicate with the system 100 via the communication interface 150 and communication channel 190, whereby the system 100 may obtain data streamed from streaming applications (e.g., OTT services) via various networks, including the Internet. In some embodiments, data is streamed to the system 100 via the input block 105 (e.g., using a set-top box that delivers data via the HDMI connection or the RF connection). In some embodiments, data is received by the system 100 in a non-streaming manner.

[0022] The system 100 may provide one or more output signals to one or more output devices. The output devices may include a display device 165 (e.g., touchscreen display, monitor, etc.), an audio device 175 (e.g., speakers), and other peripheral devices 185, including, for example, a stand-alone DVR, a disk player, a stereo system, a lighting system, and other devices that provide a function based on the output of the system 100. The display device 165 can be for a television, tablet, laptop, mobile phone, head-mounted display, or other device. In some embodiments, control signals are communicated between the system 100 and the display device 165, the audio device 175, and / or the peripheral devices 185, enabling device-to- device control with or without user intervention. The output devices may couple to and / or communicate with the system 100 via dedicated connections via respective display, audio, and peripheral interfaces 160, 170, 180. Alternatively, the output devices may couple to and / or communicate with the system 100 via the communication channel 190 and the communication interface 150.

[0023] The display device 165 and the audio device 175 may be collocated, integrated, or otherwise combined with the other components of system 100 in a single unit (e.g., a television). Alternatively, the2024P00800WQ display device 165 and the audio device 175 may be separate from one or more of the other components of the system 100. In embodiments in which the display device 165 and the audio device 175 are external components, the output signals may be provided via dedicated outputs and / or connections, including, for example, HDMI ports, USB ports, or COMP outputs.

[0024] FIG. 2 is a block diagram illustrating an example video encoder 200 that may be employed by the system 100 (e.g., via the encoder / decoder module 130) described with respect to FIG. 1. The video encoder 200 may be an encoder that employs video compression technologies, standards, specification, or protocols, including Advanced Video Coding (AVC, H.264 / MPEG-4), High Efficiency Video Coding (HEVC, H.265), Versatile Video Coding (WC, H.266), Essential Video Coding (EVC, MPEG-5), AOMedia Video 1 (AV1), VP9, or the Enhanced Compression Model (ECM), and variations or improvements thereof. Those skilled in the art will understand that the various embodiments described herein are not limited to a specific standard and can be applied to other standards and recommendations, as well as extensions thereof.

[0025] Some embodiments disclosed herein are described with reference to a coding unit (CU) or block of a video frame (or a video image or picture) to which coding tools may be applied by the video encoder 200 and / or by the video decoder 300 (described below with reference to FIG. 3). Generally, embodiments described herein may be applied to a video region formed by a video partition of any shape or size. The video region may be a video slice, a coding tree unit (CTU), or a CU (to which inter prediction or intra prediction can be applied), or a partition thereof, each of which can include samples of a luma component, Y, and chroma components, U and V (also denoted herein by C).

[0026] Referring generally to FIG. 2 and the video encoder 200, video data (e.g., one or more video frames) is encoded generally as described below. Prior to encoding, video data may be pre-processed by a precoding processor (not shown). The pre-processing may include, for example, applying a color model transform to the input color components of the input video data (e.g., conversion from RGB 4:4:4 to YUV 4:2:0) or mapping the color components of the input video data to obtain a signal distribution that is more resilient to compression (for instance, applying a histogram equalizer and / or a denoising filter to one or more of the video data’s color components). The pre-processing may include associating metadata (for example, a supplemental enhancement information (SEI) message) with the video data that can be attached to a coded video bitstream. After pre-processing, if any, an image (frame) to be encoded is partitioned into CUs (blocks) by an image partitioner 202.

[0027] In general, a CU includes a luma block and associated chroma blocks. As such, functions of the video encoder 200 described herein as applied to a CU refer generally to the luma block and the respective chroma blocks. The CUs may be encoded using an intra prediction mode performed by an intra predictor2024P00800WQ260. In intra prediction mode, the content of a CU in a frame is predicted based on content from one or more other CDs of the same frame (or region), using reconstructed blocks of other CUs output from an adder 255. The CUs may also or alternatively be encoded using an inter prediction mode, in which motion estimation and motion compensation are performed by a motion estimator 275 and a motion compensator 270, respectively. In inter prediction mode, the content of a CU in a frame is predicted based on content from one or more reconstructed areas of reference frames, available from a reference picture buffer 280.

[0028] The video encoder 200 selects or otherwise determines at 205 which prediction mode (intra prediction mode and / or inter prediction mode) to use for encoding a CU. The selected prediction mode may be enhanced (e.g., filtered) by a prediction enhancer 285. Based on the selected mode, a prediction for the CU is generated. A residual block is determined based on the prediction (i.e., prediction block, predicted CU) and the input CU. In some embodiments, such determination is made by a subtractor 210.

[0029] The residual block or a partition thereof (e.g., a transform block) is transformed into transform coefficients by a transformer 220. The transform coefficients are quantized by a quantizer 230. An entropy encoder 245 performs entropy encoding of the quantized transform coefficients and coding parameters (e.g., syntax elements including motion vectors and other control data) to form a bitstream of coded video data.

[0030] In addition to coding the original video blocks as described herein, the video encoder 200 reconstructs the coded blocks to provide references for future predictions. Thus, quantized transform coefficients (from the quantizer 230) are de-quantized by an inverse quantizer 240, and inverse transformed by an inverse transformer 250, to reconstruct (decode) the residual blocks. The reconstructed residual blocks and prediction blocks are combined (e.g., by the adder 255) to form reconstructed blocks. Thus, the video encoder 200 performs decoding operations through which the encoded images (frames) are reconstructed.

[0031] I n-loop filters 265 may be applied to the reconstructed image (formed by the reconstructed blocks). The filtered reconstructed image(s) are stored in the reference picture buffer 280 and used by the motion estimator 275 and motion compensator 270, as explained above. The in-loop filters 265 can be applied to the reconstructed samples of an image to reduce distortions introduced by the encoding process. For example, a deblocking filter (DBF), bilateral filter (BIF), sample adaptive offset (SAG), and / or adaptive loop filter (ALF) can be applied to reduce encoding artifacts.

[0032] FIG. 3 is a block diagram illustrating an example of video decoder 300 that may be employed by the system 100 (e.g., via the encoder / decoder module 130) described with respect to FIG. 1. Generally, operational features of the video decoder 300 are reciprocal to operational features of the video encoder 200. In the video decoder 300, a coded video bitstream (e.g., generated by the video encoder 200 or another video encoding device or process) is entropy-decoded by an entropy decoder 330 to obtain transform2024P00800WQ coefficients, motion vectors, and other coding parameters. Based on the coding parameters, an image partitioner 335 divides the picture accordingly. The quantized transform coefficients are de-quantized by an inverse quantizer 340 and inverse transformed by an inverse transformer 350 to decode (reconstruct) respective residual blocks. Depending on the selected prediction mode, a predicted block can be obtained at 370 from an intra predictor 360 (i.e., intra prediction) or from a motion compensator 375 (i.e., inter prediction) and may be enhanced (e.g., filtered) by a prediction enhancer 390, generating a prediction block. The reconstructed residual blocks are combined with prediction blocks (e.g. by an adder 355), resulting in reconstructed blocks.

[0033] In-loop filters 365 (e.g., DBF, BIF, SAG, and / or ALF) can be applied to the reconstructed image (formed by the reconstructed blocks), to output reconstructed (decoded) video. The filtered reconstructed image is also stored in a reference picture buffer 380 for reference by the motion compensator 375.

[0034] A post-decoding processor (not shown) can process the reconstructed video data. For example, post-decoding processing can include an inverse color model transform (e.g., conversion from YUV 4:2:0 to RGB 4:4:4) or an inverse mapping to reverse the mapping process performed by the pre-encoding processor described with respect to FIG. 2. The post-decoding processor can use metadata derived by the preencoding processor and / or signaled in the video bitstream.

[0035] The domain of the present application is the decoding of avatar 3D representations. In some examples, an Application Programming Interface (API) may be provided for decoding avatar 3D representations (stored or not) following an avatar representation format (e.g., the Avatar Json Interchangeable Format (AJIF)) idioms on the client side. The API may transparently handle an avatar representation in any representation format, allowing the API client to retrieve data from an avatar representation as if the avatar representation was an avatar representation in the AJIF file format, and is robust to dynamic changes.

[0036] A comparative approach for an application to get the content of an avatar three-dimensional (3D) representation is to directly decode the encoded content of the avatar. In most cases, this content is encoded into a file, using a format like Graphics Library (GL) Transmission format (gITF), DNA or Filmbox format (FBX). This comparative approach works when an application is capable of handling the file formats, and assuming the file formats do not change over time. In the comparative approach, the application must be updated to allow the decoding of new formats or changes to existing formats.

[0037] One way to maintain the capability of an application to handle any encoding format without the need for changes is to use pattern designs (e.g., wrappers). Pattern designs provide a unique API on the client side (e.g., the application) and, on the implementation side, various wrappings from the unique API to2024P00800WQ the API of each file format. For example, on the client side, an API may be a single function, e.g., Ioadlmage(), which returns an image given a file name or bit stream. On the implementation side, a wrapping is made from a format specific function, e.g., loadlmageXXXQ to the client API loadlmageQ. Specific format APIs may also be more complex, but for the client, the specific format APIs remain simple because the client only has to handle the client API.

[0038] Some APIs also allow the loading of avatar 3D representations from a file, a blob, or an identifier that uniquely identifies an avatar (like a URN). For instance, the OpenXR standard provides the xrLoadRenderModelFB() function that allows the loading of an avatar mesh from a buffer with the content of a binary gITF file (e.g., .gib encoding). The OpenXR standard allows the application on the API client side to choose the avatar model the application wants to use, but not to get the content of the avatar representation. Indeed, functions like xrLoadRenderModelFBQ does not return the decoded content, but only informs the 3D engine which avatar it should use. As a result, such APIs cannot get the mesh data of the avatar (for instance, vertex coordinates). To do so, the API client must handle itself the decoding of the avatar 3D representation, which has all the drawbacks as described above.

[0039] Allowing an application to get access to the avatar data is important in cases where the application needs to compute or extract data from the avatar or modify the avatar. For example, a virtual shop may allow a user to upload an avatar, and then use the mesh data to compute the size of clothes. The application may also use the avatar textures to propose harmonious colors and patterns for clothes and accessories. A virtual optician may need to change the iris textures of the avatar when the avatar’s owner wants to try colored contact lenses.

[0040] In some examples, the use of file conversion may be used to address the above problem with some drawbacks. With the file conversion solution, it is assumed that the application handles a specific avatar format, and the application can decode the specific avatar format. Furthermore, it is assumed that there is a third-party feature that can convert any avatar representation file to the format handled by the application. This third-party feature may be provided by operating systems, like the “imagemagick” package of linux, which can convert image file formats, and is regularly updated. This third-party feature may also be provided by cloud services, which can also be updated without the need to update the application. In all cases, the application first converts the avatar file using one of these third-party features to the format the application can handle, and then the application loads the converted file.

[0041] One drawback is that the file conversion approach only works as long as the version of the format handled by the application is persistent. For example, the format handled by the application may become obsolete, and may no longer be provided by the third-party feature.2024P00800WQ

[0042] Another drawback is that the file solution approach is not efficient because the file solution approach must convert everything (e.g., convert the entire avatar representation) before knowing what the application needs. This full conversion leads to large resource usage for nothing in cases where the application only needs a part of the avatar data. For example, an avatar representation may have several levels of details (LODs), the most detailed LODs using more resources than the less detailed LODs. For instance, an avatar with typical LODs may quickly use more than one hundred megabytes (MB) of memory. In the case where an application only needs one of the LODs, and maybe the lowest detailed LOD, which may only need one MB of memory, the file conversion approach uses one hundred times more memory than necessary.

[0043] Yet another drawback of the file conversion approach is that there are few ways to control the flow of data. Unlike a full-access API approach (e.g., not limited to “convert” or “load” a file) that may wrap and proxy any API call, when the third-party feature is used by several applications, the file conversion approach cannot cache only the parts required by the applications because the file conversion approach has no way to know or guess which parts are required.

[0044] In the present application, a Dynamic Avatar API is introduced that allows full access to a predefined range of data of an avatar representation. The accessible range of data is the one defined by an avatar representation (e.g., the AJIF file format).

[0045] FIG. 4 is a flowchart illustrating a first example method 400 for decoding a portion of an avatar 3D representation according to one or more embodiments of the present disclosure. The method 400 is described with respect to the video decoder 300 of FIG. 3, although the method 400 may be performed by any suitable computing device.

[0046] The method 400 includes transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation (at block 402). For example, the video decoder 300 transmits a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation. In this example, the video decoder 300 may transmit the request externally (e.g., to a Dynamic Avatar API provided by an external service) or internally (e.g., to a Dynamic Avatar API provided internally). Additionally, in this example, the representation format may be the AJIF format or other suitable avatar representation format.

[0047] The method 400 also includes receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation (at block 404). For example, the video decoder 300 receives the2024P00800WQ portion of the avatar 3D representation or access to the portion of the avatar 3D representation. In this example, the video decoder may receive the portion of the avatar 3D representation or access to the portion of the avatar 3D representation from an external source (e.g., from a Dynamic Avatar API provided by an external service) or internally (e.g., from a Dynamic Avatar API provided internally). As described in more detail below, access to a portion of the avatar 3D representation may be provided via an accessor, references, pointers, or the like.

[0048] FIG. 5 is a flowchart illustrating a second example method 500 for decoding a portion of an avatar 3D representation according to one or more embodiments of the present disclosure. The method 500 is described with respect to the video decoder 300 of FIG. 3, although the method 500 may be performed by any suitable computing device.

[0049] The method 500 includes receiving a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation (at block 502). For example, the video decoder 300 receives a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar three- dimensional (3D) representation. In this example, the video decoder 300 may receive the request externally (e.g., from an external client device) or internally (e.g., from an internal client). Additionally, in this example, the first representation format may be the AJIF format or other suitable avatar representation format.

[0050] The method 500 includes extracting only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, wherein the full representation of the avatar 3D representation is in a second representation format (at block 504). For example, the video decoder 300 extracts only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, and the full representation of the avatar 3D representation is in a second representation format. In this example, the second representation format may be one of a gITF format, a DNA format, a FBX format, or other suitable avatar representation format.

[0051] The method 500 also includes outputting the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted (at block 506). For example, the video decoder 300 outputs the portion of the avatar 3D representation that is extracted (e.g., content) or access to the portion of the avatar 3D representation that is extracted. In this example, the video decoder 300 may output the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted to an external device (e.g., an external client device) or internally (e.g., to a client internal to the video decoder 300).2024P00800WQ

[0052] As explained above, the AJIF format may be the basis for “the request” and “a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation.” The AJIF format may store several avatar embodiments, each one being the same avatar, but with different levels of detail (LODs). In some examples, for each level of detail, an avatar embodiment may include high- level avatar information. The high-level avatar information may be the “the portion of the avatar 3D representation” and may include a name, an identifier, an age, a gender, or a combination thereof.

[0053] Additionally, in some examples, the AJIF format may include a list of the same avatar, with different level of detail. Each level of detail may be the “the portion of the avatar 3D representation” and may include one or more meshes, one or more mappings, one or more skeletons, one or more controllers, or a combination thereof. The one or more meshes including one or more geometries as defined below. The one or more mappings including a list of string with associated geometries to identify the body parts. The one or more skeletons includes one or more skeleton skins, as defined below. The one or more controllers including one or more controllers, as defined below.

[0054] One of the one or more geometries may include one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more code syntax, one or more location hints, one or more textures, one or more texture displacement maps, or a combination thereof. The one or more vertices includes a list of 3D float coordinates corresponding to vertex coordinates. The one or more faces includes a list of tuples, where each value in a tuple is a vertex index. Tuples can have between 3 and 256 values.

[0055] The one or more normal includes a list of 3D float coordinates corresponding to vertex normal coordinates, and a list of tuples, where each value in a tuple is a normal index. Tuples can have between 3 and 256 values.

[0056] The one or more blendshapes includes a list of blendshapes. Each blendshape of the list of blendshapes includes one or more displacements and a name. The one or more displacement includes a list of 3D float displacements, each displacement being associated with a vertex. The name includes a string of the name of the blendshape.

[0057] The one or more code syntaxes includes a string with a corresponding code syntax (e.g., “facs:AU1”). The one or more location hints (e.g., a side) includes a string with a location hint (e.g., “left”, “top”, etc.). The one or more textures includes a list of texture data. Each of texture from the list of texture data includes a type, a uvs, one or more faces, and an image. The type is a texture type including one of albedo, normal, roughness, metalness, specular, height, opacity, ambient occlusion, refraction, emissive, glossy, or other suitable texture type. The uvs is a list of two-dimensional (2D) float coordinates corresponding to UV coordinates. The one or more faces includes a list of tuples, where each value in a2024P00800WQ tuple is uv index. Tuples can have between 3 and 256 values. The image is a texture image, e.g., a float tensor [image width, image height, 4],

[0058] The one or more texture displacement maps includes a list of image displacements. For example, an image displacement may include a float tensor [image width, image height, image channels]. Each image displacement may be associated with a string that describes the image displacement.

[0059] The one or more skeleton skins may include a root joint, a list of joints, a list of skin weights, one of one or more meshes used by one of the avatars, a list of 3-tuple referencing to one of the joints in the list of joints, one of the vertices in the mesh and a scalar weight between zero and one, or a combination thereof. Each joint may include a mapping, one or more children joints, a transform, a float 4x4 matrix. The mapping may be a string to identify the body location / semantic of the joint. The transform may be a scale, then rotation, and then translation. The float 4x4 matrix may be for inverse binding.

[0060] The one or more controllers include a mapping, an input, one or more channels, or a combination thereof. The mapping includes a string with a corresponding code syntax. The input includes a list of increasing input weights. The one or more channels includes a list of controller channels. Each controller channel from the list of controller channels includes an interpolation method, a component to animate, a list of output value sets, or a combination thereof. The interpolation method may be “LINEAR”, “STEP” or “CUBICSPLINE”. The component to animate may be a transform for one or more geometries, a transform for one or more skeleton joints, one or more blendshapes weights of one or more geometries, one or more texture displacement weights for one or more textures, a weight for another controller, or a combination thereof. Each value set in the list of output value sets corresponds to one value in the input weights. The number and meaning of values in each value set must be consistent with the component to animate and the interpolation method.

[0061] This list of data does not cover all possible avatar data (i.e., “the portion of the avatar 3D representation”) and may be extended with additional AJIF embodiments as well as future avatar data representations. The Dynamic Avatar API presented herein covers this basic list of avatar data but may be extended to additional AJIF embodiments as well as future avatar data representations.

[0062] The Dynamic Avatar API as described herein is a cross-platform API that enables a client (e.g., a video decoder) to read any amount of avatar data from any existing source for which an implementation is available. In some examples, this Dynamic Avatar API covers the reading of avatar data and may not support changes of this data.

[0063] FIGS. 6 and 7 illustrate a flowchart of a third example method 600 for decoding a portion of an avatar 3D representation with the Dynamic Avatar API according to one or more embodiments of the present2024P00800WQ disclosure. Access to a remote or local implementation of the Dynamic Avatar API may be obtained, for example, by loading a dynamic library with an implementation of the Dynamic Avatar API. However, examples described herein are not limited to loading a dynamic library and access may be obtained via a remote procedure call (RPC), a web service or the like. For example, such access may be obtained via the loading of a dynamic library, inter process communication, remote calls or service queries (operation 601). For example, a first function (e.g., maCreatelnstance described herein) may not be in a dynamic library but may be implemented via a RPC or web service and such RPCs or web services may implement the Dynamic Avatar API as a dynamic library, a script, or the like. In all cases, the application dynamically accesses any implementation of the Dynamic Avatar API.

[0064] For instance, a dynamic library may be loaded, and the following functions may be found (operation 602): 1) maCreatelnstance : returns a Malnstance accessor that allows the access to the Dynamic Avatar API features, 2) malnstanceLoadAvatar : returns a MaAvatar accessor given Malnstance and an avatar file. The MaAvatar accessor allows the access to the avatar representation contained in the avatar file, and 3) malnstanceDeleteQ: deletes a Malnstance accessor. An error may be returned when any of these functions are not found.

[0065] The function maCreatelnstanceQ may be called (operation 603) and returns a Malnstance accessor that is stored in a variable malnstance. Accessors are objects which provides access to some data without directly containing the said data. Furthermore, the internal mechanisms of the accessors are unknown and inaccessible to the API client. The accessors do not guarantee the existence of the data the accessors give access to.

[0066] The function malnstanceLoadAvatar() may be then called (operation 604) using malnstance and a path to an avatar representation. In case of success, this function may return a MaAvatar accessor that is stored into a variable maAvatar and a MaAvatarFunctions structure that is stored in a variable maAvatarFunctions. The MaAvatarFunctions structure includes functions which allows the access of avatar data, when it exists in the avatar file and when the implementation is able to provide it. Some functions may be unavailable when the Dynamic Avatar API implementation does not support the functions.

[0067] The function maAvatarFunctions.maAvatarGetMetadata() may be then called (operation 605) using maAvatar. In case of success, this function may return a MaMetadata accessor that is stored into a variable maMetadata.

[0068] The function maAvatarFunctions. maMetadataHasName{) may be then called (operation 606) using maMetadata. In case of success (decision operation 607), this function may return a boolean that is stored into a variable hasMetadataName.2024P00800WQ

[0069] When the boolean is false, the function maAvatarFunctions.maMetadataGetName() may be then called (operation 608) using maMetadata. In case of success, this function may return a string that is stored into a variable metadataName. The value of this variable may be used by the application.

[0070] When either the call for the function maAvatarFunctions.maMetadataHasName() or the call for the function maAvatarFunctions.maMetadataGetName is unsuccessful, the function maAvatarFunctions.maMetadataDelete() may be then called (operation 609) using maMetadata to delete this accessor.

[0071] The function maAvatarFunctions.maAvatarGetLodCount() may be then called (operation 610) using maAvatar. In case of success, this function may return an integer that is stored into a variable lodCount.

[0072] When the lodCount is zero (decision operation 611), all accessors may be deleted using functions like maXXXXDeleteQ, where XXXX is a data type like Instance, Data, Geometry, Lod, Avatar, or Node (see operations 630-635).

[0073] When the lodCount is not zero (decision operation 611), one of the functions in the MaAvatarFunctions structure may be Function maAvatarGetLodQ and called with maAvatar, and in case of success, returns a MaLod accessor to a Level Of Detail (LOD) of the avatar that is stored into a variable maLod (operation 612).

[0074] The function maAvatarFunctions.maLodHasMesh() may be then called (operation 613) using the MaLod accessor. In case of success, this function may return a boolean that is stored into a variable hasLodMesh.

[0075] When the boolean stored in the hasLodMesh is false (decision operation 614), all accessors may be deleted using functions like maXXXXDeleteQ, where XXXX is a data type like Instance, Data, Geometry, Avatar, Lod, or Node (see operations 630-635).

[0076] When the boolean stored in the hasLodMesh is true (decision operation 614), another function may be called, function maLodGetMeshQ, and given the maLod, and in case of success, returns a MaNode accessor to an avatar node that is stored into a variable maNode (operation 615).

[0077] The function maAvatarFunctions.maNodeHasGeometry() may be then called (operation 616) using maNode. In case of success, this function may return a boolean that is stored into a variable hasNodeGeometry.

[0078] When the boolean stored into the variable hasNodeGeometry is false (decision operation 617), all accessors may be deleted using functions like maXXXXDelete(), where XXXX is a data type like Instance, Data, Geometry, Avatar, Lod, or Node (see operations 630-635).2024P00800WQ

[0079] When the boolean stored into the variable hasNodeGeometry is true (decision operation 617), another function may be called, function maNodeGetGeometry(), and given maNode, in case of success, returns a MaGeometry accessor that is stored into a variable maGeometry (operation 618).

[0080] The function maAvatarFunctions.maGeometryGetVerticesQ may be then called (operation 619) using maGeometry. In case of success, this function may return a MaData accessor that is stored into a variable maData.

[0081] The function maAvatarFunctions.maDataGetTypeQ may be then called (operation 620) using maData. In case of success, this function may return a string that is stored into a variable dataType.

[0082] When the variable dataType is not “dense” (decision operation 621), all accessors may be deleted using functions like maXXXXDeleteQ, where XXXX is a data type like Instance, Data, Geometry, Avatar, Lod, or Node (see operations 630-635).

[0083] When the variable dataType is “dense” (decision operation 621), another function may be called, function maDataGetTypeQ, and given maData, in case of success, returns a string that is stored into a variable dataDType (operation 622).

[0084] The function maAvatarFunctions.maDataGetDims() may be then called (operation 623) using the maData. In case of success, this function may return an integer list that is stored into a variable dataDims.

[0085] The function maAvatarFunctions.maDataGetContent may be then called (operation 624) using the maData. In case of success, this function may return a buffer that is stored into a variable dataContent.

[0086] Once variables dataDType, dataDims, and dataContent are retrieved, these variables may be used together to build one or more vertices (operation 625), and these one or more vertices may be used by the application. Any of the above operations may be repeated with the same principle, walking though the avatar data following the AJIF structure from accessor to accessor, or from accessor to leaf data (like integers, strings or buffers) until the API client retrieves all the avatar data the API client needs. Additionally, all accessors may be deleted using functions like maXXXXDelete(), where XXXX is a data type like Instance, Data, Geometry, Lod, or Node (see operations 630-635).

[0087] The function maAvatarFunctions.maDataDelete() is called with maData when maData is not MA_NULL_ACCESSOR (operation 630).

[0088] The function maAvatarFunctions.maGeometryDeleteQ is called with maGeometry when maGeometry is not MA_NULL_ACCESSOR (operation 631).2024P00800WQ

[0089] The function maAvatarFunctions.maNodeDeleteQ is called with maNode when maNode is not MA_NULL_ACCESSOR (operation 632).

[0090] The function maAvatarFunctions.maLodDelete() is called with maLod when maLod is not MA_NULL_ACCESSOR (operation 633).

[0091] The function maAvatarFunctions.maAvatarDelete() is called with maAvatar (operation 634).

[0092] The function malnstanceDeleteQ is called with malnstance (operation 635).

[0093] Error handling is not presented in the example method 600 because error handling is assumed that if a function fails, the example method 600 goes to operation 630 and reports an error. The example method 600 also expects to find an avatar name (in the metadata) and vertices in the geometry of a mesh node of the first LoD.

[0094] The process may then end (operation 636).

[0095] In some examples, a similar approach may be followed using a different source of API implementation, like function calls through process inter communication and remote calls using dedicated protocols like WebRPC or HTTP REST. Both approaches may also be followed, where the client application loads a dynamic library which uses remote protocols for retrieving avatar representation data.

[0096] In some examples, the functions contained in the MaAvatarFunctions structure are not returned by a function like malnstanceLoadAvatar(), but directly made available in a dynamic library, as it is already the case for functions maCreatelnstance(), malnstanceLoadAvatarQ and malnstanceDeleteQ. In this implementation, functions are loaded or created for all supported formats or use branching to dynamically load or create these functions. In some examples, functions are loaded or created all at once for the format required by the file passed to malnstanceLoadAvatar(), and no branching is needed.

[0097] In some examples, references are used instead of accessors. In this case, references ensure the existence of the referenced data: it will exit as long as at least one reference exists. Compared to accessors, references may introduce memory leaks or even crashes, for instance when the dynamic library is unloaded while some references still exist.

[0098] In some examples, pointers are used instead of accessors. In this case, pointers do not ensure the existence of the pointed data: a pointer can point to data that no longer exists. Compared to accessors, pointers may reduce risk of memory leaks but can introduce crashes, for instance when an application tries to use to pointer which points to data that no longer exists.2024P00800WQ

[0099] In some examples, indexes, names or paths are used instead of accessors. An index is the location of data in a list. Many properties in AJIF are indexed, for example, a Geometry is in the geometries root list. When geometries is [A,B,C], geometries has three instances of Geometry A, B and C. The index of A is 0, the index of B is 1 and the index C is 2. A name can also locate data in an AJIF list, since all properties in list in AJIF has a "name" property. Then, assuming that each item is named with a different name, the names may be used to locate a property. In the previous example, the Geometry A could be named "A", Geometry B named "B" and Geometry C named "C". Then, "A" may be used to uniquely identify Geometry A. Paths are strings which locates properties inside a structured document, like JSON. For example, " / geometries / 1 " or 7geometries / B" identifies Geometry B in the previous example. Compared to accessors, indexes, names and paths are not robust to changes in lists. In the previous example, when the first Geometry is removed, the geometry list becomes [B,C]. Then, before the removal, index 0 identifies Geometry A, and after the removal, index 0 identifies Geometry B.

[0100] In some examples, the Dynamic Avatar API includes 1) the definition of prefixes for names; 2) a list of scalar types, each one defining the encoding of non-structured values; 3) a list of enum types, each on defining the possible values for one avatar data type; 4) a list of structure types, each one defining a list of values; 5) a list of return codes, each one defining a return state, successful or not; 6) a list of accessor types, each one representing the access to one avatar data type; and 7) a list of functions, each one corresponding to a specific service.

[0101] Some examples of the Dynamic Avatar API are compatible with the C language, as the C language may be used on many computers and can bind to many other programming languages and service protocols. However, the Dynamic Avatar API may also be embodied using other programming languages, such as, for example, C++, Java, Python, and the like, and other service protocols (TCP / IP, Web RTC, HTML REST, etc.).

[0102] Name prefixes may be used to increase the uniqueness of object names. However, in other examples, name prefixes may not be necessary. The name prefixes used in this disclosure are based on two letters: M for “MPEG” and A for “Avatar”. Constants and preprocessor defined in C are prefixed with “MA_”; data types are prefixed with “Ma”; and functions are prefixed with “ma”.

[0103] The prefix “PFN_” is also used to distinguish between a pointer or reference to a function and the type of a pointer or reference to a function. For example, "PFNjnalnstanceLoadAsset" is the type of the function pointer "malnstanceLoadAsset". The following types may be used in the input arguments of the API functions: 1) an integer is passed to an API function as a signed 64-bit integer, 2) a float value is passed to an API function as an IEEE 754 64-bit float, 3) a structure is passed to an API function as a pointer to a2024P00800WQ structure, or 4) an accessor is passed to an API function as a pointer to an accessor structure or as an unsigned 64-bit integer.

[0104] The following types may be used in the output arguments of the API functions: 1) an integer is returned by an API function using a pointer to a signed 64-bit integer, 2) a float is returned by an API function using a pointer to an IEEE 754 64-bit float, 3) a string is returned by an API function using the two-call idiom into a UTF-8 character buffer, 4) an enum is returned by an API function using a pointer to an enum, 5) a structure is returned by an API function using a pointer to a structure, or 6) an accessor is returned by an API function using a double pointer to an accessor structure or using a pointer to an unsigned 64-bit integer. In other examples, when possible, values may be directly returned, instead of using pointers.

[0105] The Dynamic Avatar API may use the following enum types: 1) MaDataType: possible values for the type of a raw data, e.g. the "type" property of the RawData AJIF property (see Table 1 below), 2) MaDataDType: possible values for the type of a raw data value, e.g., the "dtype" property of the RawData AJIF property (see Table 2 for values for this enum), 3) MaDatalType: possible values for the type of a raw data index value, e.g. the "itype" property of the RawData AJIF property (see Table 3 for values for this enum), 4) MaDataCType: possible values for the type of a raw data color value, e.g., the "ctype" property of the RawData AJIF property (see Table 4 for values for this enum), 5) MaStmctureType: possible values for the type of an API structure, and each value uniquely identify a structure used by the Dynamic Avatar API (see Table 5 for values for this enum).Table 1 - Enum type for AJIF RawData typesTable 2 - Enum type for AJIF RawData value types2024P00800WQTable 3 - Enum type for AJIF RawData index value typesTable 4 - Enum type for AJIF RawData color value types2024P00800WQTable 5 ■ Enum type for API structure types

[0106] The following structure types may be used by the Dynamic Avatar API: 1) MalnstanceCreatelnfo that contains information required for the creation of an Instance (see Table 6 for the definition of its fields) and MaAssetFunctions that contains pointers to the Dynamic Avatar API functions (see Table 8 for the definition of its fields).Table 6 - Fields of a MalnstanceCreatelnfo structure type.

[0107] The following defines the return codes used by the Dynamic Avatar API in some examples. Positive or null return codes are returned in case of success (no errors). Negative return codes are returned in case of failure (errors).Table 7 - Error codes2024P00800WG

[0108] The following accessor types are used by the Dynamic Avatar API in some examples: 1) Malnstance, 2) MaAsset, 3) MaMetadata, 4) MaLod, 5) MaController, 6) MaChannel, 7) MaChannel, 8) MaSkeleton, 9) MaSkinning, 10) MaNode, 11) MaGeometry, 12) MaFaces, 13) MaBlendshape, 14) MaTexture, 15) MaTextureDisplacements, and 16) MaData. The Malnstance accessor gives access to aDynamic Avatar API implementation, for instance using a dynamic library. The MaAsset accessor gives access to an avatar representation, for instance given a file path. The MaMetadata accessor gives access to an avatar metadata and corresponds to the Metadata property of AJIF. The MaLod accessor gives access to the LOD content of an avatar representation and corresponds to the LOD property of AJIF.

[0109] The MaController accessor gives access to the data of a controller of an avatar representation and corresponds to the Controller property of AJIF. The MaChannel accessor gives access to the channel data of a controller and corresponds to the Channel property of AJIF. The MaSkeleton accessor gives access to the skeleton data an avatar representation and corresponds to the Skeleton property of AJIF. The MaSkinning accessor gives access to the skinning data of a skeleton and corresponds to the Skinning property of AJIF. The MaNode accessor gives access to a node of an avatar representation and corresponds to the Node property of AJIF. The MaGeometry accessor gives access to a geometry of an avatar representation and corresponds to the Geometry property of AJIF.

[0110] The MaFaces accessor gives access to faces data of a geometry and corresponds to the Faces property of AJIF. The MaBlendshape accessor gives access to blendshapes data of a geometry and2024P00800WC corresponds to the Blendshapes property of AJIF. The MaTexture accessor gives access to texture data of a geometry and corresponds to the Texture property of AJIF. The MaTextureDisplacements accessor gives access to the texture displacements data of a texture and corresponds to the TextureDisplacements property of AJIF. The MaData accessor gives access to data of an avatar representation and corresponds to the RawData property of AJI F.

[0111] The remaining description is provided as implementation examples and should not be considered limiting.1 API Header

[0112] The following code is an example of a C header file which declares the components of the Dynamic Avatar API:2024P00800WQ2024P00800WG2024P00800WG2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WG2024P00800WG2024P00800WG2024P00800WG2024P00800WG2024P00800WG

[0113] This header file can be included by API clients and implementations. In the former case, the maCreatelnstance(), malnstanceDeleteQ and malnstanceLoadAvatarQ functions are loaded in a dynamic library file, and the others through the call to malnstanceLoadAvatarQ. In the latter case, the maCreatelnstance(), malnstanceDeleteQ and malnstanceLoadAvatarQ functions are implemented, and the other functions may or may not be implemented.2 Client

[0114] The following listing shows an example of the API client in C language:2024P00800WG2024P00800WQ2024P00800WG2024P00800WG2024P00800WC2024P00800WC2024P00800WG2024P00800WC0115] This example includes a "mpegavatar.h" which declares the API components, for instance the file in Section 3.1.

[0116] Depending on the operating system (e.g., Windows or Posix), a dynamic library which implements the API is loaded ("avatar.dll" or "libaravatar.so"). Then, the operating system loads the following gITF file "cubes_avatar.glTF":2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ"byteLength": 96,"byteOffset": 624,"name": "colors4","target": 34962}, {"buffer": 0,"byteLength": 96,"byteOffset": 720,"name": "colors5","target": 34962}, {"buffer": 0,"byteLength": 96,"byteOffset": 816,"name": "colors6","target": 34962}],"buffers": [{"byteLength": 912,"uri": "data:application / octet- stream;base64,AAAAAAMAAAABAAAAAwAAAAIAAAABAAAAAQAAAAIAAAAFAAAAAgAAAAYAAAAF AAAABQAAAAYAAAAEAAAABgAAAAcAAAAEAAAABAAAAAcAAAAAAAAABwAAAAMAAAAAAAAAA wAAAAcAAAACAAAABwAAAAYAAAACAAAABAAAAAAAAAAFAAAAAAAAAAEAAAAFAAAAAACAvw AAgL8AAIC / AACAPwAAgL8AAIC / AACAPwAAgD8AAIC / AACAvwAAgD8AAIC / AACAvwAAgL8AAIA / AA CAPwAAgL8AAIA / AACAPwAAgD8AAIA / AACAvwAAgD8AAIA / AACAPwAAgD8AAIA / AACAPwAAgD8AA2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ0117] The Dynamic Avatar API implementation maps the content of this gITF file into AJIF properties: other mapping may be possible, here is one. Since it has a single node with a MPEG_avatar_node extension, the API implementation considers that there is a single AJIF LOD in this avatar representation. The implementation also considers this node with a MPEG_avatar_node extension as the AJIF mesh of the AJIF LOD. This node has seven children, each one having a different gITF Mesh, each one being considered as an AJIF geometry. The API client may walk through this structure (without knowing that this is a gITF in fact), and print the number of vertices of each geometry.3 MaAssetFunctions structure Table 8 - Fields of MaAssetFunctions structure type.2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ2024P00800WQ4 API functions5 Instance functions 6 malnstanceDelete()7 Name malnstanceDelete - Deletes an Instance accessor.8 C SpecificationMaResult malnstanceDelete( Malnstance* instance)9 Output parameters• instance is the Instance accessor to delete.10 Description

[0118] Deletes an accessor to a Instance.2024P00800WQ11 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE12 maCreatelnstance()13 Name maCreatelnstance - Creates a new instance of Avatar API implementation.14 C SpecificationMaResult maCreatelnstance(MalnstanceCreatelnfo* createlnfo,Malnstance* instance)15 Input parameters• createlnfo is a structure with options for creating the new instance.16 Output parameters• instance is an accessor to an Instance.17 Description

[0119] Creates a new instance of Avatar API implementation.

[0120] The "version" field of createlnfo defines the API version supported by the client. The implementation must provide a Malnstance compatible with this version or return MA_ERROR_API_VERSION_UNSUPPORTED.18 Return codes• MA_SUCCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE• MA_ERROR_API_VERSION_UNSUPPORTED2024P00800WQ19 malnstanceLoadAvatar()20 Name malnstanceLoadAvatar - Loads a file containing an avatar representation.21 C SpecificationMaResult malnstanceLoadAvatar(Malnstance instance, const char* filePath,MaAvatar* avatar,MaAvatarFunctions* functions)22 Input parameters• instance is an accessor to an Instance.• filePath is the path of a file container an avatar representation.23 Output parameters• avatar is an accessor to an Avatar.• functions is a MaAvatarFunctions with API functions to access avatar data. Unsupported functions are NULL.24 Description

[0121] Loads a file containing an avatar representation.

[0122] The implementation may return an error if the file does not exist or its format is not supported.25 Return codes• MA-SUCCESS• MA_MORE_THAN_ONE_AVATAR• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE• MA_ERROR_UNSUPPORTED_FORMAT• MA_ERROR_FILE_NOT_FOUND2024P00800WQ26 Avatar functions27 maAvatarDelete()28 Name maAvatarDelete - Deletes an Avatar accessor.29 C SpecificationMaResult maAvatarDelete(MaAvatar* avatar)30 Output parameters• avatar is the Avatar accessor to delete.31 Description

[0123] Deletes an accessor to a Avatar.32 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE33 maAvatarGetAsset()34 Name maAvatarGetAsset - Returns an accessor to the asset of a Avatar.35 C SpecificationMaResult maAvatarGetAsset(MaAvatar avatar,MaAsset* asset)36 Input parameters avatar is the Avatar accessor where a Asset property is retrieved.2024P00800WQ37 Output parameters• asset is an Asset accessor of the Asset in the Avatar referenced by avatar.38 Description

[0124] Returns an accessor to the asset of a Avatar.39 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE40 maAvatarGetMetadata()41 Name maAvatarGetMetadata - Returns an accessor to the metadata of a Avatar.42 C SpecificationMaResult maAvatarGetMetadata(MaAvatar avatar,MaMetadata* metadata)43 Input parameters• avatar is the Avatar accessor where a Metadata property is retrieved.44 Output parameters• metadata is an Metadata accessor of the Metadata in the Avatar referenced by avatar.45 Description

[0125] Returns an accessor to the metadata of a Avatar.46 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ47 maAvatarGetLodCount()48 Name maAvatarGetLodCount - Returns the number of Lod in a Avatar.49 C SpecificationMaResult maAvatarGetLodCount( MaAvatar avatar, int64_t* count )50 Input parameters• avatar is a Avatar accessor which references a Avatar where the number of Lod is counted.51 Output parameters• count is the number of Lod in the Avatar referenced by avatar.52 Description

[0126] Returns the number of Lod in a Avatar.53 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE54 maAvatarGetLod()55 Name maAvatarGetLod - Returns a Lod in a Avatar.56 C SpecificationMaResult maAvatarGetLod ( MaAvatar avatar, int64_t index,MaLod* lod)2024P00800WQ57 Input parameters• avatar is the Avatar accessor which references a Avatar where a list of Lod is present.• index is the index of a Lod in the Avatar referenced by Avatar.58 Output parameters• lod is the Lod of the index in the Avatar referenced by Avatar.59 Description

[0127] Returns a Lod in a Avatar.60 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE61 Asset functions62 maAssetDelete()63 Name maAssetDelete - Deletes an Asset accessor.64 C SpecificationMaResult maAssetDelete(MaAsset* asset)65 Output parameters• asset is the Asset accessor to delete.66 Description

[0128] Deletes an accessor to a Asset.67 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ68 maAssetHasCopyright()69 Name maAssetHasCopyright - Returns MA_SUCCESS if a copyright is present in a Asset, MA_UNAVAILABLE otherwise.70 C SpecificationMaResult maAssetHasCopyright(MaAsset asset)71 Input parameters• asset is the Asset accessor where a copyright can be present.72 Description

[0129] Returns MA_SUCCESS if a copyright is present in a Asset, MA_UNAVAILABLE otherwise.73 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE74 maAssetGetCopyright()75 Name maAssetGetCopyright - Returns the copyright of a Asset.76 C SpecificationMaResult maAssetGetCopyright(MaAsset asset, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)77 Input parameters• asset is the Asset accessor where a copyright is retrieved.2024P00800WQ bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.78 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the copyright but is not required if bufferCapacitylnput is 0.79 Description

[0130] This function follows the two-call idiom for retrieving the copyright of a Asset referenced by the asset input argument.

[0131] Unless the length of the copyright is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the copyright.

[0132] Once the length of the copyright is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the copyright. In this case the buffer output argument is filled with the characters of the copyright, and bufferCountOutput output argument contains the number of characters written.80 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE81 maAssetHasGenerator()82 Name maAssetHasGenerator - Returns MA_SUCCESS if a generator is present in a Asset, MA_UNAVAILABLE otherwise.83 C SpecificationMaResult maAssetHasGenerator(MaAsset asset)2024P00800WQ84 Input parameters• asset is the Asset accessor where a generator can be present.85 Description

[0133] Returns MA_SUCCESS if a generator is present in a Asset, MA_UNAVAILABLE otherwise.86 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE87 maAssetGetGenerator()88 Name maAssetGetGenerator - Returns the generator of a Asset.89 C SpecificationMaResult maAssetGetGenerator(MaAsset asset, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)90 Input parameters• asset is the Asset accessor where a generator is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.91 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the generator but is not required if bufferCapacitylnput is 0.92 Description

[0134] This function follows the two-call idiom for retrieving the generator of a Asset referenced by the asset input argument.2024P00800WQ

[0135] Unless the length of the generator is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the generator.

[0136] Once the length of the generator is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the generator. In this case the buffer output argument is filled with the characters of the generator, and bufferCountOutput output argument contains the number of characters written.93 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE94 maAssetGetVersion()95 Name maAssetGetVersion - Returns the version of a Asset.96 C SpecificationMaResult maAssetGetVersion(MaAsset asset, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)97 Input parameters• asset is the Asset accessor where a version is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.98 Output parameters bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient. buffer is a buffer filled with characters of the version but is not required if bufferCapacitylnput is 0.2024P00800WQ99 Description

[0137] This function follows the two-call idiom for retrieving the version of a Asset referenced by the asset input argument.

[0138] Unless the length of the version is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the version.

[0139] Once the length of the version is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the version. In this case the buffer output argument is filled with the characters of the version, and bufferCountOutput output argument contains the number of characters written.100 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE101 Metadata functions102 maMetadataDelete()103 Name maMetadataDelete - Deletes an Metadata accessor.104 C SpecificationMaResult maMetadataDelete(MaMetadata* metadata)105 Output parameters• metadata is the Metadata accessor to delete.106 Description

[0140] Deletes an accessor to a Metadata.2024P00800WQ107 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE108 maMetadataHasName()109 Name maMetadataHasName - Returns MA_SUCCESS if a name is present in a Metadata, MA_UNAVAILABLE otherwise.110 C SpecificationMaResult maMetadataHasName(MaMetadata metadata)111 Input parameters• metadata is the Metadata accessor where a name can be present.112 DescriptionReturns MA_SUCCESS if a name is present in a Metadata, MA_UNAVAILABLE otherwise.113 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE114 maMetadataGetNameO115 Name maMetadataGetName - Returns the name of a Metadata.116 C SpecificationMaResult maMetadataGetName(MaMetadata metadata, int64_t bufferCapacitylnput, int64_t* bufferCountOutput,2024P00800WQ char buffer)117 Input parameters• metadata is the Metadata accessor where a name is retrieved.• bufferCapacity I nput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.118 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.119 Description

[0141] This function follows the two-call idiom for retrieving the name of a Metadata referenced by the metadata input argument.

[0142] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0143] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.120 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE121 maMetadataHasld()122 Name maMetadataHasId - Returns MA_SUCCESS if a id is present in a Metadata, MA_UNAVAILABLE otherwise.2024P00800WQ123 C SpecificationMaResult maMetadataHasld(MaMetadata metadata )124 Input parameters• metadata is the Metadata accessor where a id can be present.125 Description

[0144] Returns MA_SUCCESS if a id is present in a Metadata, MA_UNAVAILABLE otherwise.126 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE127 maMetadataGetldO128 Name maMetadataGetld - Returns the id of a Metadata.129 C SpecificationMaResult maMetadataGetld(MaMetadata metadata, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)130 Input parameters• metadata is the Metadata accessor where a id is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.131 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the id but is not required if bufferCapacitylnput is 0.2024P00800WQ132 Description

[0145] This function follows the two-call idiom for retrieving the id of a Metadata referenced by the metadata input argument.

[0146] Unless the length of the id is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the id.

[0147] Once the length of the id is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the id. In this case the buffer output argument is filled with the characters of the id, and bufferCountOutput output argument contains the number of characters written.133 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE134 maMetadataHasAge()135 Name maMetadataHasAge - Returns MA_SUCCESS if a Age is present in a Metadata, MA_UNAVAILABLE otherwise.136 C SpecificationMaResult maMetadataHasAge(MaMetadata metadata)137 Input parameters• metadata is the Metadata accessor where a Age property can be present.138 Description

[0148] Returns MA_SUCCESS if a Age is present in a Metadata, MA_UNAVAILABLE otherwise.2024P00800WQ139 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE140 maMetadataGetAgeO141 Name maMetadataGetAge - Returns the age of a Metadata.142 C SpecificationMaResult maMetadataGetAge(MaMetadata metadata, int64_t* age)143 Input parameters• metadata is the Metadata accessor where a Age property is retrieved.144 Output parameters• age is the value of the Age in the Metadata referenced by metadata.145 Description

[0149] Returns the age of a Metadata.146 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE147 maMetadataHasGender()148 Name maMetadataHasGender - Returns MA_SUCCESS if a gender is present in a Metadata, MA_UNAVAILABLE otherwise.2024P00800WQ149 C SpecificationMaResult maMetadataHasGender(MaMetadata metadata )150 Input parameters• metadata is the Metadata accessor where a gender can be present.151 Description

[0150] Returns MA_SUCCESS if a gender is present in a Metadata, MA_UNAVAILABLE otherwise.152 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE153 maMetadataGetGender()154 Name maMetadataGetGender - Returns the gender of a Metadata.155 C SpecificationMaResult maMetadataGetGender(MaMetadata metadata, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)156 Input parameters• metadata is the Metadata accessor where a gender is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.157 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the gender but is not required if bufferCapacitylnput is 0.2024P00800WQ158 Description

[0151] This function follows the two-call idiom for retrieving the gender of a Metadata referenced by the metadata input argument.

[0152] Unless the length of the gender is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the gender.

[0153] Once the length of the gender is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the gender. In this case the buffer output argument is filled with the characters of the gender, and bufferCountOutput output argument contains the number of characters written.159 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE160 Lod functions161 maLodDelete()162 Name maLod Delete - Deletes an Lod accessor.163 C SpecificationMaResult maLodDelete(MaLod* lod)164 Output parameters• lod is the Lod accessor to delete.165 Description

[0154] Deletes an accessor to a Lod.2024P00800WQ166 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE167 maLodHasName()168 Name maLodHasName - Returns MA_SUCCESS if a name is present in a Lod, MA_UNAVAILABLE otherwise.169 C SpecificationMaResult maLodHasName(MaLod lod)170 Input parameters• lod is the Lod accessor where a name can be present.171 Description

[0155] Returns MA_SUCCESS if a name is present in a Lod, MA_UNAVAILABLE otherwise.172 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE173 maLodGetNameO174 Name maLodGetName - Returns the name of a Lod.175 C SpecificationMaResult maLodGetName(MaLod lod, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)2024P00800WQ176 Input parameters• lod is the Lod accessor where a name is retrieved.• bufferCapacity I nput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.177 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.178 Description

[0156] This function follows the two-call idiom for retrieving the name of a Lod referenced by the lod input argument.

[0157] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0158] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.179 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE180 maLodHasMesh()181 Name maLodHasMesh - Returns MA_SUCCESS if a Mesh is present in a Lod, MA_UNAVAILABLE otherwise.182 C SpecificationMaResult maLodHasMesh(MaLod lod)2024P00800WQ183 Input parameters• lod is the Lod accessor where a Mesh property can be present.184 Description

[0159] Returns MA_SUCCESS if a Mesh is present in a Lod, MA_UNAVAILABLE otherwise.185 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE186 maLodGetMesh()187 Name maLodGetMesh - Returns an accessor to the mesh of a Lod.188 C SpecificationMaResult maLodGetMesh(MaLod lod,MaNode* mesh)189 Input parameters• lod is the Lod accessor where a Mesh property is retrieved.190 Output parameters• mesh is an Mesh accessor of the Mesh in the Lod referenced by lod.191 DescriptionReturns an accessor to the mesh of a Lod.192 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ193 maLodHasSkeletons()194 Name maLodHasSkeletons - Returns MA_SUCCESS if a list of Skeleton is present in a Lod, MA_UNAVAILABLE otherwise.195 C SpecificationMaResult maLodHasSkeletons( MaLod lod )196 Input parameters• lod is the Lod accessor which references a Lod where a list of Skeleton can be present.197 Description

[0160] Returns MA_SUCCESS if a list of Skeleton is present in a Lod, MA_UNAVAILABLE otherwise.198 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE199 maLodGetSkeletonCount()200 Name maLodGetSkeletonCount - Returns the number of Skeleton in a Lod.201 C SpecificationMaResult maLodGetSkeletonCount( MaLod lod, int64_t* count)202 Input parameters• lod is a Lod accessor which references a Lod where the number of Skeleton is counted.2024P00800WQ203 Output parameters• count is the number of Skeleton in the Lod referenced by lod.204 Description

[0161] Returns the number of Skeleton in a Lod.205 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE206 maLodGetSkeleton()207 Name maLodGetSkeleton - Returns a Skeleton in a Lod.208 C SpecificationMaResult maLodGetSkeleton(MaLod lod, int64_t index,MaSkeleton* skeleton)209 Input parameters• lod is the Lod accessor which references a Lod where a list of Skeleton is present.• index is the index of a Skeleton in the Lod referenced by Lod.210 Output parameters• skeleton is the Skeleton of the index in the Lod referenced by Lod.211 Description

[0162] Returns a Skeleton in a Lod.212 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ213 maLodHasControllers()214 Name maLodHasControllers - Returns MA_SUCCESS if a list of Controller is present in a Lod, MA_UNAVAILABLE otherwise.215 C SpecificationMaResult maLodHasControllers( MaLod lod )216 Input parameters• lod is the Lod accessor which references a Lod where a list of Controller can be present.217 Description

[0163] Returns MA_SUCCESS if a list of Controller is present in a Lod, MA_UNAVAILABLE otherwise.218 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE219 maLodGetControllerCountO220 Name maLodGetControllerCount - Returns the number of Controller in a Lod.221 C SpecificationMaResult maLodGetControllerCount( MaLod lod, int64_t* count)222 Input parameters• lod is a Lod accessor which references a Lod where the number of Controller is counted.2024P00800WQ223 Output parameters• count is the number of Controller in the Lod referenced by lod.224 Description

[0164] Returns the number of Controller in a Lod.225 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE226 maLodGetController()227 Name maLodGetController - Returns a Controller in a Lod.228 C SpecificationMaResult maLodGetController(MaLod lod, int64_t index,MaController* controller)229 Input parameters• lod is the Lod accessor which references a Lod where a list of Controller is present.• index is the index of a Controller in the Lod referenced by Lod.230 Output parameters• controller is the Controller of the index in the Lod referenced by Lod.231 Description

[0165] Returns a Controller in a Lod.232 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ233 Controller functions234 maControllerDelete()235 Name maControllerDelete - Deletes an Controller accessor.236 C SpecificationMaResult maControllerDelete(MaController* controller )237 Output parameters• controller is the Controller accessor to delete.238 Description

[0166] Deletes an accessor to a Controller.239 Return codes• MA_SUCESS• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE240 maControllerHasNameO241 Name maControllerHasName - Returns MA_SUCCESS if a name is present in a Controller, MA_UNAVAILABLE otherwise.242 C SpecificationMaResult maControllerHasName(MaController controller )243 Input parameters• controller is the Controller accessor where a name can be present.2024P00800WQ244 Description

[0167] Returns MA_SUCCESS if a name is present in a Controller, MA_UNAVAILABLE otherwise.245 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE246 maControllerGetNameO247 Name maControllerGetName - Returns the name of a Controller.248 C SpecificationMaResult maControllerGetName(MaController controller, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)249 Input parameters• controller is the Controller accessor where a name is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.250 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.251 Description

[0168] This function follows the two-call idiom for retrieving the name of a Controller referenced by the controller input argument.

[0169] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.2024P00800WQ

[0170] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.252 Return codes• MA_SUCCESS• MA_ERROR_SIZEJNSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE253 maControllerHasMappingO254 Name maControllerHasMapping - Returns MA_SUCCESS if a mapping is present in a Controller, MAJJNAVAILABLE otherwise.255 C SpecificationMaResult maControllerHasMapping(MaController controller)256 Input parameters• controller is the Controller accessor where a mapping can be present.257 Description

[0171] Returns MA_SUCCESS if a mapping is present in a Controller, MAJJNAVAILABLE otherwise.258 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE259 maControllerGetMappingO260 Name maControllerGetMapping - Returns the mapping of a Controller.2024P00800WQ261 C SpecificationMaResult maControllerGetMapping(MaController controller,Int64_t bufferCapacitylnput,Int64_t* bufferCountOutput, char* buffer)262 Input parameters• controller is the Controller accessor where a mapping is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.263 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the mapping but is not required if bufferCapacitylnput is 0.264 Description

[0172] This function follows the two-call idiom for retrieving the mapping of a Controller referenced by the controller input argument.

[0173] Unless the length of the mapping is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mapping.

[0174] Once the length of the mapping is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mapping. In this case the buffer output argument is filled with the characters of the mapping, and bufferCountOutput output argument contains the number of characters written.265 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ266 maControllerHaslnput()267 Name maControllerHasInput - Returns MA_SUCCESS if a Input data is present in a Controller, MAJJNAVAILABLE otherwise.268 C SpecificationMaResult maControllerHaslnput(MaController controller)269 Input parameters• controller is the Controller accessor where a Input data property can be present.270 Description

[0175] Returns MA_SUCCESS if a Input data is present in a Controller, MAJJNAVAILABLE otherwise.271 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE272 maControllerGetlnputO273 Name maControllerGetlnput - Returns an accessor to the input of a Controller.274 C SpecificationMaResult maControllerGetlnput(MaController controller,MaData* input)275 Input parameters• controller is the Controller accessor where a Input data property is retrieved.2024P00800WQ276 Output parameters• input is an Input data accessor of the Input data in the Controller referenced by controller.277 Description

[0176] Returns an accessor to the input of a Controller.278 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE279 maControllerHasChannelsO280 Name maControllerHasChannels - Returns MA_SUCCESS if a list of Channel is present in a Controller, MAJJNAVAILABLE otherwise.281 C SpecificationMaResult maControllerHasChannels(MaController controller)282 Input parameters• controller is the Controller accessor which references a Controller where a list of Channel can be present.283 Description

[0177] Returns MA_SUCCESS if a list of Channel is present in a Controller, MAJJNAVAILABLE otherwise.284 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ285 maControllerGetChannelCount()286 Name maControllerGetChannelCount - Returns the number of Channel in a Controller.287 C SpecificationMaResult maControllerGetChannelCount(MaController controller, Int64_t* count )288 Input parameters• controller is a Controller accessor which references a Controller where the number of Channel is counted.289 Output parameters• count is the number of Channel in the Controller referenced by controller.290 Description

[0178] Returns the number of Channel in a Controller.291 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE292 maControllerGetChannelO293 Name maControllerGetChannel - Returns a Channel in a Controller.294 C SpecificationMaResult maControllerGetChannel(MaController controller, int64_t index, MaChannel* channel)2024P00800WQ295 Input parameters• controller is the Controller accessor which references a Controller where a list of Channel is present.• index is the index of a Channel in the Controller referenced by Controller.296 Output parameters• channel is the Channel of the index in the Controller referenced by Controller.297 Description

[0179] Returns a Channel in a Controller.298 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE299 Channel functions300 maChannelDeleteO301 Name maChannelDelete - Deletes an Channel accessor.302 C SpecificationMaResult maChannelDelete(MaChannel* channel )303 Output parameters• channel is the Channel accessor to delete.304 DescriptionDeletes an accessor to a Channel.305 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ306 maChannelHasNode()307 Name maChannelHasNode - Returns MA_SUCCESS if a Node is present in a Channel, MAJJNAVAILABLE otherwise.308 C SpecificationMaResult maChannelHasNode(MaChannel channel)309 Input parameters• channel is the Channel accessor where a Node property can be present.310 Description

[0180] Returns MA_SUCCESS if a Node is present in a Channel, MA_UNAVAILABLE otherwise.311 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE312 maChannelGetNode()313 Name maChannelGetNode - Returns an accessor to the node of a Channel.314 C SpecificationMaResult maChannelGetNode(MaChannel channel,MaNode* node)315 Input parameters• channel is the Channel accessor where a Node property is retrieved.2024P00800WQ316 Output parameters• node is an Node accessor of the Node in the Channel referenced by channel.317 Description

[0181] Returns an accessor to the node of a Channel.318 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE319 maChannelHasPath()320 Name maChannelHasPath - Returns MA_SUCCESS if a path is present in a Channel, MAJJNAVAILABLE otherwise.321 C SpecificationMaResult maChannelHasPath(MaChannel channel)322 Input parameters• channel is the Channel accessor where a path can be present.323 Description

[0182] Returns MA_SUCCESS if a path is present in a Channel, MAJJNAVAILABLE otherwise.324 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE325 maChannelGetPath()326 Name maChannelGetPath - Returns the path of a Channel.2024P00800WQ327 C SpecificationMaResult maChannelGetPath(MaChannel channel, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)328 Input parameters• channel is the Channel accessor where a path is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.329 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the path but is not required if bufferCapacitylnput is 0.330 Description

[0183] This function follows the two-call idiom for retrieving the path of a Channel referenced by the channel input argument.

[0184] Unless the length of the path is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the path.

[0185] Once the length of the path is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the path. In this case the buffer output argument is filled with the characters of the path, and bufferCountOutput output argument contains the number of characters written.331 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ332 maChannelHasController()333 Name maChannelHasController - Returns MA_SUCCESS if a Controller is present in a Channel, MAJJNAVAILABLE otherwise.334 C SpecificationMaResult maChannelHasController(MaChannel channel)335 Input parameters• channel is the Channel accessor where a Controller property can be present.336 Description

[0186] Returns MA_SUCCESS if a Controller is present in a Channel, MAJJNAVAILABLE otherwise.337 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE338 maChannelGetController()339 Name maChannelGetController - Returns an accessor to the controller of a Channel.340 C SpecificationMaResult maChannelGetController(MaChannel channel,MaController* controller)341 Input parameters• channel is the Channel accessor where a Controller property is retrieved.2024P00800WQ342 Output parameters• controller is an Controller accessor of the Controller in the Channel referenced by channel.343 Description

[0187] Returns an accessor to the controller of a Channel.344 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE345 maChannelHaslnterpolation()346 Name maChannelHasInterpolation - Returns MA_SUCCESS if a interpolation is present in a Channel, MAJJNAVAILABLE otherwise.347 C SpecificationMaResult maChannelHaslnterpolation(MaChannel channel)348 Input parameters• channel is the Channel accessor where a interpolation can be present.349 Description

[0188] Returns MA_SUCCESS if a interpolation is present in a Channel, MAJJNAVAILABLE otherwise.350 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE351 maChannelGetlnterpolation()352 Name maChannelGetlnterpolation - Returns the interpolation of a Channel.2024P00800WQ353 C SpecificationMaResult maChannelGetlnterpolation(MaChannel channel, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)354 Input parameters• channel is the Channel accessor where a interpolation is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.355 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the interpolation but is not required if bufferCapacitylnput is 0.356 Description

[0189] This function follows the two-call idiom for retrieving the interpolation of a Channel referenced by the channel input argument.

[0190] Unless the length of the interpolation is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the interpolation.

[0191] Once the length of the interpolation is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the interpolation. In this case the buffer output argument is filled with the characters of the interpolation, and bufferCountOutput output argument contains the number of characters written.357 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ358 maChannelGetOutput()359 Name maChannelGetOutput - Returns an accessor to the output of a Channel.360 C SpecificationMaResult maChannelGetOutput(MaChannel channel,MaData* output)361 Input parameters• channel is the Channel accessor where a Output data property is retrieved.362 Output parameters• output is an Output data accessor of the Output data in the Channel referenced by channel.363 Description

[0192] Returns an accessor to the output of a Channel.364 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE365 Skeleton functions366 maSkeletonDeleteO367 Name maSkeletonDelete - Deletes an Skeleton accessor.368 C SpecificationMaResult maSkeletonDelete(MaSkeleton* skeleton)2024P00800WQ369 Output parameters• skeleton is the Skeleton accessor to delete.370 Description

[0193] Deletes an accessor to a Skeleton.371 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE372 maSkeletonHasName()373 Name maSkeletonHasName - Returns MA_SUCCESS if a name is present in a Skeleton, MA_UNAVAILABLE otherwise.374 C SpecificationMaResult maSkeletonHasName(MaSkeleton skeleton)375 Input parameters• skeleton is the Skeleton accessor where a name can be present.376 Description

[0194] Returns MA_SUCCESS if a name is present in a Skeleton, MA_UNAVAILABLE otherwise.377 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE378 maSkeletonGetNameO379 Name maSkeletonGetName - Returns the name of a Skeleton.2024P00800WQ380 C SpecificationMaResult maSkeletonGetName(MaSkeleton skeleton, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)381 Input parameters• skeleton is the Skeleton accessor where a name is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.382 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.383 Description

[0195] This function follows the two-call idiom for retrieving the name of a Skeleton referenced by the skeleton input argument.

[0196] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0197] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.384 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ385 maSkeletonHasMappingQ386 Name maSkeletonHasMapping - Returns MA_SUCCESS if a mapping is present in a Skeleton, MAJJNAVAILABLE otherwise.387 C SpecificationMaResult maSkeletonHasMapping(MaSkeleton skeleton)388 Input parameters• skeleton is the Skeleton accessor where a mapping can be present.389 Description

[0198] Returns MA_SUCCESS if a mapping is present in a Skeleton, MAJJNAVAILABLE otherwise.390 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE391 maSkeletonGetMappingO392 Name maSkeletonGetMapping - Returns the mapping of a Skeleton.393 C SpecificationMaResult maSkeletonGetMapping(MaSkeleton skeleton, int64 bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)394 Input parameters• skeleton is the Skeleton accessor where a mapping is retrieved.2024P00800WQ bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.395 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the mapping but is not required if bufferCapacitylnput is 0.396 Description

[0199] This function follows the two-call idiom for retrieving the mapping of a Skeleton referenced by the skeleton input argument.

[0200] Unless the length of the mapping is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mapping.

[0201] Once the length of the mapping is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mapping. In this case the buffer output argument is filled with the characters of the mapping, and bufferCountOutput output argument contains the number of characters written.397 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE398 maSkeletonHasRoot()399 Name maSkeletonHasRoot - Returns MA_SUCCESS if a Root is present in a Skeleton, MA_UNAVAILABLE otherwise.400 C SpecificationMaResult maSkeletonHasRoot(MaSkeleton skeleton)2024P00800WQ401 Input parameters• skeleton is the Skeleton accessor where a Root property can be present.402 DescriptionReturns MA_SUCCESS if a Root is present in a Skeleton, MA_UNAVAILABLE otherwise.403 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE404 maSkeletonGetRoot()405 Name maSkeletonGetRoot - Returns an accessor to the root of a Skeleton.406 C SpecificationMaResult maSkeletonGetRoot(MaSkeleton skeleton,MaNode* root)407 Input parameters• skeleton is the Skeleton accessor where a Root property is retrieved.408 Output parameters• root is an Root accessor of the Root in the Skeleton referenced by skeleton.409 Description

[0202] Returns an accessor to the root of a Skeleton.410 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ411 maSkeletonHasJoints()412 Name maSkeletonHasJoints - Returns MA_SUCCESS if a list of Joint is present in a Skeleton, MA_UNAVAILABLE otherwise.413 C SpecificationMaResult maSkeletonHasJoints( MaSkeleton skeleton)414 Input parameters• skeleton is the Skeleton accessor which references a Skeleton where a list of Joint can be present.415 DescriptionReturns MA_SUCCESS if a list of Joint is present in a Skeleton, MA_UNAVAILABLE otherwise.416 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE417 maSkeletonGetJointCount()418 Name maSkeletonGetJointCount - Returns the number of Joint in a Skeleton.419 C SpecificationMaResult maSkeletonGetJointCount( MaSkeleton skeleton, int64_t* count)420 Input parameters• skeleton is a Skeleton accessor which references a Skeleton where the number of Joint is counted.2024P00800WQ421 Output parameters• count is the number of Joint in the Skeleton referenced by skeleton.422 Description

[0203] Returns the number of Joint in a Skeleton.423 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE424 maSkeletonGetJoint()425 Name maSkeletonGetJoint - Returns a Joint in a Skeleton.426 C SpecificationMaResult maSkeletonGetJoint(MaSkeleton skeleton, int64_t index, MaNode* joint )427 Input parameters• skeleton is the Skeleton accessor which references a Skeleton where a list of Joint is present.• index is the index of a Joint in the Skeleton referenced by Skeleton.428 Output parameters• joint is the Joint of the index in the Skeleton referenced by Skeleton.429 Description

[0204] Returns a Joint in a Skeleton.430 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ431 maSkeletonHaslnverseBindMatrices()432 Name maSkeletonHasInverseBindMatrices - Returns MA_SUCCESS if a Inversebindmatrice data is present in a Skeleton, MA_UNAVAILABLE otherwise.433 C SpecificationMaResult maSkeletonHaslnverseBindMatrices(MaSkeleton skeleton)434 Input parameters• skeleton is the Skeleton accessor where a Inversebindmatrice data property can be present.435 Description

[0205] Returns MA_SUCCESS if a Inversebindmatrice data is present in a Skeleton, MA_UNAVAILABLE otherwise.436 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE437 maSkeletonGetlnverseBindMatricesO438 Name maSkeletonGetlnverseBindMatrices - Returns an accessor to the inverseBindMatrices of a Skeleton.439 C SpecificationMaResult maSkeletonGetlnverseBindMatrices(MaSkeleton skeleton,MaData* inverseBindMatrices)440 Input parameters• skeleton is the Skeleton accessor where a Inversebindmatrice data property is retrieved.2024P00800WQ441 Output parameters• inverseBindMatrices is an Inversebindmatrice data accessor of the Inversebindmatrice data in the Skeleton referenced by skeleton.442 Description

[0206] Returns an accessor to the inverseBindMatrices of a Skeleton.443 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE444 maSkeletonHasSkinnings()445 Name maSkeletonHasSkinnings - Returns MA_SUCCESS if a list of Skinning is present in a Skeleton, MAJJNAVAILABLE otherwise.446 C SpecificationMaResult maSkeletonHasSkinnings(MaSkeleton skeleton)447 Input parameters• skeleton is the Skeleton accessor which references a Skeleton where a list of Skinning can be present.448 Description

[0207] Returns MA_SUCCESS if a list of Skinning is present in a Skeleton, MAJJNAVAILABLE otherwise.449 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ450 maSkeletonGetSkinningCount()451 Name maSkeletonGetSkinningCount - Returns the number of Skinning in a Skeleton.452 C SpecificationMaResult maSkeletonGetSkinningCount( MaSkeleton skeleton, int64_t* count)453 Input parameters• skeleton is a Skeleton accessor which references a Skeleton where the number of Skinning is counted.454 Output parameters• count is the number of Skinning in the Skeleton referenced by skeleton.455 Description

[0208] Returns the number of Skinning in a Skeleton.456 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE457 maSkeletonGetSkinningO458 Name maSkeletonGetSkinning - Returns a Skinning in a Skeleton.459 C SpecificationMaResult maSkeletonGetSkinning( MaSkeleton skeleton, int64_t index, MaSkinning* skinning)2024P00800WQ460 Input parameters• skeleton is the Skeleton accessor which references a Skeleton where a list of Skinning is present.• index is the index of a Skinning in the Skeleton referenced by Skeleton.461 Output parameters• skinning is the Skinning of the index in the Skeleton referenced by Skeleton.462 Description

[0209] Returns a Skinning in a Skeleton.463 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE464 Skinning functions465 maSkinningDelete()466 Name maSkinningDelete - Deletes an Skinning accessor.467 C SpecificationMaResult maSkinningDelete(MaSkinning* skinning)468 Output parameters• skinning is the Skinning accessor to delete.469 Description

[0210] Deletes an accessor to a Skinning.470 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ471 maSkinningHasName()472 Name maSkinningHasName - Returns MA_SUCCESS if a name is present in a Skinning, MAJJNAVAILABLE otherwise.473 C SpecificationMaResult maSkinningHasName(MaSkinning skinning)474 Input parameters• skinning is the Skinning accessor where a name can be present.475 DescriptionReturns MA_SUCCESS if a name is present in a Skinning, MAJJNAVAILABLE otherwise.476 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE477 maSkinningGetNameO478 Name maSkinningGetName - Returns the name of a Skinning.479 C SpecificationMaResult maSkinningGetName(MaSkinning skinning, int64 bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)480 Input parameters• skinning is the Skinning accessor where a name is retrieved.2024P00800WQ bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.481 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.482 Description

[0211] This function follows the two-call idiom for retrieving the name of a Skinning referenced by the skinning input argument.

[0212] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0213] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.483 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE484 maSkinningHasMapping()485 Name maSkinningHasMapping - Returns MA_SUCCESS if a mapping is present in a Skinning, MAJJNAVAILABLE otherwise.486 C SpecificationMaResult maSkinningHasMapping(MaSkinning skinning)2024P00800WQ487 Input parameters• skinning is the Skinning accessor where a mapping can be present.488 Description

[0214] Returns MA_SUCCESS if a mapping is present in a Skinning, MAJJNAVAILABLE otherwise.489 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE490 maSkinningGetMapping()491 Name maSkinningGetMapping - Returns the mapping of a Skinning.492 C SpecificationMaResult maSkinningGetMapping(MaSkinning skinning, int64_t bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)493 Input parameters• skinning is the Skinning accessor where a mapping is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.494 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the mapping but is not required if bufferCapacitylnput is 0.495 Description

[0215] This function follows the two-call idiom for retrieving the mapping of a Skinning referenced by the skinning input argument.2024P00800WQ

[0216] Unless the length of the mapping is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mapping.

[0217] Once the length of the mapping is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mapping. In this case the buffer output argument is filled with the characters of the mapping, and bufferCountOutput output argument contains the number of characters written.496 Return codes• MA.SUCCESS• MA_ERROR_SIZEJNSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE497 maSkinningHasMesh()498 Name maSkinningHasMesh - Returns MA_SUCCESS if a Mesh is present in a Skinning, MAJJNAVAILABLE otherwise.499 C SpecificationMaResult maSkinningHasMesh(MaSkinning skinning)500 Input parameters• skinning is the Skinning accessor where a Mesh property can be present.501 Description

[0218] Returns MA_SUCCESS if a Mesh is present in a Skinning, MAJJNAVAILABLE otherwise.502 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ503 maSkinningGetMesh()504 Name maSkinningGetMesh - Returns an accessor to the mesh of a Skinning.505 C SpecificationMaResult maSkinningGetMesh(MaSkinning skinning,MaNode* mesh)506 Input parameters• skinning is the Skinning accessor where a Mesh property is retrieved.507 Output parameters• mesh is an Mesh accessor of the Mesh in the Skinning referenced by skinning.508 Description

[0219] Returns an accessor to the mesh of a Skinning.509 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE510 maSkinningHasWeights()511 Name maSkinningHasWeights - Returns MA_SUCCESS if a Weight data is present in a Skinning, MAJJNAVAILABLE otherwise.512 C SpecificationMaResult maSkinningHasWeights(MaSkinning skinning )2024P00800WQ513 Input parameters• skinning is the Skinning accessor where a Weight data property can be present.514 Description

[0220] Returns MA_SUCCESS if a Weight data is present in a Skinning, MA_UNAVAILABLE otherwise.515 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE516 maSkinningGetWeights()517 Name maSkinningGetWeights - Returns an accessor to the weights of a Skinning.518 C SpecificationMaResult maSkinningGetWeights(MaSkinning skinning,MaData* weights)519 Input parameters• skinning is the Skinning accessor where a Weight data property is retrieved.520 Output parameters• weights is an Weight data accessor of the Weight data in the Skinning referenced by skinning.521 Description

[0221] Returns an accessor to the weights of a Skinning.522 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ523 Node functions524 maNodeDelete()525 Name maNodeDelete - Deletes an Node accessor.526 C SpecificationMaResult maNodeDelete(MaNode* node)527 Output parameters• node is the Node accessor to delete.528 Description

[0222] Deletes an accessor to a Node.529 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE530 maNodeHasName()531 Name maNodeHasName - Returns MA_SUCCESS if a name is present in a Node, MA_UNAVAILABLE otherwise.532 C SpecificationMaResult maNodeHasName(MaNode node )533 Input parameters node is the Node accessor where a name can be present.2024P00800WQ534 Description

[0223] Returns MA_SUCCESS if a name is present in a Node, MA_UNAVAILABLE otherwise.535 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE536 maNodeGetNameO537 Name maNodeGetName - Returns the name of a Node.538 C SpecificationMaResult maNodeGetName(MaNode node, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)539 Input parameters• node is the Node accessor where a name is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.540 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.541 Description

[0224] This function follows the two-call idiom for retrieving the name of a Node referenced by the node input argument.

[0225] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.2024P00800WQ

[0226] Once the length of the name is known, a call is required where bufferCapacity I np ut is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.542 Return codes• MA_SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE543 maNodeHasGeometryO544 Name maNodeHasGeometry - Returns MA_SUCCESS if a Geometry is present in a Node, MA_UNAVAILABLE otherwise.545 C SpecificationMaResult maNodeHasGeometry(MaNode node)546 Input parameters• node is the Node accessor where a Geometry property can be present.547 Description

[0227] Returns MA_SUCCESS if a Geometry is present in a Node, MA_UNAVAILABLE otherwise.548 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE549 maNodeGetGeometry()550 Name maNodeGetGeometry - Returns an accessor to the geometry of a Node.2024P00800WQ551 C SpecificationMaResult maNodeGetGeometry(MaNode node,MaGeometry* geometry)552 Input parameters• node is the Node accessor where a Geometry property is retrieved.553 Output parameters• geometry is an Geometry accessor of the Geometry in the Node referenced by node.554 Description

[0228] Returns an accessor to the geometry of a Node.555 Return codes• MA-SUCESS• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE556 maNodeHasChildren()557 Name maNodeHasChildren - Returns MA_SUCCESS if a list of Child is present in a Node, MAJJNAVAILABLE otherwise.558 C SpecificationMaResult maNodeHasChildren(MaNode node)559 Input parameters• node is the Node accessor which references a Node where a list of Child can be present.560 Description

[0229] Returns MA_SUCCESS if a list of Child is present in a Node, MA_UNAVAILABLE otherwise.2024P00800WQ561 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE562 maNodeGetChildCount()563 Name maNodeGetChildCount - Returns the number of Child in a Node.564 C SpecificationMaResult maNodeGetChildCount(MaNode node, int64_t* count)565 Input parameters• node is a Node accessor which references a Node where the number of Child is counted.566 Output parameters• count is the number of Child in the Node referenced by node.567 Description

[0230] Returns the number of Child in a Node.568 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE569 maNodeGetChildO570 Name maNodeGetChild - Returns a Child in a Node.2024P00800WQ571 C SpecificationMaResult maNodeGetChild( MaNode node, int64_t index, MaNode* child)572 Input parameters• node is the Node accessor which references a Node where a list of Child is present.• index is the index of a Child in the Node referenced by Node.573 Output parameters• child is the Child of the index in the Node referenced by Node.574 Description

[0231] Returns a Child in a Node.575 Return codes• MA_SUCESS• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE576 maNodeHasScaleO577 Name maNodeHasScale - Returns MA_SUCCESS if scale values are present in a Node, MA_UNAVAILABLE otherwise.578 C SpecificationMaResult maNodeHasScale( MaNode node )579 Input parameters• node is the Node accessor where scale values can be present.2024P00800WQ580 Description

[0232] Returns MA_SUCCESS if scale values are present in a Node, MA_UNAVAILABLE otherwise.581 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE582 maNodeGetScaleO583 Name maNodeGetScale - Returns the scale values in a Node.584 C SpecificationMaResult maNodeGetScale(MaNode node, int64_t scaleCapacitylnput, int64_t* scaleCountOutput, double* scale)585 Input parameters• node is the Node accessor where scale values are retrieved.• scaleCapacitylnput is the capacity of the scale output argument, or 0 to indicate a request to retrieve the required capacity.586 Output parameters• scaleCountOutput is the count of values written, or the required capacity in the case that scaleCapacitylnput is insufficient.• scale is an array filled with the scale values but is not required if scaleCapacitylnput is 0.587 Description

[0233] This function follows the two-call idiom for retrieving the scale values of a Node referenced by the node input argument.

[0234] Unless the number of scale values is already known, a first call is required where scaleCapacitylnput input argument equals 0. In this case, there is no scale output argument, and scaleCountOutput output argument contains the number of scale values.2024P00800WQ

[0235] Once the size of the number of scale values is known, a call is required where scaleCapacitylnput is the size of the scale output argument and must be equal or higher than the number of scale values. In this case the scale output argument is filled with the scale values, and scaleCountOutput output argument contains the number of values written.588 Return codes• MA_SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE589 maNodeHasRotation()590 Name maNodeHasRotation - Returns MA_SUCCESS if rotation values are present in a Node, MA_UNAVAILABLE otherwise.591 C SpecificationMaResult maNodeHasRotation(MaNode node)592 Input parameters• node is the Node accessor where rotation values can be present.593 Description

[0236] Returns MA_SUCCESS if rotation values are present in a Node, MA_UNAVAILABLE otherwise.594 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE595 maNodeGetRotation()596 Name maNodeGetRotation - Returns the rotation values in a Node.2024P00800WQ597 C SpecificationMaResult maNodeGetRotation(MaNode node, int64_t rotationCapacitylnput, int64_t* rotationCountOutput, double* rotation)598 Input parameters• node is the Node accessor where rotation values are retrieved.• rotationCapacityl nput is the capacity of the rotation output argument, or 0 to indicate a request to retrieve the required capacity.599 Output parameters• rotationCountOutput is the count of values written, or the required capacity in the case that rotationCapacitylnput is insufficient.• rotation is an array filled with the rotation values but is not required if rotationCapacitylnput is 0.600 Description

[0237] This function follows the two-call idiom for retrieving the rotation values of a Node referenced by the node input argument.

[0238] Unless the number of rotation values is already known, a first call is required where rotationCapacitylnput input argument equals 0. In this case, there is no rotation output argument, and rotationCountOutput output argument contains the number of rotation values.

[0239] Once the size of the number of rotation values is known, a call is required where rotationCapacitylnput is the size of the rotation output argument and must be equal or higher than the number of rotation values. In this case the rotation output argument is filled with the rotation values, and rotationCountOutput output argument contains the number of values written.601 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ602 maNodeHasTranslation()603 Name maNodeHasTranslation - Returns MA_SUCCESS if translation values are present in a Node, MAJJNAVAILABLE otherwise.604 C SpecificationMaResult maNodeHasTranslation(MaNode node)605 Input parameters• node is the Node accessor where translation values can be present.606 Description

[0240] Returns MA_SUCCESS if translation values are present in a Node, MA_UNAVAILABLE otherwise.607 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE608 maNodeGetTranslation()609 Name maNodeGetTranslation - Returns the translation values in a Node.610 C SpecificationMaResult maNodeGetTranslation(MaNode node, int64_t translationCapacitylnput, int64 * translationCountOutput, double* translation)611 Input parameters• node is the Node accessor where translation values are retrieved.2024P00800WQ transl ationCapacity I np ut is the capacity of the translation output argument, or 0 to indicate a request to retrieve the required capacity.612 Output parameters• translationCountOutput is the count of values written, or the required capacity in the case that translationCapacityl nput is insufficient.• translation is an array filled with the translation values but is not required if translationCapacityl nput is 0.613 Description

[0241] This function follows the two-call idiom for retrieving the translation values of a Node referenced by the node input argument.

[0242] Unless the number of translation values is already known, a first call is required where translationCapacityl nput input argument equals 0. In this case, there is no translation output argument, and translationCountOutput output argument contains the number of translation values.

[0243] Once the size of the number of translation values is known, a call is required where translationCapacitylnput is the size of the translation output argument and must be equal or higher than the number of translation values. In this case the translation output argument is filled with the translation values, and translationCountOutput output argument contains the number of values written.614 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE615 maNodeHasMatrix()616 Name maNodeHasMatrix - Returns MA_SUCCESS if matrix values are present in a Node, MA_UNAVAILABLE otherwise.617 C SpecificationMaResult maNodeHasMatrix(MaNode node)2024P00800WQ618 Input parameters• node is the Node accessor where matrix values can be present.619 Description

[0244] Returns MA_SUCCESS if matrix values are present in a Node, MA_UNAVAILABLE otherwise.620 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE621 maNodeGetMatrix()622 Name maNodeGetMatrix - Returns the matrix values in a Node.623 C SpecificationMaResult maNodeGetMatrix(MaNode node, int64_t matrixCapacitylnput, int64_t* matrixCountOutput, double* matrix)624 Input parameters• node is the Node accessor where matrix values are retrieved.• matrixCapacitylnput is the capacity of the matrix output argument, or 0 to indicate a request to retrieve the required capacity.625 Output parameters• matrixCountOutput is the count of values written, or the required capacity in the case that matrixCapacitylnput is insufficient.• matrix is an array filled with the matrix values but is not required if matrixCapacitylnput is 0.626 Description

[0245] This function follows the two-call idiom for retrieving the matrix values of a Node referenced by the node input argument.2024P00800WQ

[0246] Unless the number of matrix values is already known, a first call is required where matrixCapacitylnput input argument equals 0. In this case, there is no matrix output argument, and matrixCountOutput output argument contains the number of matrix values.

[0247] Once the size of the number of matrix values is known, a call is required where matrixCapacitylnput is the size of the matrix output argument and must be equal or higher than the number of matrix values. In this case the matrix output argument is filled with the matrix values, and matrixCountOutput output argument contains the number of values written.627 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE628 Geometry functions629 maGeometryDelete()630 Name maGeometryDelete - Deletes an Geometry accessor.631 C SpecificationMaResult maGeometryDelete(MaGeometry* geometry)632 Output parameters• geometry is the Geometry accessor to delete.633 Description

[0248] Deletes an accessor to a Geometry.634 Return codesMA.SUCESSMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE2024P00800WQ635 maGeometryHasName()636 Name maGeometryHasName - Returns MA_SUCCESS if a name is present in a Geometry, MA_UNAVAILABLE otherwise.637 C SpecificationMaResult maGeometryHasName(MaGeometry geometry)638 Input parameters• geometry is the Geometry accessor where a name can be present.639 Description

[0249] Returns MA_SUCCESS if a name is present in a Geometry, MA_UNAVAILABLE otherwise.640 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE641 maGeometryGetNameO642 Name maGeometryGetName - Returns the name of a Geometry.643 C SpecificationMaResult maGeometryGetName(MaGeometry geometry, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)644 Input parameters• geometry is the Geometry accessor where a name is retrieved.2024P00800WQ bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.645 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.646 Description

[0250] This function follows the two-call idiom for retrieving the name of a Geometry referenced by the geometry input argument.

[0251] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0252] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.647 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE648 maGeometryGetVertices()649 Name maGeometryGetVertices - Returns an accessor to the vertices of a Geometry.650 C SpecificationMaResult maGeometryGetVertices(MaGeometry geometry,MaData* vertices)2024P00800WQ651 Input parameters• geometry is the Geometry accessor where a Vertice data property is retrieved.652 Output parameters• vertices is an Vertice data accessor of the Vertice data in the Geometry referenced by geometry.653 Description

[0253] Returns an accessor to the vertices of a Geometry.654 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE655 maGeometryHasNormalsO656 Name maGeometryHasNormals - Returns MA_SUCCESS if a Normal data is present in a Geometry, MAJJNAVAILABLE otherwise.657 C SpecificationMaResult maGeometryHasNormals(MaGeometry geometry)658 Input parameters• geometry is the Geometry accessor where a Normal data property can be present.659 Description

[0254] Returns MA_SUCCESS if a Normal data is present in a Geometry, MA_UNAVAILABLE otherwise.660 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ661 maGeometryGetNormals()662 Name maGeometryGetNormals - Returns an accessor to the normals of a Geometry.663 C SpecificationMaResult maGeometryGetNormals(MaGeometry geometry,MaData* normals)664 Input parameters• geometry is the Geometry accessor where a Normal data property is retrieved.665 Output parameters• normals is an Normal data accessor of the Normal data in the Geometry referenced by geometry.666 Description

[0255] Returns an accessor to the normals of a Geometry.667 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE668 maGeometryHasUvs()669 Name maGeometryHasUvs - Returns MA_SUCCESS if a list of Uv data is present in a Geometry, MAJJNAVAILABLE otherwise.670 C SpecificationMaResult maGeometryHasUvs(MaGeometry geometry )2024P00800WQ671 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Uv data can be present.672 Description

[0256] Returns MA_SUCCESS if a list of Uv data is present in a Geometry, MA_UNAVAILABLE otherwise.673 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE674 maGeometryGetUvCount()675 Name maGeometryGetUvCount - Returns the number of Uv data in a Geometry.676 C SpecificationMaResult maGeometryGetUvCount(MaGeometry geometry, int64_t* count )677 Input parameters• geometry is a Geometry accessor which references a Geometry where the number of Uv data is counted.678 Output parameters• count is the number of Uv data in the Geometry referenced by geometry.679 Description

[0257] Returns the number of Uv data in a Geometry.680 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ681 maGeometryGetUv()682 Name maGeometryGetUv - Returns a Uv data in a Geometry.683 C SpecificationMaResult maGeometryGetUv( MaGeometry geometry, int64_t index,MaData* uv )684 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Uv data is present.• index is the index of a Uv data in the Geometry referenced by Geometry.685 Output parameters• uv is the Uv data of the index in the Geometry referenced by Geometry.686 Description

[0258] Returns a Uv data in a Geometry.687 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE688 maGeometryHasFaces()689 Name maGeometryHasFaces - Returns MA_SUCCESS if a Face is present in a Geometry, MA_UNAVAILABLE otherwise.690 C SpecificationMaResult maGeometryHasFaces( MaGeometry geometry)2024P00800WQ691 Input parameters• geometry is the Geometry accessor where a Face property can be present.692 Description

[0259] Returns MA_SUCCESS if a Face is present in a Geometry, MA_UNAVAILABLE otherwise.693 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE694 maGeometryGetFaces()695 Name maGeometryGetFaces - Returns an accessor to the faces of a Geometry.696 C SpecificationMaResult maGeometryGetFaces(MaGeometry geometry,MaFaces* faces)697 Input parameters• geometry is the Geometry accessor where a Face property is retrieved.698 Output parameters• faces is an Face accessor of the Face in the Geometry referenced by geometry.699 Description

[0260] Returns an accessor to the faces of a Geometry.700 Return codesMA-SUCESSMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE2024P00800WQ701 maGeometryHasBlendshapes()702 Name maGeometryHasBlendshapes - Returns MA_SUCCESS if a list of Blendshape is present in a Geometry, MAJJNAVAILABLE otherwise.703 C SpecificationMaResult maGeometryHasBlendshapes(MaGeometry geometry)704 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Blendshape can be present.705 Description

[0261] Returns MA_SUCCESS if a list of Blendshape is present in a Geometry, MA_UNAVAILABLE otherwise.706 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE707 maGeometryGetBlendshapeCountO708 Name maGeometryGetBlendshapeCount - Returns the number of Blendshape in a Geometry.709 C SpecificationMaResult maGeometryGetBlendshapeCount(MaGeometry geometry, int64 * count)2024P00800WQ710 Input parameters• geometry is a Geometry accessor which references a Geometry where the number of Blendshape is counted.711 Output parameters• count is the number of Blendshape in the Geometry referenced by geometry.712 Description

[0262] Returns the number of Blendshape in a Geometry.713 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE714 maGeometryGetBlendshapeO715 Name maGeometryGetBlendshape - Returns a Blendshape in a Geometry.716 C SpecificationMaResult maGeometryGetBlendshape(MaGeometry geometry, int64_t index, MaBlendshape* blendshape)717 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Blendshape is present.• index is the index of a Blendshape in the Geometry referenced by Geometry.718 Output parameters• blendshape is the Blendshape of the index in the Geometry referenced by Geometry.719 Description

[0263] Returns a Blendshape in a Geometry.2024P00800WQ720 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE721 maGeometryHasTextures()722 Name maGeometryHasTextures - Returns MA_SUCCESS if a list of Texture is present in a Geometry, MAJJNAVAILABLE otherwise.723 C SpecificationMaResult maGeometryHasTextures(MaGeometry geometry)724 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Texture can be present.725 Description

[0264] Returns MA_SUCCESS if a list of Texture is present in a Geometry, MA_UNAVAILABLE otherwise.726 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE727 maGeometryGetTextureCount()728 Name maGeometryGetTextureCount - Returns the number of Texture in a Geometry.729 C SpecificationMaResult maGeometryGetTextureCount(MaGeometry geometry,2024P00800WQ int64_t count)730 Input parameters• geometry is a Geometry accessor which references a Geometry where the number of Texture is counted.731 Output parameters• count is the number of Texture in the Geometry referenced by geometry.732 Description

[0265] Returns the number of Texture in a Geometry.733 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE734 maGeometryGetTexture()735 Name maGeometryGetTexture - Returns a Texture in a Geometry.736 C SpecificationMaResult maGeometryGetTexture( MaGeometry geometry, int64_t index, MaTexture* texture )737 Input parameters• geometry is the Geometry accessor which references a Geometry where a list of Texture is present.• index is the index of a Texture in the Geometry referenced by Geometry.738 Output parameters• texture is the Texture of the index in the Geometry referenced by Geometry.2024P00800WQ739 Description

[0266] Returns a Texture in a Geometry.740 Return codes• MA_SUCESS. MA_ERROR_VALIDATION_FAILURE. MA_ERROR_RUNTIME_FAILURE741 Faces functions742 maFacesDelete()743 Name maFacesDelete - Deletes an Faces accessor.744 C SpecificationMaResult maFacesDelete(MaFaces* faces)745 Output parameters• faces is the Faces accessor to delete.746 Description

[0267] Deletes an accessor to a Faces.747 Return codes• MA_SUCESS. MA_ERROR_VALIDATION_FAILURE. MA_ERROR_RUNTIME_FAILURE748 maFacesHasVertices()749 Name maFacesHasVertices - Returns MA_SUCCESS if a Vertice data is present in a Faces, MA_UNAVAILABLE otherwise.2024P00800WQ750 C SpecificationMaResult maFacesHasVertices(MaFaces faces )751 Input parameters• faces is the Faces accessor where a Vertice data property can be present.752 Description

[0268] Returns MA_SUCCESS if a Vertice data is present in a Faces, MA_UNAVAILABLE otherwise.753 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE754 maFacesGetVertices()755 Name maFacesGetVertices - Returns an accessor to the vertices of a Faces.756 C SpecificationMaResult maFacesGetVertices(MaFaces faces,MaData* vertices)757 Input parameters• faces is the Faces accessor where a Vertice data property is retrieved.758 Output parameters• vertices is an Vertice data accessor of the Vertice data in the Faces referenced by faces.759 Description

[0269] Returns an accessor to the vertices of a Faces.2024P00800WQ760 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE761 maFacesHasNormals()762 Name maFacesHasNormals - Returns MA_SUCCESS if a Normal data is present in a Faces, MA_UNAVAILABLE otherwise.763 C SpecificationMaResult maFacesHasNormals(MaFaces faces)764 Input parameters• faces is the Faces accessor where a Normal data property can be present.765 Description

[0270] Returns MA_SUCCESS if a Normal data is present in a Faces, MA_UNAVAILABLE otherwise.766 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE767 maFacesGetNormalsO768 Name maFacesGetNormals - Returns an accessor to the normals of a Faces.769 C SpecificationMaResult maFacesGetNormals(MaFaces faces,MaData* normals)2024P00800WQ770 Input parameters• faces is the Faces accessor where a Normal data property is retrieved.771 Output parameters• normals is an Normal data accessor of the Normal data in the Faces referenced by faces.772 Description

[0271] Returns an accessor to the normals of a Faces.773 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE774 maFacesHasUvs()775 Name maFacesHaslIvs - Returns MA_SUCCESS if a list of Uv data is present in a Faces, MA_UNAVAILABLE otherwise.776 C SpecificationMaResult maFacesHasllvs(MaFaces faces)777 Input parameters• faces is the Faces accessor which references a Faces where a list of Uv data can be present.778 Description

[0272] Returns MA_SUCCESS if a list of Uv data is present in a Faces, MA_UNAVAILABLE otherwise.779 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ780 maFacesGetUvCount()781 Name maFacesGetllvCount - Returns the number of Uv data in a Faces.782 C SpecificationMaResult maFacesGetllvCount( MaFaces faces, int64_t* count)783 Input parameters• faces is a Faces accessor which references a Faces where the number of Uv data is counted.784 Output parameters• count is the number of Uv data in the Faces referenced by faces.785 Description

[0273] Returns the number of Uv data in a Faces.786 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE787 maFacesGetUv()788 Name maFacesGetUv - Returns a Uv data in a Faces.789 C SpecificationMaResult maFacesGetUv( MaFaces faces, int64_t index,MaData* uv)2024P00800WQ790 Input parameters• faces is the Faces accessor which references a Faces where a list of Uv data is present.• index is the index of a Uv data in the Faces referenced by Faces.791 Output parameters• uv is the Uv data of the index in the Faces referenced by Faces.792 Description

[0274] Returns a Uv data in a Faces.793 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE794 Blendshape functions795 maBlendshapeDeleteO796 Name maBlendshapeDelete - Deletes an Blendshape accessor.797 C SpecificationMaResult maBlendshapeDelete(MaBlendshape* blendshape)798 Output parameters• blendshape is the Blendshape accessor to delete.799 Description

[0275] Deletes an accessor to a Blendshape.800 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ801 maBlendshapeHasName()802 Name maBlendshapeHasName - Returns MA_SUCCESS if a name is present in a Blendshape, MAJJNAVAILABLE otherwise.803 C SpecificationMaResult maBlendshapeHasName(MaBlendshape blendshape)804 Input parameters• blendshape is the Blendshape accessor where a name can be present.805 Description

[0276] Returns MA_SUCCESS if a name is present in a Blendshape, MA_UNAVAILABLE otherwise.806 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE807 maBlendshapeGetNameO808 Name maBlendshapeGetName - Returns the name of a Blendshape.809 C SpecificationMaResult maBlendshapeGetName(MaBlendshape blendshape, int64_t bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)810 Input parameters• blendshape is the Blendshape accessor where a name is retrieved.2024P00800WQ bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.811 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.812 Description

[0277] This function follows the two-call idiom for retrieving the name of a Blendshape referenced by the blendshape input argument.

[0278] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0279] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.813 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE814 maBlendshapeGetDisplacements()815 Name maBlendshapeGetDisplacements - Returns an accessor to the displacements of a Blendshape.816 C SpecificationMaResult maBlendshapeGetDisplacements(MaBlendshape blendshape,MaData* displacements)2024P00800WQ817 Input parameters• blendshape is the Blendshape accessor where a Displacement data property is retrieved.818 Output parameters• displacements is an Displacement data accessor of the Displacement data in the Blendshape referenced by blendshape.819 Description

[0280] Returns an accessor to the displacements of a Blendshape.820 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE821 maBlendshapeHasMapping()822 Name maBlendshapeHasMapping - Returns MA_SUCCESS if a mapping is present in a Blendshape,MAJJNAVAILABLE otherwise.823 C SpecificationMaResult maBlendshapeHasMapping(MaBlendshape blendshape)824 Input parameters• blendshape is the Blendshape accessor where a mapping can be present.825 Description

[0281] Returns MA_SUCCESS if a mapping is present in a Blendshape, MAJJNAVAILABLE otherwise.826 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ827 maBlendshapeGetMapping()828 Name maBlendshapeGetMapping - Returns the mapping of a Blendshape.829 C SpecificationMaResult maBlendshapeGetMapping(MaBlendshape blendshape,Int64_t bufferCapacitylnput,Int64_t* bufferCountOutput, char* buffer)830 Input parameters• blendshape is the Blendshape accessor where a mapping is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.831 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the mapping but is not required if bufferCapacitylnput is 0.832 Description

[0282] This function follows the two-call idiom for retrieving the mapping of a Blendshape referenced by the blendshape input argument.

[0283] Unless the length of the mapping is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mapping.

[0284] Once the length of the mapping is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mapping. In this case the buffer output argument is filled with the characters of the mapping, and bufferCountOutput output argument contains the number of characters written.833 Return codes• MA.SUCCESS2024P00800WQMA_ERROR_SIZE_INSUFFICIENTMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE834 maBlendshapeHasSide()835 Name maBlendshapeHasSide - Returns MA_SUCCESS if a side is present in a Blendshape, MAJJNAVAILABLE otherwise.836 C SpecificationMaResult maBlendshapeHasSide(MaBlendshape blendshape)837 Input parameters• blendshape is the Blendshape accessor where a side can be present.838 Description

[0285] Returns MA_SUCCESS if a side is present in a Blendshape, MA_UNAVAILABLE otherwise.839 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE840 maBlendshapeGetSide()841 Name maBlendshapeGetSide - Returns the side of a Blendshape.842 C SpecificationMaResult maBlendshapeGetSide(MaBlendshape blendshape, int64_t bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)2024P00800WQ843 Input parameters• blendshape is the Blendshape accessor where a side is retrieved.• bufferCapacity I nput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.844 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the side but is not required if bufferCapacitylnput is 0.845 Description

[0286] This function follows the two-call idiom for retrieving the side of a Blendshape referenced by the blendshape input argument.

[0287] Unless the length of the side is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the side.

[0288] Once the length of the side is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the side. In this case the buffer output argument is filled with the characters of the side, and bufferCountOutput output argument contains the number of characters written.846 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE847 Texture functions848 maTextureDelete()849 Name maTextureDelete - Deletes an Texture accessor.2024P00800WQ850 C SpecificationMaResult maTextureDelete(MaTexture* texture )851 Output parameters• texture is the Texture accessor to delete.852 Description

[0289] Deletes an accessor to a Texture.853 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE854 maTextureHasName()855 Name maTextureHasName - Returns MA_SUCCESS if a name is present in a Texture, MA_UNAVAILABLE otherwise.856 C SpecificationMaResult maTextureHasName(MaTexture texture)857 Input parameters• texture is the Texture accessor where a name can be present.858 Description

[0290] Returns MA_SUCCESS if a name is present in a Texture, MA_UNAVAILABLE otherwise.859 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ860 maTextureGetName()861 Name maTextureGetName - Returns the name of a Texture.862 C SpecificationMaResult maTextureGetName(MaTexture texture, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)863 Input parameters• texture is the Texture accessor where a name is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.864 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.865 Description

[0291] This function follows the two-call idiom for retrieving the name of a Texture referenced by the texture input argument.

[0292] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0293] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.866 Return codes• MA.SUCCESS2024P00800WQMA_ERROR_SIZE_INSUFFICIENTMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE867 maTextureGetType()868 Name maTextureGetType - Returns the type of a Texture.869 C SpecificationMaResult maTextureGetType(MaTexture texture, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)870 Input parameters• texture is the Texture accessor where a type is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.871 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the type but is not required if bufferCapacitylnput is 0.872 Description

[0294] This function follows the two-call idiom for retrieving the type of a Texture referenced by the texture input argument.

[0295] Unless the length of the type is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the type.

[0296] Once the length of the type is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the type. In this case the buffer output argument is filled with the characters of the type, and bufferCountOutput output argument contains the number of characters written.2024P00800WQ873 Return codes• MA_SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE874 maTextureHasUvs()875 Name maTextureHaslIvs - Returns MA_SUCCESS if a Uv is present in a Texture, MA_UNAVAILABLE otherwise.876 C SpecificationMaResult maTextureHasllvs(MaTexture texture)877 Input parameters• texture is the Texture accessor where a Uv property can be present.878 Description

[0297] Returns MA_SUCCESS if a Uv is present in a Texture, MA_UNAVAILABLE otherwise.879 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE880 maTextureGetUvs()881 Name maTextureGetUvs - Returns the uvs of a Texture.882 C SpecificationMaResult maTextureGetUvs(MaTexture texture, int64_t* uvs )2024P00800WQ883 Input parameters• texture is the Texture accessor where a Uv property is retrieved.884 Output parameters• uvs is the value of the Uv in the Texture referenced by texture.885 Description

[0298] Returns the uvs of a Texture.886 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE887 maTextureHasimageO888 Name maTextureHasimage - Returns MA_SUCCESS if a Image data is present in a Texture, MA_UNAVAILABLE otherwise.889 C SpecificationMaResult maTextureHaslmage(MaTexture texture)890 Input parameters• texture is the Texture accessor where a Image data property can be present.891 Description

[0299] Returns MA_SUCCESS if a Image data is present in a Texture, MA_UNAVAILABLE otherwise.892 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ893 maTextureGetlmage()894 Name maTextureGetlmage - Returns an accessor to the image of a Texture.895 C SpecificationMaResult maTextureGetlmage(MaTexture texture,MaData* image)896 Input parameters• texture is the Texture accessor where a Image data property is retrieved.897 Output parameters• image is an Image data accessor of the Image data in the Texture referenced by texture.898 Description

[0300] Returns an accessor to the image of a Texture.899 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE900 maTextureHasBasis()901 Name maTextureHasBasis - Returns MA_SUCCESS if a list of Basis is present in a Texture, MA_UNAVAILABLE otherwise.902 C SpecificationMaResult maTextureHasBasis(MaTexture texture)2024P00800WQ903 Input parameters• texture is the Texture accessor which references a Texture where a list of Basis can be present.904 Description

[0301] Returns MA_SUCCESS if a list of Basis is present in a Texture, MA_UNAVAILABLE otherwise.905 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE906 maTextureGetBasisCount()907 Name maTextureGetBasisCount - Returns the number of Basis in a Texture.908 C SpecificationMaResult maTextureGetBasisCount(MaTexture texture, int64_t* count )909 Input parameters• texture is a Texture accessor which references a Texture where the number of Basis is counted.910 Output parameters• count is the number of Basis in the Texture referenced by texture.911 Description

[0302] Returns the number of Basis in a Texture.912 Return codesMA_SUCESSMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE2024P00800WQ913 maTextureGetBasis()914 Name maTextureGetBasis - Returns a Basis in a Texture.915 C SpecificationMaResult maTextureGetBasis(MaTexture texture, int64_t index, MaTextureDisplacement* basis)916 Input parameters• texture is the Texture accessor which references a Texture where a list of Basis is present.• index is the index of a Basis in the Texture referenced by Texture.917 Output parameters• basis is the Basis of the index in the Texture referenced by Texture.918 Description

[0303] Returns a Basis in a Texture.919 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE920 TextureDisplacement functions921 maTextureDisplacementDeleteO922 Name maTextureDisplacementDelete - Deletes an TextureDisplacement accessor.923 C SpecificationMaResult maTextureDisplacementDelete(MaTextureDisplacement* texturedisplacement )2024P00800WQ924 Output parameters• texturedisplacement is the TextureDisplacement accessor to delete.925 Description

[0304] Deletes an accessor to a TextureDisplacement.926 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE927 maTextureDisplacementHasNameO928 Name maTextureDisplacementHasName - Returns MA_SUCCESS if a name is present in a TextureDisplacement, MAJJNAVAILABLE otherwise.929 C SpecificationMaResult maTextureDisplacementHasName(MaTextureDisplacement texturedisplacement)930 Input parameters• texturedisplacement is the TextureDisplacement accessor where a name can be present.931 Description

[0305] Returns MA_SUCCESS if a name is present in a TextureDisplacement, MA_UNAVAILABLE otherwise.932 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ933 maTextureDisplacementGetName()934 Name maTextureDisplacementGetName - Returns the name of a TextureDisplacement.935 C SpecificationMaResult maTextureDisplacementGetName(MaTextureDisplacement texturedisplacement, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)936 Input parameters• texturedisplacement is the TextureDisplacement accessor where a name is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.937 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.938 Description

[0306] This function follows the two-call idiom for retrieving the name of a T extureDisplacement referenced by the texturedisplacement input argument.

[0307] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0308] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.939 Return codes• MA.SUCCESS2024P00800WQMA_ERROR_SIZE_INSUFFICIENTMA_ERROR_VALIDATION_FAILUREMA_ERROR_RUNTIME_FAILURE940 maTextureDisplacementGetDisplacements()941 Name maTextureDisplacementGetDisplacements - Returns an accessor to the displacements of a TextureDisplacement.942 C SpecificationMaResult maTextureDisplacementGetDisplacements(MaTextureDisplacement texturedisplacement,MaData* displacements)943 Input parameters• texturedisplacement is the TextureDisplacement accessor where a Displacement data property is retrieved.944 Output parameters• displacements is an Displacement data accessor of the Displacement data in the TextureDisplacement referenced by texturedisplacement.945 Description

[0309] Returns an accessor to the displacements of a TextureDisplacement.946 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE947 maTextureDisplacementHasMappingO948 Name maTextureDisplacementHasMapping - Returns MA_SUCCESS if a mapping is present in a TextureDisplacement, MAJJNAVAILABLE otherwise.2024P00800WQ949 C SpecificationMaResult maTextureDisplacementHasMapping(MaTextureDisplacement texturedisplacement)950 Input parameters• texturedisplacement is the TextureDisplacement accessor where a mapping can be present.951 Description

[0310] Returns MA_SUCCESS if a mapping is present in a TextureDisplacement, MAJJNAVAILABLE otherwise.952 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE953 maTextureDisplacementGetMappingO954 Name maTextureDisplacementGetMapping - Returns the mapping of a TextureDisplacement.955 C SpecificationMaResult maTextureDisplacementGetMapping(MaTextureDisplacement texturedisplacement, int64_t bufferCapacitylnput, int64 * bufferCountOutput, char* buffer)956 Input parameters• texturedisplacement is the TextureDisplacement accessor where a mapping is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.957 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.2024P00800WQ buffer is a buffer filled with characters of the mapping but is not required if bufferCapacitylnput is 0.958 Description

[0311] This function follows the two-call idiom for retrieving the mapping of a TextureDisplacement referenced by the texturedisplacement input argument.

[0312] Unless the length of the mapping is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mapping.

[0313] Once the length of the mapping is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mapping. In this case the buffer output argument is filled with the characters of the mapping, and bufferCountOutput output argument contains the number of characters written.959 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE960 Data functions961 maDataDelete()962 Name maDataDelete - Deletes an Data accessor.963 C SpecificationMaResult maDataDelete(MaData* data)964 Output parameters• data is the Data accessor to delete.965 Description

[0314] Deletes an accessor to a Data.2024P00800WQ966 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE967 maDataHasName()968 Name maDataHasName - Returns MA_SUCCESS if a name is present in a Data, MA_UNAVAILABLE otherwise.969 C SpecificationMaResult maDataHasName(MaData data )970 Input parameters• data is the Data accessor where a name can be present.971 Description

[0315] Returns MA_SUCCESS if a name is present in a Data, MA_UNAVAILABLE otherwise.972 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE973 maDataGetNameO974 Name maDataGetName - Returns the name of a Data.975 C SpecificationMaResult maDataGetName(MaData data, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, char* buffer)2024P00800WQ976 Input parameters• data is the Data accessor where a name is retrieved.• bufferCapacity I nput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.977 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the name but is not required if bufferCapacitylnput is 0.978 Description

[0316] This function follows the two-call idiom for retrieving the name of a Data referenced by the data input argument.

[0317] Unless the length of the name is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the name.

[0318] Once the length of the name is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the name. In this case the buffer output argument is filled with the characters of the name, and bufferCountOutput output argument contains the number of characters written.979 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE980 maDataGetType()981 Name maDataGetType - Returns the type of a Data.982 C SpecificationMaResult maDataGetType(MaData data,2024P00800WQMaDataType* type)983 Input parameters• data is the Data accessor where a Type property is retrieved.984 Output parameters• type is the value of the Type in the Data referenced by data.985 Description

[0319] Returns the type of a Data.986 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE987 maDataHasDType()988 Name maDataHasDType - Returns MA_SUCCESS if a DType is present in a Data, MA_UNAVAILABLE otherwise.989 C SpecificationMaResult maDataHasDType(MaData data )990 Input parameters• data is the Data accessor where a DType property can be present.991 Description

[0320] Returns MA_SUCCESS if a DType is present in a Data, MA_UNAVAILABLE otherwise.992 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE2024P00800WQ993 maDataGetDType()994 Name maDataGetDType - Returns the dtype of a Data.995 C SpecificationMaResult maDataGetDType(MaData data,MaDataDType* dtype )996 Input parameters• data is the Data accessor where a DType property is retrieved.997 Output parameters• dtype is the value of the DType in the Data referenced by data.998 Description

[0321] Returns the dtype of a Data.999 Return codes• MA-SUCESS. MA_ERROR_VALIDATION_FAILURE. MA_ERROR_RUNTIME_FAILURE1000 maDataHaslType()1001 Name maDataHasIType - Returns MA_SUCCESS if a IType is present in a Data, MAJJNAVAILABLE otherwise.1002 C SpecificationMaResult maDataHaslType(MaData data )1003 Input parameters• data is the Data accessor where a IType property can be present.2024P00800WQ1004 Description

[0322] Returns MA_SUCCESS if a IType is present in a Data, MA_UNAVAILABLE otherwise.1005 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1006 maDataGetlType()1007 Name maDataGetIType - Returns the itype of a Data.1008 C SpecificationMaResult maDataGetlType(MaData data,MaDatalType* itype )1009 Input parameters• data is the Data accessor where a IType property is retrieved.1010 Output parameters• itype is the value of the IType in the Data referenced by data.1011 Description

[0323] Returns the itype of a Data.1012 Return codes• MA-SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1013 maDataHasCType()1014 Name maDataHasCType - Returns MA_SUCCESS if a CType is present in a Data, MA_UNAVAILABLE otherwise.2024P00800WQ1015 C SpecificationMaResult maDataHasCType(MaData data)1016 Input parameters• data is the Data accessor where a CType property can be present.1017 Description

[0324] Returns MA_SUCCESS if a CType is present in a Data, MA_UNAVAILABLE otherwise.1018 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1019 maDataGetCType()1020 Name maDataGetCType - Returns the ctype of a Data.1021 C SpecificationMaResult maDataGetCType(MaData data,MaDataCType* ctype)1022 Input parameters• data is the Data accessor where a CType property is retrieved.1023 Output parameters• ctype is the value of the CType in the Data referenced by data.1024 Description

[0325] Returns the ctype of a Data.2024P00800WQ1025 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1026 maDataHasDims()1027 Name maDataHasDims - Returns MA_SUCCESS if dims values are present in a Data, MA_UNAVAILABLE otherwise.1028 C SpecificationMaResult maDataHasDims(MaData data)1029 Input parameters• data is the Data accessor where dims values can be present.1030 Description

[0326] Returns MA_SUCCESS if dims values are present in a Data, MA_UNAVAILABLE otherwise.1031 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1032 maDataGetDimsO1033 Name maDataGetDims - Returns the dims values in a Data.1034 C SpecificationMaResult maDataGetDims(MaData data, int64_t dimsCapacitylnput, int64_t* dimsCountOutput,2024P00800WQ int64_t dims)1035 Input parameters• data is the Data accessor where dims values are retrieved.• dimsCapacitylnput is the capacity of the dims output argument, or 0 to indicate a request to retrieve the required capacity.1036 Output parameters• dimsCountOutput is the count of values written, or the required capacity in the case that dimsCapacitylnput is insufficient.• dims is an array filled with the dims values but is not required if dimsCapacitylnput is 0.1037 Description

[0327] This function follows the two-call idiom for retrieving the dims values of a Data referenced by the data input argument.

[0328] Unless the number of dims values is already known, a first call is required where dimsCapacitylnput input argument equals 0. In this case, there is no dims output argument, and dimsCountOutput output argument contains the number of dims values.

[0329] Once the size of the number of dims values is known, a call is required where dimsCapacitylnput is the size of the dims output argument and must be equal or higher than the number of dims values. In this case the dims output argument is filled with the dims values, and dimsCountOutput output argument contains the number of values written.1038 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1039 maDataHasCount()1040 Name maDataHasCount - Returns MA_SUCCESS if a Count is present in a Data, MA_UNAVAILABLE otherwise.2024P00800WQ1041 C SpecificationMaResult maDataHasCount(MaData data)1042 Input parameters• data is the Data accessor where a Count property can be present.1043 Description

[0330] Returns MA_SUCCESS if a Count is present in a Data, MA_UNAVAILABLE otherwise.1044 Return codes• MAJJNAVAILABLE• MA_ERROR_VAUDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1045 maDataGetCount()1046 Name maDataGetCount - Returns the count of a Data.1047 C SpecificationMaResult maDataGetCount(MaData data, int64_t* count)1048 Input parameters• data is the Data accessor where a Count property is retrieved.1049 Output parameters• count is the value of the Count in the Data referenced by data.1050 Description

[0331] Returns the count of a Data.2024P00800WQ1051 Return codes• MA_SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1052 maDataHasMimeTypeO1053 Name maDataHasMimeType - Returns MA_SUCCESS if a mimeType is present in a Data, MA_UNAVAILABLE otherwise.1054 C SpecificationMaResult maDataHasMimeType(MaData data)1055 Input parameters• data is the Data accessor where a mimeType can be present.1056 Description

[0332] Returns MA_SUCCESS if a mimeType is present in a Data, MA_UNAVAILABLE otherwise.1057 Return codes• MAJJNAVAILABLE• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1058 maDataGetMimeTypeO1059 Name maDataGetMimeType - Returns the mimeType of a Data.1060 C SpecificationMaResult maDataGetMimeType(MaData data, int64_t bufferCapacitylnput, int64_t* bufferCountOutput,2024P00800WQ char buffer)1061 Input parameters• data is the Data accessor where a mimeType is retrieved.• bufferCapacity I nput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.1062 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with characters of the mimeType but is not required if bufferCapacitylnput is 0.1063 Description

[0333] This function follows the two-call idiom for retrieving the mimeType of a Data referenced by the data input argument.

[0334] Unless the length of the mimeType is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the mimeType.

[0335] Once the length of the mimeType is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the mimeType. In this case the buffer output argument is filled with the characters of the mimeType, and bufferCountOutput output argument contains the number of characters written.1064 Return codes• MA.SUCCESS• MA_ERROR_SIZE_INSUFFICIENT• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE1065 maDataGetContent()1066 Name maDataGetContent2024P00800WQ1067 C SpecificationMaResult maDataGetContent(MaData data, int64_t bufferCapacitylnput, int64_t* bufferCountOutput, void* buffer)1068 Input parameters• data is the RawData accessor where a content is retrieved.• bufferCapacitylnput is the capacity of the buffer output argument, or 0 to indicate a request to retrieve the required capacity.1069 Output parameters• bufferCountOutput is the count of characters written, or the required capacity in the case that bufferCapacitylnput is insufficient.• buffer is a buffer filled with bytes of the content but is not required if bufferCapacitylnput is 0.1070 Description

[0336] This function follows the two-call idiom for retrieving the content of a RawData referenced by the data input argument.

[0337] Unless the length of the content is already known, a first call is required where bufferCapacitylnput input argument equals 0. In this case, there is no buffer output argument, and bufferCountOutput output argument contains the length of the content.

[0338] Once the length of the content is known, a call is required where bufferCapacitylnput is the length of the buffer output argument and must be equal or higher than the length of the content. In this case the buffer output argument is filled with the bytes of the content, and bufferCountOutput output argument contains the number of bytes written.1071 Return codes• MA.SUCESS• MA_ERROR_VALIDATION_FAILURE• MA_ERROR_RUNTIME_FAILURE

[0339] One or more embodiments provide a computer program comprising instructions which when executed by one or more processors cause such processors to perform the encoding and / or decoding methods according to any of the embodiments described above. One or more embodiments also provide a2024P00800WQ computer readable storage medium having stored thereon instructions for encoding or decoding video data according to the methods described above.

[0340] One or more embodiments provide a computer readable storage medium having stored thereon video data generated according to the methods described above. One or more embodiments also provide a method and apparatus for transmitting or receiving video data generated according to the methods described above.

[0341] The embodiments described herein may be implemented in, for example, a method or a process, an apparatus, a software program, a data stream, or a signal. Even if only discussed in the context of a single form of implementation (e.g., as a method), the implementation of such features may also be implemented in other forms. An apparatus may be implemented in, for example, appropriate hardware, software, and firmware. Corresponding methods may be implemented in, for example, a processor.

[0342] Various methods and aspects described herein can be used to modify one or more modules. For example, the intra predictors and inter predictors described with respect to FIGs. 2 and 3 may be implemented as one or more modules and modified according to the various embodiments of the present disclosure.

[0343] The following are enumerated examples of the methods, devices, and non-transitory computer- readable media that provide the Dynamic Avatar API. Example 1 : a method comprising: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.

[0344] Example 2: the method of Example 1 , wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0345] Example 3: the method of any of Examples 1 or 2, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0346] Example 4: the method of Example 3, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.2024P00800WQ

[0347] Example 5: the method of Examples 3 or 4, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0348] Example 6: the method of Example 5, wherein the one or more vertices includes a list of three- dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0349] Example 7: the method of any of Examples 3 through 6, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0350] Example 8: the method of Example 7, wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0351] Example 9: the method of any of Examples 3 through 8, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

[0352] Example 10: the method of Example 9, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.

[0353] Example 11 : the method of Example 10, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

[0354] Example 12: the method of Example 11 , wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.

[0355] Example 13: the method of Examples 11 or 12, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights2024P00800WQ of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0356] Example 14: the method of any of Examples 1 through 13, wherein transmitting the request for the portion of the avatar three-dimensional (3D) representation further includes one of: submitting the request to an application programming interface, submitting the request to a web service, or submitting the request to a function.

[0357] Example 15: the method of any of Examples 1 through 14, wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with to the portion of the avatar 3D representation, receiving access to one or more pointers associated with to the portion of the avatar 3D representation, or receiving access to one or more references associated with to the portion of the avatar 3D representation.

[0358] Example 16: the method of any of Examples 1 through 15, wherein the avatar three-dimensional (3D) representation is stored in a second representation format that is distinct from the representation format.

[0359] Example 17: a non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a set of operations comprising: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.

[0360] Example 18: the non-transitory computer-readable medium of Example 17, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0361] Example 19: the non-transitory computer-readable medium of Examples 17 or 18, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0362] Example 20: the non-transitory computer-readable medium of Example 19, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.2024P00800WQ

[0363] Example 21 : the non-transitory computer-readable medium of Examples 19 or 20, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0364] Example 22: the non-transitory computer-readable medium of Example 21 , wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0365] Example 23: the non-transitory computer-readable medium of any of Examples 19 through 22, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0366] Example 24: the non-transitory computer-readable medium of Example 23, wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0367] Example 25: the non-transitory computer-readable medium of any of Examples 19 through 24, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

[0368] Example 26: the non-transitory computer-readable medium of Example 25, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.

[0369] Example 27: the non-transitory computer-readable medium of Example 26, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.2024P00800WQ

[0370] Example 28: the non-transitory computer-readable medium of Example 27, wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.

[0371] Example 29: the non-transitory computer-readable medium of Examples 27 or 28, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0372] Example 30: the non-transitory computer-readable medium of any of Examples 17 through 29, wherein transmitting the request for the portion of the avatar three-dimensional (3D) representation further includes one of: submitting the request to an application programming interface, submitting the request to a web service, or submitting the request to a function.

[0373] Example 31 : the non-transitory computer-readable medium of any of Examples 17 through 30, wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with to the portion of the avatar 3D representation, receiving access to one or more pointers associated with to the portion of the avatar 3D representation, or receiving access to one or more references associated with to the portion of the avatar 3D representation.

[0374] Example 32: the non-transitory computer-readable medium of any of Examples 17 through 31 , wherein the avatar three-dimensional (3D) representation is stored in a second representation format that is distinct from the representation format.

[0375] Example 33: a device comprising: a video decoder configured to: transmit a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation, and receive the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.

[0376] Example 34: the device of Example 33, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0377] Example 35: the device of Examples 33 or 34, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.2024P00800WQ

[0378] Example 36: the device of Example 35, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

[0379] Example 37: the device of Examples 35 or 36, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0380] Example 38: the device of Example 37, wherein the one or more vertices includes a list of three- dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0381] Example 39: the device of any of Examples 35 through 38, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0382] Example 40: the device of Example 39, wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0383] Example 41 : the device of any of Examples 35 through 40, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

[0384] Example 42: the device of Example 41 , wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.

[0385] Example 43: the device of Example 42, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

[0386] Example 44: the device of Example 43, wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.2024P00800WQ

[0387] Example 45: the device of Examples 43 or 44, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0388] Example 46: the device of any of Examples 33 through 45, wherein, to transmit the request for the portion of the avatar three-dimensional (3D) representation, the video decoder is further configured to: submit the request to an application programming interface, submit the request to a web service, or submit the request to a function.

[0389] Example 47: the device of any of Examples 33 through 46, wherein, to receive the access to the portion of the avatar 3D representation, the video decoder is further configured to: receive access to one or more accessors associated with to the portion of the avatar 3D representation, receive access to one or more pointers associated with to the portion of the avatar 3D representation, or receive access to one or more references associated with to the portion of the avatar 3D representation.

[0390] Example 48: the device of any of Examples 33 through 47, wherein the avatar three-dimensional (3D) representation is stored in a second representation format that is distinct from the representation format.

[0391] Example 49: a method comprising: receiving a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation; extracting only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, and the full representation of the avatar 3D representation in a second representation format; and outputting the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted.

[0392] Example 50: the method of Example 49, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0393] Example 51 : the method of Examples 49 or 50, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0394] Example 52: the method of Example 51 , wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.2024P00800WQ

[0395] Example 53: the method of Examples 51 or 52, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0396] Example 54: the method of Example 53, wherein the one or more vertices includes a list of three- dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0397] Example 55: the method of any of Examples 51 through 54, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0398] Example 56: the method of Example 55, wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0399] Example 57: the method of any of Examples 51 through 55, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

[0400] Example 58: the method of Example 57, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.

[0401] Example 59: the method of Example 58, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

[0402] Example 60: the method of Example 59, wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.

[0403] Example 61 : the method of Examples 59 or 60, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights2024P00800WQ of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0404] Example 62: the method of any of Examples 49 through 61 , wherein receiving the request for the portion of the avatar three-dimensional (3D) representation further includes one of: receiving the request via an application programming interface, receiving the request via a web service, or receiving the request via a remote procedure call.

[0405] Example 63: the method of any of Examples 49 through 62, wherein outputting the access to the portion of the avatar 3D representation further includes one of: providing access to one or more accessors associated with to the portion of the avatar 3D representation, providing access to one or more pointers associated with to the portion of the avatar 3D representation, or providing access to one or more references associated with to the portion of the avatar 3D representation.

[0406] Example 64: the method of any of Examples 49 through 63, wherein the second representation format is distinct from the first representation format.

[0407] Example 65: a non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a set of operations comprising: receiving a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar three- dimensional (3D) representation; extracting only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, and the full representation of the avatar 3D representation in a second representation format; and outputting the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted.

[0408] Example 66: the non-transitory computer-readable medium of Example 65, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0409] Example 67: the non-transitory computer-readable medium of Examples 65 or 66, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.2024P00800WQ

[0410] Example 68: the non-transitory computer-readable medium of Example 67, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

[0411] Example 69: the non-transitory computer-readable medium of Examples 67 or 68, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0412] Example 70: the non-transitory computer-readable medium of Example 69, wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0413] Example 71 : the non-transitory computer-readable medium of any of Examples 67 through 70, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0414] Example 72: the non-transitory computer-readable medium of Example 71 , wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0415] Example 73: the non-transitory computer-readable medium of any of Examples 67 through 72, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

[0416] Example 74: the non-transitory computer-readable medium of Example 73, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.2024P00800WQ

[0417] Example 75: the non-transitory computer-readable medium of Example 74, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

[0418] Example 76: the non-transitory computer-readable medium of Example 75, wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.

[0419] Example 77: the non-transitory computer-readable medium of Examples 75 or 76, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0420] Example 78: the non-transitory computer-readable medium of any of Examples 65 through 77, wherein receiving the request for the portion of the avatar three-dimensional (3D) representation further includes one of: receiving the request via an application programming interface, receiving the request via a web service, or receiving the request via a remote procedure call.

[0421] Example 79: the non-transitory computer-readable medium of any of Examples 65 through 78, wherein outputting the access to the portion of the avatar 3D representation further includes one of: providing access to one or more accessors associated with to the portion of the avatar 3D representation, providing access to one or more pointers associated with to the portion of the avatar 3D representation, or providing access to one or more references associated with to the portion of the avatar 3D representation.

[0422] Example 80: the non-transitory computer-readable medium of any of Examples 65 through 79, wherein the second representation format is distinct from the first representation format.

[0423] Example 81 : a device comprising: a video decoder configured to receive a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar three-dimensional (3D) representation; extract only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, and the full representation of the avatar 3D representation in a second representation format; and output the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted.

[0424] Example 82: the device of Example 81 , wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D2024P00800WQ representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0425] Example 83: the device of Examples 81 or 82, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

[0426] Example 84: the device of Example 83, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

[0427] Example 85: the device of Examples 83 or 84, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

[0428] Example 86: the device of Example 85, wherein the one or more vertices includes a list of three- dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

[0429] Example 87: the device of any of Examples 83 through 86, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

[0430] Example 88: the device of Example 87, wherein the list of skin weights includes a mesh used by an avatar and a list of a 3-tuple referencing to one joint in the list of joints, a vertex in the mesh, and a scalar weight between zero and one.

[0431] Example 89: the device of any of Examples 83 through 88, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.2024P00800WQ

[0432] Example 90: the device of Example 89, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and the one or more controller channels includes a list of controller channels.

[0433] Example 91 : the device of Example 90, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

[0434] Example 92: the device of Example 91 , wherein the interpolation method includes one of a linear interpolation method, a step interpolation method, or a cubicspline interpolation method.

[0435] Example 93: the device of Examples 91 or 92, wherein the component to animate includes a transform for the one or more geometries, a transform for one or more skeleton joints, blendshape weights of the one or more geometries, texture displacement weights for one or more textures, a weight for another controller, or a combination thereof.

[0436] Example 94: the device of any of Examples 81 through 93, wherein, to receive the request for the portion of the avatar three-dimensional (3D) representation, the video decoder is further configured to: receive the request via an application programming interface, receive the request via a web service, or receive the request via a remote procedure call.

[0437] Example 95: the device of any of Examples 81 through 94, wherein, to output the access to the portion of the avatar 3D representation, the video decoder is further configured to: provide access to one or more accessors associated with to the portion of the avatar 3D representation, provide access to one or more pointers associated with to the portion of the avatar 3D representation, or provide access to one or more references associated with to the portion of the avatar 3D representation.

[0438] Example 96: the device of any of Examples 81 through 95, wherein the second representation format is distinct from the first representation format.

[0439] The various embodiments described herein provide at least the following features, devices or aspects, alone or on any combination, across various claim categories and types: i. Encoding, into coded video data, syntax elements that can enable the decoder to decode the coded video data, according to any of the embodiments described herein. ii. A bitstream that includes one or more of the described syntax elements, or variations thereof, whether transmitted, stored, or otherwise made available. ill. Creating, transmitting, receiving, and / or decoding of the bitstream.2024P00800WQ iv. An electronic device (e.g., TV, set-top box, mobile phone, tablet, etc.) that tunes a channel to receive a bitstream or that receives such bitstream over the air. The electronic device decodes the syntax elements from the bitstream, and, optionally, displays (e.g., via a monitor or other type of display) a resulting image.

[0440] Various numeric values are used in the present application. Such specific values are for example purposes and the embodiments described are not limited to these specific values.

[0441] Various methods are described herein, and such methods comprise one or more steps or actions for achieving the described method. Unless a specific order of steps or actions is required for the proper operation of the method, the order and / or use of specific steps and / or actions may be modified or combined. Additionally, terms such as “first”, “second”, etc. may be used in various embodiments to modify an element, component, step, operation, etc., for example, a “first decoding” and a “second decoding”. Use of such terms does not imply an order to the operations unless specifically required.

[0442] The present disclosure may refer to “determining” various pieces of information. Determining information may include one or more of, for example, estimating, calculating, predicting, or retrieving (e.g., from memory) the information.

[0443] The present disclosure may refer to “accessing” various pieces of information. Accessing information may include one or more of, for example, receiving, retrieving (e.g., from memory), storing, moving, copying, calculating, determining, predicting, or estimating the information. Similarly, the present disclosure may refer to “receiving” various pieces of information. Receiving information may include one or more of, for example, accessing or retrieving (e.g., from memory) the information.

[0444] “Decoding,” as used herein, encompasses all or part of the processes performed, for example, on an encoded sequence to produce an output suitable for display. In some embodiments, such processes include one or more of the processes typically performed by a decoder, for example, entropy decoding, inverse quantization, etc. Whether the phrase “decoding process” is intended to refer to a subset of operations or generally to the broader decoding process will be clear based on the context of the specific description and will be well understood by those skilled in the art.

[0445] “Encoding,” as used herein, encompasses all or part of the processes performed, for example, on input video data an order to produce an encoded bitstream. Additionally, the terms “reconstructed” and “decoded” may be used interchangeably, the terms “encoded” or “coded” may be used interchangeably, the terms “image,” “picture,” “sub-picture,” “slice,” and “frame” may be used interchangeably, and the terms “pixel” and “sample” may be used interchangeably.2024P00800WQ

[0446] The present disclosure refers to information, for example, syntax elements, that can be transmitted or stored. Such information can be packaged or arranged in a variety of manners, including for example manners common in video standards such as putting the information into a sequence parameter set (SPS), a picture parameter set (PPS), a network abstraction layer (NAL) unit, a header (for example, a NAL unit header, or a slice header), or an SEI message. Other manners are also available, including, for example, manners that are common for system level or application-level standards such as signaling the information into one or more of the following: i. session description protocol (SDP), for example as described in RFCs and / or used in conjunction with real-time transport protocol (RTP) transmission. ii. hypertext transfer protocol (HTTP) live Streaming (HLS) manifest transmitted over HTTP. ill. dynamic adaptive streaming over HTTP (DASH) media presentation description(MPD) descriptors, for example as used in DASH and transmitted over HTTP. iv. RTP header extensions, for example as used during RTP streaming. v. International Organization for Standardization (ISO) base media file format, for example, as used in Omnidirectional MediA Format (OMAF).

[0447] As used herein, “signal” and “signaling” refer to, among other things, indicating information to a decoder. For example, in some embodiments the encoder signals a quantization matrix for de-quantization, whereby the same parameter is used for both encoding and decoding. In some embodiments, the signaling may be explicit, such that information (e.g., a particular parameter) is transmitted to the decoder enabling the decoder to use the same particular parameter. In some embodiments, the signaling may be implicit, in that the information (e.g., a particular parameter) is indicated based on other information at or transmitted to the decoder or derived or selected by the decoder based on information available at the decoder. By not transmitting the information (e.g., the particular parameter), a bit savings is thus realized in some embodiments. In some embodiments, one or more syntax elements or flags are used to signal information to a decoder. While the preceding relates to the verb form of the word “signal”, the word “signal” can also be used herein as a noun.

[0448] In some embodiments, signals may be produced that are formatted to carry information that may be stored or transmitted. Such information may include, for example, instructions for performing a method, or data produced by one of the described implementations (e.g., a bitstream of a described embodiment). Such a signal may be formatted, for example, as an electromagnetic wave or as a baseband signal. The formatting may include, for example, encoding a data stream and modulating a carrier with the encoded data2024P00800WQ stream. The information that the signal carries may be, for example, analog or digital information. The signal may be transmitted over a variety of different wired or wireless links and may be stored on a processor- readable medium.

[0449] It is to be understood that use of any of the following 7”, “and / or”, and “at least one of” is intended to encompass all possible selections of listed items, taken either individually or in any combination thereof.

[0450] While specific embodiments have been described in the foregoing description in connection with the accompanying drawings, it should be understood that embodiments described herein are examples only and should not be taken as limiting the scope of the present disclosure or the following claims. Although features and elements are described herein in particular combinations, those of ordinary skill in the art will appreciate that such features or elements may be used alone or in any combination with the other features and elements. It is understood, therefore, that the overall teachings of the present disclosure are not limited to the particular embodiments, implementations, and examples disclosed herein, but are intended to cover variations, modifications, and alternatives as defined by the appended claims and any and all equivalents thereof.

Claims

2024P00800WQCLAIMS1. A method comprising: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar 3D representation, wherein the avatar 3D representation is stored in a second representation format that is different from the first representation format; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation, wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

2. The method of claim 1 , wherein the first representation format is a non-gITF avatar representation format.

3. The method of any one of claims 1-2, wherein the second representation format is a gITF-based avatar representation format.

4. The method of any one of claims 1-3, wherein the second representation format is an MPEG-l-based avatar representation format.

5. The method of any one of claims 1-4, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof.

6. The method of any one of claims 1 -5, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof.

7. The method of claim 6, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

8. The method of claim 6, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

9. The method of claim 8, wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates,2024P00800WQ wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

10. The method of claim 6, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.11 . The method of claim 6, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

12. The method of claim 11 , wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and wherein the one or more controller channels includes a list of controller channels.

13. The method of claim 12, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

14. The method of any one of claims 1 -13, wherein transmitting the request for the portion of the avatar three- dimensional (3D) representation further includes one of: submitting the request to an application programming interface, submitting the request to a web service, or submitting the request to a function.

15. The method of any one of claims 1 -14, wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with the portion of the avatar 3D representation,2024P00800WQ receiving access to one or more pointers associated with the portion of the avatar 3D representation, or receiving access to one or more references associated with the portion of the avatar 3D representation.

16. A device including an avatar decoder configured to perform a method according to any of one of claims1-15.

17. A non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a method according to any of one of claims 1 -15.

18. An apparatus comprising: a processor; and a memory storing instructions operative, when executed by the processor, to cause the apparatus to perform the method of any one of claims 1-15.

19. A method comprising: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a first representation format that defines access to a predefined range of data of the avatar 3D representation; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation, wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

20. The method of claim 19, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof.21 . The method of any one of claims 19-20, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof.

22. The method of claim 21 , wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.2024P00800WQ23. The method of claim 21 , wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

24. The method of claim 23, wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

25. The method of claim 21 , wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

26. The method of claim 21 , wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

27. The method of claim 26, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and wherein the one or more controller channels includes a list of controller channels.

28. The method of claim 27, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

29. The method of any one of claims 19-28, wherein transmitting the request for the portion of the avatar three-dimensional (3D) representation further includes one of: submitting the request to an application programming interface,2024P00800WQ submitting the request to a web service, or submitting the request to a function.

30. The method of any one of claims 19-29, wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with the portion of the avatar 3D representation, receiving access to one or more pointers associated with the portion of the avatar 3D representation, or receiving access to one or more references associated with the portion of the avatar 3D representation.31 . A device including an avatar decoder configured to perform a method according to any of one of claims19-30.

32. A non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a method according to any of one of claims 19- 30.

33. An apparatus comprising: a processor; and a memory storing instructions operative, when executed by the processor, to cause the apparatus to perform the method of any one of claims 19-30.

34. A method comprising: receiving a request for a portion of an avatar three-dimensional (3D) representation, wherein the request is based on a first representation format that defines access to a predefined range of data of the avatar 3D representation; extracting only the portion of the avatar 3D representation from a full representation of the avatar 3D representation, wherein the full representation of the avatar 3D representation is in a second representation format; and outputting the portion of the avatar 3D representation that is extracted or access to the portion of the avatar 3D representation that is extracted.

35. The method of claim 34, wherein the method is performed by an Application Programming Interface(API).2024P00800WQ36. The method of claim 34, wherein the method is performed by a read Application Programming Interface(API).

37. The method of any one of claims 34-36, wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof.

38. The method of any one of claims 34-37, wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof.

39. The method of claim 38, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

40. The method of claim 38, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.41 . The method of claim 40, wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index, wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

42. The method of claim 38, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.2024P00800WQ43. The method of claim 38, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

44. The method of claim 43, wherein the one or more controller mappings includes a string with a corresponding code syntax, wherein the one or more controller inputs includes a list of increasing input weights, and wherein the one or more controller channels includes a list of controller channels.

45. The method of claim 44, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.

46. The method of any one of claims 34-45, wherein transmitting the request for the portion of the avatar three-dimensional (3D) representation further includes one of: submitting the request to an application programming interface, submitting the request to a web service, or submitting the request to a function.

47. The method of any one of claims 34-46, wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with the portion of the avatar 3D representation, receiving access to one or more pointers associated with the portion of the avatar 3D representation, or receiving access to one or more references associated with the portion of the avatar 3D representation.

48. A device including an avatar decoder configured to perform a method according to any of one of claims34-47.

49. A non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a method according to any of one of claims 34- 47.

50. An apparatus comprising: a processor; and a memory storing instructions operative, when executed by the processor, to cause the apparatus to perform the method of any one of claims 34-47.2024P00800WQ51. A method comprising: transmitting a request for a portion of an avatar three-dimensional (3D) representation, the request based on a representation format that defines access to a predefined range of data of the avatar three- dimensional (3D) representation; and receiving the portion of the avatar 3D representation or access to the portion of the avatar 3D representation.

52. The method of claim 51 , wherein the portion of the avatar 3D representation includes a name, an identifier, an age, a gender, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

53. The method of claim 51 , wherein the portion of the avatar 3D representation includes one or more geometries, one or more mappings, one or more skeleton skins, one or more controllers, or a combination thereof, and wherein the portion of the avatar 3D representation is less than all of the predefined range of data of the avatar three-dimensional (3D) representation.

54. The method of claim 53, wherein one of the one or more mappings is a list of strings with associated geometries to identify body parts of the avatar 3D representation.

55. The method of claim 53, wherein one of the one or more geometries further includes one or more vertices, one or more faces, one or more normals, one or more blendshapes, one or more textures, or a combination thereof.

56. The method of claim 55, wherein the one or more vertices includes a list of three-dimensional float coordinates corresponding to vertex coordinates, wherein the one or more faces includes a first list of tuples, each value in the first list of tuples is a vertex index, wherein the one or more normal includes a list of three-dimensional float coordinates corresponding to vertex normal coordinates and a second list of tuples, each value in the second list of tuples is a normal index,2024P00800WQ wherein the one or more blendshapes includes a list of blendshapes, each blendshape in the list of blendshapes includes one or more displacements, a name, code syntax, a location hint, or a combination thereof, and wherein the one or more textures includes a list of texture data, each of the texture data includes a type, a list of two-dimensional float coordinates corresponding to UV coordinates, a third list of tuples, each value of the third list of tuples is a UV index, a texture image, one or more texture displacement maps, or a combination thereof.

57. The method of claim 53, wherein one of the one or more skeleton skins further includes a root joint, a list of joints, a list of skin weights, or a combination thereof.

58. The method of claim 53, wherein one the one or more controllers further includes one or more controller mappings, one or more controller inputs, one or more controller channels, or a combination thereof.

59. The method of claim 58, wherein the one or more controller mappings includes a string with a corresponding code syntax, and wherein the one or more controller inputs includes a list of increasing input weights, and wherein the one or more controller channels includes a list of controller channels.

60. The method of claim 59, wherein each controller channel in the list of controller channels includes an interpolation method, a component to animate, and a list of output value sets.61 . The method of any one of claims 51-60, wherein transmitting the request for the portion of the avatar three-dimensional (3D) representation further includes one of: submitting the request to an application programming interface, submitting the request to a web service, or submitting the request to a function.

62. The method of any one of claims 51-61 , wherein receiving the access to the portion of the avatar 3D representation further includes one of: receiving access to one or more accessors associated with the portion of the avatar 3D representation, receiving access to one or more pointers associated with the portion of the avatar 3D representation, or receiving access to one or more references associated with the portion of the avatar 3D representation.2024P00800WQ63. The method of any one of claims 51-62, wherein the avatar three-dimensional (3D) representation is stored in a second representation format that is distinct from the representation format.

64. A device including an avatar decoder configured to perform a method according to any of one of claims51-63.

65. A non-transitory computer-readable medium comprising instructions that, when executed by an electronic processor, cause the electronic processor to perform a method according to any of one of claims 51- 63.

66. An apparatus comprising: a processor; and a memory storing instructions operative, when executed by the processor, to cause the apparatus to perform the method of any one of claims 51-63.