# Framework

> Learn about Pixyz's internal framework, including its C++ architecture, supported data types, modules, and entity-based system.

The internal structure of Pixyz is built to handle different types of product structures, geometry types and heavy algorithms thanks to a custom made and extensible architecture. Pixyz is entirely coded in C++. For high precision, Pixyz computes numbers in the double-precision floating-point format for most of its data structures.

The internal structure of Pixyz supports, among others, these data types:

* [BRep shapes](/asset-transformer-sdk/2026.4/api/python/scene_types.md#brepshape)
* [Meshes](/asset-transformer-sdk/2026.4/api/python/polygonal_types.md#meshdefinition)
* [Point Clouds](/asset-transformer-sdk/2026.4/api/python/polygonal_types.md#vertex)
* [PMI](/asset-transformer-sdk/2026.4/api/python/scene_types.md#pmicomponent)
* [Variants](/asset-transformer-sdk/2026.4/api/python/scene_types.md#variantdefinition)
* [Materials](/asset-transformer-sdk/2026.4/api/python/material_types.md#materialdefinition)
* [Images](/asset-transformer-sdk/2026.4/api/python/material_types.md#imagedefinition)
* ...

## Modules

Pixyz API is organized into functional libraries that are referred to as modules:

* [Algo](/asset-transformer-sdk/2026.4/api/python/algo_functions.md)
* [CAD](/asset-transformer-sdk/2026.4/api/python/cad_functions.md)
* [Core](/asset-transformer-sdk/2026.4/api/python/core_functions.md)
* [Geom](/asset-transformer-sdk/2026.4/api/python/geom_functions.md)
* [IO](/asset-transformer-sdk/2026.4/api/python/io_functions.md)
* [Material](/asset-transformer-sdk/2026.4/api/python/material_functions.md)
* [Polygonal](/asset-transformer-sdk/2026.4/api/python/polygonal_functions.md)
* [Scene](/asset-transformer-sdk/2026.4/api/python/scene_functions.md)
* [Unity](/asset-transformer-sdk/2026.4/api/python/unity_functions.md)
* [View](/asset-transformer-sdk/2026.4/api/python/view_functions.md)

## Entities

Pixyz API isn't strictly speaking object-oriented. Pixyz works with references to entities inside the framework. These references are IDs of `unsigned int` type. This processing simplifies the handling of objects that live within the framework, but requires to explicitly create or gather objects, and then to destroy them.

This diagram shows a simplified view of Pixyz's entity structure:

![diagram](/api/media?file=/asset-transformer-sdk/media/images/api-diagram.png)

Entities are abstract objects that are defined by an unsigned integer ID. All [occurrences](./../scene/occurrence), [materials](./../scene/material), and [components](./../scene/component) have an ID property. Each ID is unique. Most functions take an ID or a list of IDs as input. Some functions can take entities of all types as input. In other words, you can indiscriminately use these functions to access occurrences, materials, and parts. Examples are these functions:

* [core.getProperty](/asset-transformer-sdk/2026.4/api/python/core_functions.md#getproperty)
* [core.setProperty](/asset-transformer-sdk/2026.4/api/python/core_functions.md#setproperty)
* [core.listProperties](/asset-transformer-sdk/2026.4/api/python/core_functions.md#listproperties)
