# Changelog

> List updates, new features, bug fixes, and changes in the Asset Transformer SDK.

{/* From: https://keepachangelog.com/en/1.1.0/

  Guiding Principles
  * Changelogs are for humans, not machines.
  * There should be an entry for every single version.
  * The same types of changes should be grouped.
  * Versions and sections should be linkable.
  * The latest version comes first.
  * The release date of each version is displayed.

  Types of changes
  * "Added" for new features.
  * "Changed" for changes in existing functionality.
  * "Deprecated" for soon-to-be removed features.
  * "Removed" for now removed features.
  * "Fixed" for any bug fixes.
  * "Security" in case of vulnerabilities. */}

## \[2026.4.0] - 2026-05

### Fixed

* Fixed 2025.x pxz file import
* Fixed silent "No Material" result from Combine Materials in Textures when GPU baking failed; failures are now logged with the failing stage and resolution, and `bake*` calls raise an exception on invalid baking sessions instead of returning empty texture references
* Fixed Creo Family Table instance files (.xas, .xpr, .neu) rejected with "File extension not recognized"

### Added

* Updated CATIA V5 import support up to V5-6R2026
* Updated NX import support up to NX 2512
* Updated Solid Edge import support up to 2026
* Updated SolidWorks import support up to 2026
* Updated Revit import support up to 2026
* Updated ACIS import support up to 2025 (V35)
* Updated Parasolid import support up to 38.0
* DGN (MicroStation) reader is now officially supported

### Changed

* Default JT export version changed from 8.1 to 10.0

## \[2026.3.5] - 2026-04

### Fixed

* Fixed Revit importer crash on unsupported elements during extraction
* Fixed glTF importer assigning wrong textures to material properties

## \[2026.3.4] - 2026-03

### Fixed

* Fixed .step loop creation leaving co-edges unlinked
* Fixed .dwg import bloating scene with geometric text

## \[2026.3.3] - 2026-03

### Fixed

* Fixed macOS instabilities in Unity context
* Fixed invalid image loading

## \[2026.3.2] - 2026-02

### Added

* Revit import : Added view metadata and project base point

### Fixed

* UI : Fixed broken autocomplete in scripting window
* UI : Fixed crashes when selecting some SDK functions
* Fixed .stpz extension not regognized
* Fixed import of KHR\_materials\_specular extension in glTF

### Fixed

* Fixed material issue after undoing explode functions
* Fixed crash in STEP file import with LoadPMI enabled
* Fixed removeSymmetryMatrices, sometimes symmetry were not detected
* Fixed BakeAO trigger wierd Progress callback values when DestOcc and SourceOcc doesn't have the same size
* Fixed missing transforms in some JT file import
* Fixed some crashes in JT exporter
* Fixed a crash in STEP importer

### Added

* Added new export JT export version values
* Textures now supports texture samplers
* Support of PMI Product Views in JT import

## \[2026.2.2] - 2026-01

### Fixed

* Fixed material loss during JTOpen export/import
* Improved point evaluation on periodic NURBS (Tessellation fix)
* Fixed USD export crash with instances

## \[2026.2.1] - 2026-01

### Added

* Added part count in Pixyz UI statistics
* Improved Python API enumeration types
* Add depreacted information status in C# API

#### Functions

* [`material.getImageAverageColor`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimageaveragecolor) *Get the average color of an image, as well as the per component standard deviation (returned as a colorAlpha)*

### Fixed

* Fixed partial loading mode in some CAD file imports
* Fixed PLMXML import of referenced files
* Fixed AO baking get worse with dense meshes
* Fixed material loss during PDF import/export
* Fixed some SDK crashes during .pxz file import

#### Functions

* [`material.getMaterialMainColor`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getmaterialmaincolor) *Now returns the average color if the material has a texture*

## \[2026.1.1] - 2025-12

### Added

#### Types

* `material.ImageLayout`: *Describes the channel components of an image*
* `material.ImageComponentType`: *Describes the data type of an image component*
* `material.PixelInfo`: *Stores additional info about image pixels, like the pixel or component sizes, the component count, ...*
* `material.BlurFilter`: *Describes the type of filter to use for image blurring*
* `material.EdgeFilter`: *Describes how to manage pixels located out of an image*
* `algo.VertexWeightStrategy`: *Describes how to calculate vertex weights*

#### Functions

* [`material.getImagePixelInfo`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagepixelinfo) *Recovers pixel info from an image*
* [`material.getImagePixelInfoFromDefinition`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagepixelinfofromdefinition) *Same but from an image definition*
* [`material.getImagePixelInfoFromLayoutAndType`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagepixelinfofromlayoutandtype) *Same but from a couple of image layout and component type*
* [`material.getImageColorBilinear`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagecolorbilinear) *Same as getImagePixelColor, except that it takes real coordinates as input and returns a bi-linearly interpolated color*
* [`material.convertImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#convertimage) *Converts an image from one format to another*
* [`material.flipImageY`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#flipimagey) *Applies a vertical flip to an image*
* [`material.invertImageColor`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#invertimagecolor) *Inverts image pixel colors*
* [`material.blurImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#blurimage) *Applies a blurring to an image*
* [`material.getImageLayout`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagelayout) *Gets the pixel layout (component definitions) of an image*
* [`material.getImageComponentType`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagecomponenttype) *Gets the component type of an image*
* [`material.getImageComponentTypeName`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagecomponenttypename) *Gets a readable name from an image component type*
* [`material.fillImageWithColor`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#fillimagewithcolor) *Fills (a sub-part of) an image with a single color*
* [`material.getImageColorRange`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagecolorrange) *Gets the min and max bounds of each image color component*
* [`material.extractImageComponents`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#extractimagecomponents) *Creates new images from individual components of an image*
* [`material.extractImageChannels`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#extractimagechannels) *Creates new images from individual channels of an image*
* [`material.getSubImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getsubimage) *Extracts a sub-part of an image*
* [`material.setSubImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#setsubimage) *Replaces a sub-part of an image by another one*
* [`material.setImageRoI`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#setimageroi) *Defines the region of interest of an image*
* [`material.getImageRoI`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimageroi) *Gets the region of interest of an image*
* [`material.clearImageRoI`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#clearimageroi) *Removes the region of interest from an image*
* [`material.transformImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#transformimage) *Applies a transformation matrix to (the sub-part of) an image*
* [`material.translateImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#translateimage) *Applies a translation to (the sub-part of) an image*
* [`material.rotateImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#rotateimage) *Applies a rotation to (the sub-part of) an image*
* [`material.stretchImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#stretchimage) *Applies a non-uniform scale to (the sub-part of) an image*
* [`material.createCheckerboardImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#createcheckerboardimage) *Creates a new image representing a checkerboard using two specified colors*
* [`material.overrideImageFormat`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#overrideimageformat) *Changes the way image channels are interpreted by assigning a new format without modifying the data*
* `algo.deleteAttribute` replaces the misspelt function `algo.deleteAttibute`

### Changed

* `material.ImageDefinition`: *Component size and count have been replaced by the pixel layout and type*
* [`material.importImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#importimage) *Now able to manage new pixel data types, like uint16 or uint32 from TIFF, or half-float from EXR, for instance*
* [`material.exportImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#exportimage) *Now applies an implicit conversion when trying to export to a format that doesn't support the current image data type*
* [`scene.deleteEmptyOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#deleteemptyoccurrences): *Now consider an occurrence with a Camera attached as not empty*
* PLY importer is now able to import point clouds
* [`algo.createVertexWeightsFromVertexColors`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#createvertexweightsfromvertexcolors): *Now accepts an additional optional parameter: strategy. If set to RedBlueDiff, vertex weights will be calculated based on the difference between the vertex's r and b color values. If set to Grayscale, vertex weights will be calculated based on their r color value. If set to InvertedGrayscale, vertex weights will be calculated based on the (1-r) color value.*
* PLY importer is now able to import point clouds.
* JT default importer now able to import ProductViews

### Removed

* `algo.deleteAttibute` was replaced by the correctly spelt function `algo.deleteAttribute`

### Fixed

* Fixed missing children in some USD files
* New primary JT interface solving a huge number of import and performance problems
* Fixed subpart materials handling in explode functions
* Fixed occurrence/subpart materials lost on PDF export and re-import

## \[2025.7.3] - 2025-12

### Fixed

* Badly imported surfaces in Alias files

## \[2025.7.2] - 2025-11

### Fixed

* Badly imported obj file
* Duplicated material at FBX export

## \[2025.7.1] - 2025-11

### Added

* [`scene.getPartOccurrencesGroupedBySimilarity`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getpartoccurrencesgroupedbysimilarity) *Group all part occurrences following similarity criteria controlled by the function's parameters.*

### Changed

* [`scene.separateSelection`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#separateselection): *Now takes an additional optional parameter: createSingleOccurrence, true by default. When true, it creates a new occurrences with an identity transform, placed under root, and containing every polygons selected. When false, it will create an occurrence per part containing a selection, positioned at the same place in the tree. Consequently, the function now returns a list of occurrences instead of a single occurrence.*

### Fixed

* Missing animation in USD import
* Crash with setMeshVertexColors
* Execution stopped when baking with Lines/FreeVertices
* CATDrawing format typo in format list

## \[2025.6.1] - 2025-11

### Added

* [`scene.getFinalPrototype`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getfinalprototype) *Returns the final prototype of an occurrence*

### Deprecated

* [`scene.findDuplicatedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findduplicatedpartoccurrences) will be removed in the next major release. Workaround is to use [`scene.getPartOccurrencesGroupedBySimilarity`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getpartoccurrencesgroupedbysimilarity) and remove each first element of a set of duplicates containing at least two occurrences.

### Fixed

* Crash in [`scene.removeSymmetryMatrices`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#removesymmetrymatrices) on Autodesk alias files
* Material assignation on lines
* Inconsistent imports of the same Revit file
* Subpart material removal in the function [`scene.removeMaterials`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#removematerials)

## \[2025.5.4] - 2025-11

### Fixed

* Vulkan incompatibility on MacOs
* Unity Licensing with channel names containing utf16 characters

## \[2025.5.3] - 2025-11

### Added

* IO module property "printMissingFiles" to print missing files during import

### Fixed

* Render capture on Linux
* Crash with glTF import
* Improve material compatibility in glTF import

## \[2025.5.2] - 2025-10

### Fixed

* Fixed DGN import of transparent colors
* Fixed "invalid face" error during some Revit imports

## \[2025.5.1] - 2025-10

### Added

* [`algo.explodeByTopoDimension`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#explodebytopodimension) *Separate polygons, lines and points into different occurrences*
* [`scene.createSelectionSnapshot`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#createselectionsnapshot) *Create a snapshot of the current selection to use it later. Most selection related functions now take an added optional selectionId as input allowing to handle a selection and change it without disturbing the displayed selection (the current selection)*
* [`scene.deleteSelectionSnapshot`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#deleteselectionsnapshot) *Delete a selection snapshot using its ID*

### Removed

* `scene.explodeSelection`: this function was not implemented so it was useless and is being removed

### Fixed

* Supported format extensions (CREO)
* Instabilities with undo/redo and unregistered entities
* GLB issues with invalid/missing textures
* Broken normals/tangents after `scene.applyTransform()`

## \[2025.4.3] - 2025-10

### Changed

* [`material.convertFloat32To8BitsImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#convertfloat32to8bitsimage): *Now allows to perform in-place conversions instead of creating new images*

### Fixed

* Bad categorization of closed surfaces
* Issue with multiple level of prototypes in [`algo.convertSimilarPartOccurrencesToInstances`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertsimilarpartoccurrencestoinstances)
* Linux corrupted files import
* Offset 2d curves in Facebuilder when a closedSurface doesn't need to be split
* Avoid importing curves in Alias that are just a point
* USD Export (Occurrence Transform & Material Preservation, and Progress Bar)
* USD Importer Visibility Handling and Variant Loading Behavior

## \[2025.4.2] - 2025-10

### Added

* [`scene.getPreviousSibling`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getprevioussibling) *Get the previous occurrence in parent's children*

### Fixed

* Missing occurrence material export logic. Only sub-part mesh materials were processed.
* Switch back defaut JT export version value to 10.0 following hoop's memory fix
* pixyzui crash related to gizmo and occurrence deletion
* pixyzui redefine layout
* pixyzui UserProperties issue with listProprerties
* Feature DXF importer
* tesselation rotation axis
* Don't consider ODA surfaces a solid
* Image convertion from hdr to png
* Feature component not properly exported to gltf
* .dwg missing occurence

## \[2025.4.2] - 2025-09

### Added

* [`algo.deletePolygonalWeightAttribute`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#deletepolygonalweightattribute) *Delete polygonal weight attributes created from [algo.transferVisibilityToPolygonalWeight](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#transfervisibilitytopolygonalweight)*

### Fixed

* Default color for opacity map baking (transparent)
* JT export orientation issue
* Sale problem in DWG import

## \[2025.4.1] - 2025-08

### Added

* [`algo.filterMeshVertexColors`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#filtermeshvertexcolors) *Smooth vertex colors on some meshes while preserving features*
* [`scene.isIsolated`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#isisolated) *Get if the scene is in isolated state*
* [`scene.getIsolatedOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getisolatedoccurrences) *Get currently isolated occurrences*
* `scene.IsolateBegan` *Triggered when isolate mode starts*
* `scene.IsolateEnded` *Triggered when isolate mode ends*
* `CurveMaxSplit` *Maximum number of iteration in the algorithm discretizing a curve. Stop the algorithm and throw an error when the threshold is reached*
* `SurfaceMaxSplit` *Maximum number of iteration in the algorithm discretizing a surface. Stop the algorithm and throw an error when the threshold is reached*
* `AliasImportSymmetries` *Import symmetries in Alias file format*

### Changed

* [`material.filterAO`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#filterao): *Now accepts interleaved arrays of ambient occlusion and bent normals maps*

### Fixed

* Retessellation of parts after singularization
* Missing material at import in STEP format
* USD visibility interpretation mismatch
* Shininess of Standard materials incorrectly rendered in the viewer
* Crash when using setPartMesh or setPartModel functions twice
* Numerical precision issue in GPU Baking
* Performances problem in algo.tessellatePointClouds() function
* Baking API bug when baking feature component
* Random crashes in algo.repairCAD() function
* Crash in scene.mergePartOccurrencesByRegions()
* Major Pixyz UI instability caused by the UV Viewer
* Pixyz UI crash on exit when using customized UI
* Improved STEP materials import
* Improved export of submesh in glTF and 3dxml formats
* Crash while importing USD files with malformed UVs
* Undo/redo with deleted BRep materials

## \[2025.3.0] - 2025-07

Most of the following changes are related to an update of the baking API.
See [this script](./sdktips/old-to-new-baking-api) for an example of conversion from the old API to the new one.

### Added

* Added viewer informations at creation
* Added, for Wire format, selection sets as comma separated list in metadata field `InSets`

#### Functions

* [`algo.beginBakingSession`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#beginbakingsession) *Starts a new baking session*
* [`algo.beginVertexBakingSession`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#beginvertexbakingsession) *Starts a new baking session intended to bake data at mesh vertices instead of to a texture map*
* [`algo.endBakingSession`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#endbakingsession) *Ends and destroys an existing baking session*
* [`algo.fetchBakedMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#fetchbakedmap) *Returns information about one texel of a baked map*
* [`algo.fetchBakedVertex`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#fetchbakedvertex) *Returns information about one baked vertex*
* [`algo.setBakingSessionPadding`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#setbakingsessionpadding) *Sets the width of the dilation applied to baked maps*
* [`algo.bakeAOMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeaomap) *Ray tracing based ambient occlusion computation*
* [`algo.bakeDepthMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakedepthmap) *Depth map baking*
* [`algo.bakeDiffuseMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakediffusemap) *Diffuse map baking*
* [`algo.bakeDisplacementMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakedisplacementmap) *Displacement map baking*
* [`algo.bakeEmissiveMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeemissivemap) *Emissive map baking*
* [`algo.bakeFeatureMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakefeaturemap) *Index map baking for features component*
* [`algo.bakeMaterialAOMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakematerialaomap) *AO baking from the source material*
* [`algo.bakeMaterialIdMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakematerialidmap) *Color map baking based on source material IDs*
* [`algo.bakeMaterialPropertyMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakematerialpropertymap) *Baking of custom material properties*
* [`algo.bakeMetallicMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakemetallicmap) *Metallic map baking*
* [`algo.bakeNormalMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakenormalmap) *Normal map baking*
* [`algo.bakeOccurrencePropertyMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeoccurrencepropertymap) *Occurrence property map baking*
* [`algo.bakeOpacityMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeopacitymap) *Opacity map baking*
* [`algo.bakePartIdMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakepartidmap) *Color map baking based on the source part IDs*
* [`algo.bakePositionMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakepositionmap) *Position map baking*
* [`algo.bakeRoughnessMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeroughnessmap) *Roughness map baking*
* [`algo.bakeSpecularMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakespecularmap) *Specular map baking*
* [`algo.bakeUVMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakeuvmap) *Baking of source UV coordinates*
* [`algo.bakeValidityMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakevaliditymap) *Baking of a map distinguishing baked pixels from non baked ones*
* [`algo.bakeVertexColorMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#bakevertexcolormap) *Vertex color map baking*
* [algo.getMeshVertexColors](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#getmeshvertexcolors) *Recovers the vertex colors from a set of meshes as arrays*
* [algo.setMeshVertexColors](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#setmeshvertexcolors) *Specifies the vertex colors for a set of meshes*
* [`scene.getClusters`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getclusters): *Get groups of occurrences based on spatial proximity*

#### Types

* `algo.BakingSession`
* `algo.BakedValue`
* `algo.Space`

#### IO Properties

* `CreoViewModelGeometrySolids` *Toggle import of solid geometry*
* `CreoViewModelGeometrySurfaces` *Toggle import of surfaces geometry*
* `CreoViewModelGeometryCosmetics` *Toggle import of cosmetics geometry*
* `CreoViewModelConstructionGeometrySurfaces` *Toggle import of cad construction surfaces*
* `CreoViewModelConstructionGeometryCosmetics` *Toggle import of cad construction cosmetics*
* `CreoViewModelConstructionGeometryDatum` *Toggle import of cad datum planes, curves, axes, points*
* `CreoViewModelConstructionGeometryCoordinateSystems` *Toggle import of cad datum coordinate systems*
* `CreoViewLayer/importLayerMode` *Select how layers will be imported ( default , layers as occurrences or layers as variants )*

### Changed

* [`algo.convertNormalMap`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertnormalmap): *Now allows to convert from / to world space too*
* [`material.filterAO`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#filterao): *Now accepts image lists as input. Moreover, default values for all `sigma` parameters have been updated*
* [`material.fillUnusedPixels`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#fillunusedpixels): *Now accepts three more parameters: `size` to limit the dilation to a finite band around the valid texels, `validityMask` as an alternative to `unusedColor` to define valid texels, and `inPlace` to avoid image duplication. Moreover, running speed has been greatly improved*
* [`algo.convertSimilarPartOccurrencesToInstancesFast`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertsimilarpartoccurrencestoinstancesfast): *createNewOccurrencesForPrototypes parameter has been removed, it will always create a new occurrence for the prototype. keepExistingPrototypes has been removed to, we always keep the existing prototypes.*
* [`algo.convertSimilarOccurrences`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertsimilarpartoccurrencestoinstancesfast): *keepExistingPrototypes has been removed to, we always keep the existing prototypes.*

### Fixed

* Fixed error importing components with flexibility from Creo Parametric
* Fixed metadata preservation executing convertSmilarOccurrencesToInstances functions
* Fixed undo/redo of instance singularization
* Fixed *LoadVariant* IO property not working for GLTF files
* Fixed isolation behavior
* Fixed metadata export in JT format
* Fixed DWG import with cjk characters
* Fixed crash in `mergePartOccurrences` with visibility information
* Fixed remove occluded geometries
* Fixed Revit Over-importing "Mass Floor" geometry
* Fixed Step loading style
* Fixed and Updated *JtExportVersion* IO parameter to reflect actual supported export versions
* Fixed infinite loop in Revit
* Fixed crash in STEP importer

### Removed

#### Algo Properties

* `UseGPUBaking`

#### Types

* `algo.BakingMethod`
* `algo.MapType`
* `algo.MapTypeList`
* `algo.BakeMap`
* `algo.BakeMapList`
* `algo.CustomBakeMap`
* `algo.CustomBakeMapList`

#### Functions

* `algo.bakeMaps`

## \[2025.2.0] - 2025-05

### Added

* Added import of instances and Metadata in NWD file format
* Added an evend raised when an entity is detroyed

#### Events

* `core.addEntityDetroyedCallback`: *Add callback for new entity destroyed callback*
* `core.removeEntityDetroyedCallback`: *Add callback for new entity destroyed callback*

### Fixed

* Fixed redo after unsetting some properties
* Fixed CGR missing texture
* Fixed missing referenced files in FBX files (textures)
* Fixed badly imported Cones in some CAD file formats
* Fixed Pixyz UI scaling with multiple monitors
* Fixed Pixyz UI default values with function using structured parameters
* Fixed random behavior occurring during algo.meshComparison
* Fixed crash when exporting a mesh with no normal
* Fixed missing Geometries and Materials during USD export
* Fixed crash when Importing USD with instances containing variants
* Fixed conversion of PMI to occurrence duplicated material
* Fixed crash in function createVertexWeightsFromVisibilityAttributes
* Fixed wrong animation export in glTF export

### Renamed

| Previous                         | New                                                                                                |
| -------------------------------- | -------------------------------------------------------------------------------------------------- |
| `scene.getComponentByOccurrence` | [`scene.getComponents`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getcomponents) |

## \[2025.1.2] - 2025-05

### Added

* Updated Hoops to 2025.3
* Hoops export optimization

### Fixed

* Fixed CATProduct import not loading referenced files
* Fixed race condition in 3dxml (cgr) when LoadConstructionTree is false
* Fixed race condition in ImageRef
* Fixed NWD coordinate system flip when world-up vector is missing
* Fixed DGN import throwing on infinite values
* Fixed DGN import NURBS weight initialization
* Fixed GPU baking on macOS making all maps transparent when baking opacity
* Fixed crash when baking diffuse from UV0 to UV1
* Fixed memory leak on edges and curves
* Fixed mesh inconsistencies during edge collapse triggering "Should not happen" in decimateTarget

## \[2025.1.1] - 2025-04

### Added

* Added support for subpart materials export in glTF, USD, FBX and JT
* OSX Packages

#### Functions

* [`algo.hasOverlappingUV`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#hasoverlappinguv) *New function*
* [`core.getRemainingSecondsBeforeLicenseTimeout`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#getremainingsecondsbeforelicensetimeout): *After the connection to a floating license server is lost, get the seconds remanining until the program quits*
* [`polygonal.hasUVs`](/asset-transformer-sdk/2026.4/api/python/polygonal_functions.md#hasuvs): *Function to check if a given mesh has some valid UV channels*
* [`core.hasConsoleVerbose`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#hasconsoleverbose): *Function to check whether a given Verbose level is present in the console's current mask*
* [`cad.areCurvesEquals`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#arecurvesequals): *New function that check if two curves are equal by comparing each attributes, one by one*
* [`cad.getUnitLength`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getunitlength): *Shortcut to the module property UnitLength of PiXYZCAD (avoid casting the float value to string)*

#### Events

* `core.LicenseClientDisconnected`: *Callback for when the connection to the license server is lost for a floating license*
* `core.LicenseClientReconnected`: *Callback for when the connection to the license server is restored for a floating license*

#### Viewer properties

* `UseSSGI` *Enables or disables the Screen-Space Global Illumination for improved rendering. Its activation will impact performance. Default is false*
* `SSGIQuality` *When UseSSGI is used, choose a quality preset for Screen-Space Global Illumination. Possibilities are: `VeryHigh`, `High`, `Medium` and `Low`. Default is `Low` to not impact performance too much, but `Medium` should be prefered for quality*
* `SSGIThickness` *Floating number for virtual thickness to consider behind object: meaning thickness of the light barrier behind objects. Default value is 4000.0*
* `SSGICoeff` *Floating number to multiply the indirect lighting computed before adding it to the composited image. Default value is 0.5. Increasing/decreasing it will respectively amplify/reduce the effect*
* `SSGIFilteringPasses` *Number of filtering passes to perform on the indirect lighting map. Default is 2. Increasing it will smooth the indirect lighting, whereas decreasing it (minimum 0) will likely make noise more visible*
* `RenderIndirectLighting` *Render the texture for the indirect lighting computed by the SSGI. Default value is false*

### Changed

* [`algo.mergeUVIslandsAffine`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#mergeuvislandsaffine): *Now has one new parameter `rotationStep` that only allows UV to rotate by multiples of this angle in degrees. -1 is used when no restriction is in place, and 0 or a value superior or equal to 360 for no rotation*
* [`scene.getBRepInfos`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getbrepinfos) *Now return the number of nan-manifold edges in the scene tree*
* [`scene.hide`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#hide) *Now accept a list of occurrences instead of a single occurrence*
* [`view.createGPUScene`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#creategpuscene): *Added the parameters `useIsolate`to indicate if the scene visibility should be impacted by the isolate function*

#### Viewer properties

| Previous   | New            |
| ---------- | -------------- |
| `BlurSSAO` | `SSAOBlur`     |
| `BlurSize` | `SSAOBlurSize` |

### Fixed

* Fixed a crash in  `repackUV`
* Fixed material assignment lost with the `cleanInstances` function
* Fixed missing open shells at Rhino import
* Fixed `mergePartOccurrencesByMaterials` ignoring subpart materials
* Fixed `computeAABB` to include lines
* Revit: fixed misoriented faces at import
* Fixed Utf-8 material name encoding issue
* GLTF: Fixed PBR channels exception
* GLTF: Fixed variants not imported
* DGN: Fixed missong colors in some files
* USD: Fixes incorrect occurrences naming at export
* PARASOLID: Fixed surfaces created twice and overlapping leading to visual artifacts
* Fixed viewer's auto-clipping planes issue with 2D objects
* Fixed a crash when calling undo on empty stack
* Fixed offset parts with `convertSimilarPartOccurrencesToInstancesFast`
* Fixed `explodeByMaterials` unsetting subpart materials
* Improved VRAM consumption for GPU baking with opacity threshold
* Fixed `repairCAD` modifying with faces orientation with `orient` parameter disabled
* Fixed crash with `bakeMaps` when executed on parts without meshes
* Fixed `convertVisibility`not working in `convertPMIToOccurrences`
* Fixed baking failing when a material uses a UV channel that doesn't exist in the mesh

## \[2024.3.0] - 11-26-2024

### Added

* Install Python SDK through pip install

## \[2024.2.2]

### Changed

* [`scene.hide`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#hide) *Now accept a list of occurrences instead of a single occurrence*
* [`scene.show`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#show) *Now accept a list of occurrences instead of a single occurrence*
* [`scene.inverseVisibility`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#inversevisibility) *Now accept a list of occurrences instead of a single occurrence*
* [`scene.showOnly`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#showonly) *Now accept a list of occurrences instead of a single occurrence*

## \[2024.2.1] - 09-13-2024

### Added

* [`core.getLicenseError`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#getlicenseerror): *Give the reason of license check failure*

### Removed

* `core.pushAnalytic`
* `core.isInteractiveMode`
* `core.setInteractiveMode`
* `core.message`
* `core.askYesNo`
* `core.choose`
* `core.askString`

## \[2024.2.0] - 07-24-2024

### Added

* 2024.2 comes with an API revamp for a more consitent development experience.

* New [viewer](./viewer) API to render scenes, generating screenshots or create interactive viewers.

* The following list of formats and versions is now officially supported:

| Format              | Version                     |
| ------------------- | --------------------------- |
| ACIS                | 2024                        |
| Autodesk Revit      | 2024                        |
| Autodesk Navisworks | 2025                        |
| CATIA               | V5\_6R2024                  |
| Creo                | 11.0                        |
| DGN                 | 7                           |
| Inventor            | 2025                        |
| NX-Unigraphics      | NX 2312 (2023 Dec. version) |
| Parasolid           | 36.0                        |
| Rhino               | 8                           |
| Solid Edge          | 2024                        |
| SolidWorks          | 2024                        |

#### Functions

* [`algo.crackMeshEdges`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#crackmeshedges): *Crack polygonal edges according to given criteria*
* [`algo.dualContouring`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#dualcontouring): *Replace the tessellations of the selected parts by a retopology based on a dual-contouring*
* [`algo.filletMesh`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#filletmesh): *Fillet a mesh according to its Lines of Interest*
* [`algo.getAllAxisFromCADModel`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#getallaxisfromcadmodel): *Return all the main axis contained in the CAD models given*
* [`algo.getUVQualityMetrics`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#getuvqualitymetrics): *Compute UV mapping qualitative metrics.*
* [`algo.getVisualComparisonFootprint`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#getvisualcomparisonfootprint): *Compute the visual footprint of the difference between two sets of occurrences*
* [`algo.identifySharpEdges`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#identifysharpedges): *Mark as Lines Of Interest the sharp edges*
* [`algo.mergeUVIslandsRelaxed`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#mergeuvislandsrelaxed): *Minimizes the number of seams in the UV mapping by merging UV islands*
* [`algo.meshBooleanOperation`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#meshbooleanoperation): *Computes the boolean operation between the meshes of two occurrence lists*
* [`algo.segmentMesh`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#segmentmesh): *Segment Mesh into clusters guided by edge sharpnesses*
* [`cad.addBodyToModel`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#addbodytomodel): *Add a body to the model*
* [`cad.addEdgeToModel`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#addedgetomodel): *Add an edge to the model*
* [`cad.addOpenShellToModel`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#addopenshelltomodel): *Add an open shell to the model*
* [`cad.addPrecisionArea`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#addprecisionarea): *Define a working area on the 2D projection of the surface to define a parametric precision*
* [`cad.addVertexToModel`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#addvertextomodel): *Add a vertex to the model*
* [`cad.createBoundedLinearExtrusion`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createboundedlinearextrusion): *Create a linear extrusion body*
* [`cad.createCurveExtrusion`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createcurveextrusion): *Create a curve extrusion body*
* [`cad.createLinearExtrusion`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createlinearextrusion): *Create a linear extrusion body*
* [`cad.createLoopFromCurve`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createloopfromcurve): *Create a loop from a finite curve*
* [`cad.createMultiExtrusion`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createmultiextrusion): *Create a linear extrusion body*
* [`cad.createRevolveExtrusion`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createrevolveextrusion): *Create a revolved extrusion body*
* [`cad.endThreadBrepSession`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#endthreadbrepsession): *Ends BrepSession on current thread*
* [`cad.getClosedShellOrientedFaces`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getclosedshellorientedfaces): *Get all orienteFaces contain in the closedShell*
* [`cad.getCurveLength`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getcurvelength): *Returns the length of the curve*
* [`cad.getEdgeLength`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getedgelength): *Returns the length of the edge*
* [`cad.getEdgeMaterial`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getedgematerial): *Get the material of the edge, if any*
* [`cad.getModelOpenShells`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getmodelopenshells): *Get the list of open shells contained in a model*
* [`cad.getModelPrecision`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getmodelprecision): *Get the precision used in a model*
* [`cad.getOpenShellOrientedFaces`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getopenshellorientedfaces): *Get all orienteFaces contain in the openShell*
* [`cad.getParametricPrecisionOnSurface`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getparametricprecisiononsurface): *Returns the parametric precision of a surface from the input precision*
* [`cad.getPrecision`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#getprecision): *Get the CAD precision*
* [`cad.invertCoEdge`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#invertcoedge): *Invert a coedge*
* [`cad.invertFaces`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#invertfaces): *Invert faces*
* [`cad.invertLoop`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#invertloop): *Invert a loop*
* [`cad.isCurveFinite`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#iscurvefinite): *If the curve is finite return true, return false otherwise*
* [`cad.isSurfaceFinite`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#issurfacefinite): *Return if the surface is finite*
* [`cad.needPrecisionArea`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#needprecisionarea): *Tells if it needs a working area on the surface*
* [`cad.needTorusShapeCheck`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#needtorusshapecheck): *Returns true if the torus has a shape (lemon or apple) corresponding to the provided points*
* [`cad.setCoEdgeCurve2D`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#setcoedgecurve2d): *Set the curve 2D value of a coEdge*
* [`cad.setCoEdgeSurface`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#setcoedgesurface): *Set the surface value of a coEdge*
* [`cad.setCurveLimits`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#setcurvelimits): *set the parametric space limits of a curve*
* [`cad.setEdgeMaterial`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#setedgematerial): *Define an edge's material*
* [`cad.setUnitLength`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#setunitlength): *Set the CAD unity length property*
* [`cad.startThreadBrepSession`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#startthreadbrepsession): *Create a new BrepSession on current thread*
* [`core.getLogFile`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#getlogfile): *Get the path of the log file*
* [`core.hasCustomProperty`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#hascustomproperty): *Return true if the custom property was found on the occurrence*
* [`core.lockEntityRegistration`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#lockentityregistration): *Lock Entity registration, use with Caution. All entities created after this call will not be saved on .pxz file and will not be listed as existing entities on the Database. Be careful to not references these entities with other registered entities*
* [`core.log`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#log): *Log a message to Pixyz output*
* [`core.parallelAddJob`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#paralleladdjob): *Add a job to a parallel session*
* [`core.parallelFinish`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#parallelfinish): *Ends a parallel session after waiting for all jobs to finish*
* [`core.parallelStart`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#parallelstart): *Starts a new parallel session*
* [`core.removeModule`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#removemodule): *Remove a module added via getModuleDescFromXML*
* [`core.unlockEntityRegistration`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#unlockentityregistration): *Unlock Entity registration*
* [`geom.fromAffine`](/asset-transformer-sdk/2026.4/api/python/geom_functions.md#fromaffine): *Create a Matrix from an Affine*
* [`geom.getMaxScale`](/asset-transformer-sdk/2026.4/api/python/geom_functions.md#getmaxscale): *Get maximum matrix scale*
* [`io.addAssetPaths`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#addassetpaths): *add directory paths to search assets in*
* [`io.applyAutoTessellate`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#applyautotessellate): *Handle auto tessellate options on given part, need to be complete*
* [`io.clearAssetPaths`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#clearassetpaths): *clear all asset paths*
* [`io.findInDirectories`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#findindirectories): *find the final path. This will search for the file in asset paths*
* [`io.getAssetPaths`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#getassetpaths): *get user defined paths to find assets*
* [`io.getExtensionPriority`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#getextensionpriority): *get the priority of an extension from the pixyz importer*
* [`io.importRemote3mxFile`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#importremote3mxfile): *Import a remote 3mx file*
* [`io.listVariants`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#listvariants): *List all variants if file*
* [`io.registerIOCallbacks`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#registeriocallbacks): *Register import and export callbacks*
* [`io.setAssetPaths`](/asset-transformer-sdk/2026.4/api/python/io_functions.md#setassetpaths): *replace paths to find assets*
* [`material.convertFloat32To8BitsImage`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#convertfloat32to8bitsimage): *Returns a new image from the given converter from 32bits float to a 8Bits (e.g. depth render map)*
* [`material.createImageFromData`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#createimagefromdata): *Import an Image from only its data*
* [`material.fillUnusedPixels`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#fillunusedpixels): *Fill unused pixels by propagating and averaging used pixels*
* [`material.filterAO`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#filterao): *Filter an AO map using ATrous method*
* [`material.getImagePixelColor`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagepixelcolor): *Returns the color of a given pixel in an image*
* [`material.getImagesSizes`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getimagessizes):  *Returns the sizes of multiple images*
* [`material.getMaterialPattern`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getmaterialpattern): *Gets the MaterialPattern name of the material*
* [`material.getPointsAndMaterialFromText`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#getpointsandmaterialfromtext): *Returns list of 3D Points and a material from a string and fontname*
* [`material.setCoeffOrTextureProperty`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#setcoeffortextureproperty): *Set a CoeffOrTexture property*
* [`material.setColorAlphaProperty`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#setcoloralphaproperty): *Set a ColorAlpha property*
* [`material.setColorOrTextureProperty`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#setcolorortextureproperty): *Set a ColorOrTexture property*
* [`polygonal.createMeshFromDefinitions`](/asset-transformer-sdk/2026.4/api/python/polygonal_functions.md#createmeshfromdefinitions): *Create a new mesh from multiple MeshDefinition*
* [`polygonal.createMeshFromText`](/asset-transformer-sdk/2026.4/api/python/polygonal_functions.md#createmeshfromtext): *Creates an occurrence from string*
* [`polygonal.usePointGapFillerNormal`](/asset-transformer-sdk/2026.4/api/python/polygonal_functions.md#usepointgapfillernormal): *This triangulates a set of points and normals*
* [`scene.addAnnotationGroup`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#addannotationgroup): *Add a Annotation Group to the pmi component*
* [`scene.addInParentInstances`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#addinparentinstances): *Add an instance of prototype's child as child in current occurrence recursively*
* [`scene.addMeshToAnnotation`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#addmeshtoannotation): *Add a mesh and its material to a annotation*
* [`scene.createAnnotationFromDefinition`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#createannotationfromdefinition): *Create Annotation from definition*
* [`scene.createCapsule`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#createcapsule): *Create a new capsule*
* [`scene.createOccurrenceFromAnnotation`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#createoccurrencefromannotation): *Convert a single annotation on an occurrence into an occurrence with mesh geometry*
* [`scene.endModifyAllVariants`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#endmodifyallvariants): *Call this function to disable the modifications of all variants at the same time*
* [`scene.getBrepShape`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getbrepshape): *Returns the Brep shape of a part*
* [`scene.getHiddenPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#gethiddenpartoccurrences): *Get hidden part occurrences*
* [`scene.getPartialLoadingStatus`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getpartialloadingstatus): *Get the current status of a partial loading component*
* [`scene.getTessellationParameters`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#gettessellationparameters): *Get tessellation parameters*
* [`scene.getVolume`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getvolume): *Return the volume of the occurrence*
* [`scene.getVolumes`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getvolumes): *Return the volume of a set of root occurrences*
* [`scene.invertSelect`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#invertselect): *Invert occurrences to selection*
* [`scene.setAnnotationToGroup`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#setannotationtogroup): *set Annotation to a Annotation Group*
* [`scene.setReferencedDataComponentParent`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#setreferenceddatacomponentparent): *Defines which referenced data is parent to the given component*
* [`scene.setReferencedDataComponentPath`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#setreferenceddatacomponentpath): *Defines which path the referenced data is at*
* [`scene.startModifyAllVariants`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#startmodifyallvariants): *Call this function to to enable the modifications of all variants at the same time*
* [`scene.updateChildrenPrototypes`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#updatechildrenprototypes): *Update children prototypes of the given occurrence*
* [`view.drawCappingPlane`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#drawcappingplane): *Create an occurrence that holds the mesh of the surfaces that have been cut by the cutting plane*
* [`view.getCameraFrontAxis`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getcamerafrontaxis): *Get the front axis of the nth view matrix of a given viewer*
* [`view.getCameraPosition`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getcameraposition): *Get the position of the nth view matrix of a given viewer*
* [`view.getCameraRightAxis`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getcamerarightaxis): *Get the right axis of the nth view matrix of a given viewer*
* [`view.getCameraUpAxis`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#getcameraupaxis): *Get the up axis of the nth view matrix of a given viewer*
* [`view.selectPrimitives`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#selectprimitives): *Select the primitives (polygons, surfaces) contained in the given rectangle*
* [`view.setDefaultViewerId`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#setdefaultviewerid): *Set default viewer id. This viewer will be used in other functions taking a Viewer as a parameter. Useful if a viewer needs to be shared across different contexts.*
* [`view.startRecording`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#startrecording): *Record viewer in a file*
* [`view.stopRecording`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#stoprecording): *Stop recording video*

### Removed

#### Functions

* `algo.combineMeshes`: *Use [`algo.combineMaterials`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#combinematerials) and [`scene.mergePartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrences)to achieve the same result*
* `algo.deletePolygonalWeightAttribute`
* `algo.destroyElements`
* `algo.flattenUV`
* `algo.getEdgePolygons`
* `algo.getEdgeVertices`
* `algo.getEdges`
* `algo.getFreeEdges`
* `algo.getFreeVertices`
* `algo.getNormal`
* `algo.getPatches`
* `algo.getPolygonEdges`
* `algo.getPolygonVertices`
* `algo.getPolygons`
* `algo.getTessellationBoundaries`
* `algo.getTextureCoordinates`
* `algo.getVertexCoordinates`
* `algo.getVertexEdges`
* `algo.getVertexPolygons`
* `algo.getVertices`
* `algo.getVisiblePolygons`
* `algo.invertElements`
* `algo.relaxUV`
* `algo.retessellate`: *Use [`algo.tessellate`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#tessellate) instead*
* `algo.smoothUV`
* `algo.stitchUV`
* `algo.toEditableMesh`
* `algo.toStaticMesh`
* `algo.combineMeshesByMaterials`: *Use [`scene.mergePartOccurrencesByMaterials`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbymaterials) instead with the additional 'combineMeshes' parameter*
* `cad.addToModel`
* `cad.createBoundedCurve`
* `cad.getBoundedCurveDefinition`
* `cad.getClosedShellOrientedDomains`
* `cad.getModelDomains`
* `cad.getOpenShellOrientedDomains`
* `cad.setPrecision`
* `core.addPreset`
* `core.executeCommand`
* `core.exportFunctionDialogScreen`
* `core.exportPresets`
* `core.generateHTMLDocumentation`
* `core.getEntityTypeFromString`
* `core.importPresets`
* `core.isFloatingLicense`
* `core.removeAllPresets`
* `core.removePreset`
* `core.savePreset`
* `core.updateDocumentation`
* `core.askYesNo`
* `core.choose`
* `core.askString`
* `core.updateDocumentation`
* `core.message`
* `io.exportSceneToDTPlatform`
* `io.exportSceneToReflect`
* `io.importSceneFromDTPlatform`
* `scene.selectPartsFromNoShow`

#### Types

* `algo.EdgeListList`
* `algo.EdgeList`
* `algo.ElementList`
* `algo.PatchList`
* `algo.Patch`
* `algo.PolygonListList`
* `algo.PolygonList`
* `algo.UVCoordList`
* `algo.UVCoord`
* `algo.VertexListList`
* `algo.VertexList`
* `core.Regex`: *Changed from struct to [`core.String`](/asset-transformer-sdk/2026.4/api/python/core_types.md#string)*

### Changed

* [`algo.automaticUVMapping`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#automaticuvmapping): *Now have two new optional parameters allowing to set up the resolution and the padding*

* [`algo.createVisibilityInformationAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#createvisibilityinformationadvanced): *Now has a `level` parameter, like [`algo.createVisibilityInformation`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#createvisibilityinformation)*

* [`algo.decimateTarget`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#decimatetarget): *Now takes an optional experimental parameter for hybrid memoryless approach*

* [`algo.explodeConnectedMeshes`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#explodeconnectedmeshes): *Now has an optional parameter allowing to split connected components along non-manifold edges*

* [`algo.getFittingCylinder`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#getfittingcylinder),  [`algo.mapUvOnFittingCylinder`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#mapuvonfittingcylinder): *Theses function now take an optional forced direction vector*

* [`algo.remeshSurfacicHoles`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#remeshsurfacicholes): *Algorithm was improved, new parameters were added*

* [`algo.removeOccludedGeometries`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometries), [`algo.findOccludedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#findoccludedpartoccurrences) and [`algo.createVisibilityInformation`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#createvisibilityinformation): *Now can create viewpoints on an hemisphere*

* [`algo.removeOccludedGeometries`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometries), [`algo.findOccludedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#findoccludedpartoccurrences) and [`algo.removeOccludedGeometriesFromPoints`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesfrompoints): *Viewpoints generation no longer creates a uv mapping of a grid of `sphereCount` × `sphereCount` on a sphere (density is higher on the poles than on the hemisphere) but creates a uniform distribution of `sphereCount` viewpoints on a sphere.*

* [`algo.removeOccludedGeometries`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometries), [`algo.removeOccludedGeometriesAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesadvanced), [`algo.removeOccludedGeometriesFromPoints`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesfrompoints) and [`algo.removeOccludedGeometriesFromViewPoints`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesfromviewpoints): *These functions now take an optional list of occluders*

* [`algo.unwrapUV`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#unwrapuv): *Now has two new parameters to control solver's behavior*

* [`cad.createLoop`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createloop): *Now has a parameter allowing to merge isolated vertices in the loop*

* [`cad.createRevolutionSurface`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#createloop): *Now parameters defining the starting and ending angles are renamed and used as if they were in radians*

* [`cad.invertFaces`](/asset-transformer-sdk/2026.4/api/python/cad_functions.md#invertfaces): *Now has a parameter to invert loop orientation*

* [`core.endUndoRedoStep`](/asset-transformer-sdk/2026.4/api/python/core_functions.md#endundoredostep): *Now has an optional `deleteIfEmpty` parameter*

* [`geom.fromTRS`](/asset-transformer-sdk/2026.4/api/python/geom_functions.md#fromtrs): *Rotation vector should be passed in degrees instead of radians*

* [`geom.toTRS`](/asset-transformer-sdk/2026.4/api/python/geom_functions.md#totrs): *Rotation vector values are now returned in degrees*

* [`material.createMaterialsFromMaps`](/asset-transformer-sdk/2026.4/api/python/material_functions.md#creatematerialsfrommaps): *Now returns info on the created material*

* [`scene.createTorus`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#createtorus): *Now has a `generateUV` parameter like other `scene.create___` functions*

* [`scene.getAABB`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getaabb): *Now takes an optional parameter allowing to compute more precise AABB*

* [`scene.mergePartOccurrencesByFinalAssemblies`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbyfinalassemblies): *`MergeHiddenPartsMode` default value is now `Destroy`*

* [`view.refreshViewer`](/asset-transformer-sdk/2026.4/api/python/view_functions.md#refreshviewer): *Removed the parameters `frameCount` and `forceUpdate` that were unused*

### Renamed

#### Functions

| Previous                                      | New                                                                                                                                                                            |
| --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `algo.bakeUV`                                 | [`algo.transferUV`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#transferuv)                                                                                     |
| `algo.convertSimilarOccurrencesToInstances`   | [`algo.convertSimilarPartOccurrencesToInstances`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertsimilarpartoccurrencestoinstances)                         |
| `algo.createInstancesBySimilarity`            | [`algo.convertSimilarPartOccurrencesToInstancesFast`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#convertsimilarpartoccurrencestoinstancesfast)                 |
| `algo.explodePartByMaterials`                 | [`algo.explodeByMaterials`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#explodebymaterials)                                                                     |
| `algo.explodeVertexCount`                     | [`algo.explodeByVertexCount`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#explodebyvertexcount)                                                                 |
| `algo.explodeVoxel`                           | [`algo.explodeByVoxel`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#explodebyvoxel)                                                                             |
| `algo.hiddenRemovalCamera`                    | [`algo.removeOccludedGeometriesFromPoints`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesfrompoints)                                     |
| `algo.hiddenRemovalViewPoints`                | [`algo.removeOccludedGeometriesFromViewPoints`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesfromviewpoints)                             |
| `algo.hiddenRemoval`                          | [`algo.removeOccludedGeometries`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometries)                                                         |
| `algo.hiddenSelection`                        | [`algo.findOccludedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#findoccludedpartoccurrences)                                                   |
| `algo.mergeUVIslands`                         | [`algo.mergeUVIslandsAffine`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#mergeuvislandsaffine)                                                                 |
| `algo.orientFromCamera`                       | [`algo.orientPolygonFacesFromCamera`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#orientpolygonfacesfromcamera)                                                 |
| `algo.orient`                                 | [`algo.orientPolygonFaces`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#orientpolygonfaces)                                                                     |
| `algo.selectSimilar`                          | [`algo.findSimilarPartOccurrencesFast`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#findsimilarpartoccurrencesfast)                                             |
| `algo.smartHiddenCreateVisibilityInformation` | [`algo.createVisibilityInformationAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#createvisibilityinformationadvanced)                                   |
| `algo.smartHiddenRemoval`                     | [`algo.removeOccludedGeometriesAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#removeoccludedgeometriesadvanced)                                         |
| `algo.smartHiddenSelection`                   | [`algo.findOccludedPartOccurrencesAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#findoccludedpartoccurrencesadvanced)                                   |
| `algo.smartOrient`                            | [`algo.orientPolygonFacesAdvanced`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#orientpolygonfacesadvanced)                                                     |
| `algo.uvUnwrap`                               | [`algo.unwrapUV`](/asset-transformer-sdk/2026.4/api/python/algo_functions.md#unwrapuv)                                                                                         |
| `scene.findByActiveMaterial`                  | [`scene.findPartOccurrencesByActiveMaterial`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesbyactivematerial)                                 |
| `scene.findByMetadataValue`                   | [`scene.findOccurrencesByMetadataValue`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findoccurrencesbymetadatavalue)                                           |
| `scene.findByMetadata`                        | [`scene.findOccurrencesByMetadata`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findoccurrencesbymetadata)                                                     |
| `scene.findByProperty`                        | [`scene.findOccurrencesByProperty`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findoccurrencesbyproperty)                                                     |
| `scene.getDuplicatedParts`                    | [`scene.findDuplicatedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findduplicatedpartoccurrences)                                             |
| `scene.getNodeName`                           | [`scene.getOccurrenceName`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getoccurrencename)                                                                     |
| `scene.getReferencers`                        | [`scene.getDirectInstances`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getdirectinstances)                                                                   |
| `scene.getUnstitchedFacesOccurrences`         | [`scene.findPartOccurrencesWithUnstitchedOpenShells`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrenceswithunstitchedopenshells)                 |
| `scene.identifyInstances`                     | [`scene.findPartOccurrencesByMinimumNumberOfInstances`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesbyminimumnumberofinstances)             |
| `scene.mergeByRegions`                        | [`scene.mergePartOccurrencesByRegions`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbyregions)                                             |
| `scene.mergeByTreeLevel`                      | [`scene.mergeOccurrencesByTreeLevel`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergeoccurrencesbytreelevel)                                                 |
| `scene.mergeFinalLevel`                       | [`scene.mergePartOccurrencesByFinalAssemblies`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbyfinalassemblies)                             |
| `scene.mergeOpenShells`                       | [`scene.mergePartOccurrencesWithSingleOpenShellByAssemblies`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrenceswithsingleopenshellbyassemblies) |
| `scene.mergePartsByAssemblies`                | [`scene.mergePartOccurrencesByAssemblies`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbyassemblies)                                       |
| `scene.mergePartsByMaterials`                 | [`scene.mergePartOccurrencesByMaterials`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbymaterials)                                         |
| `scene.mergePartsByName`                      | [`scene.mergePartOccurrencesByName`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrencesbyname)                                                   |
| `scene.mergeParts`                            | [`scene.mergePartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#mergepartoccurrences)                                                               |
| `scene.selectByMaterial`                      | [`scene.findOccurrencesByMaterial`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findoccurrencesbymaterial)                                                     |
| `scene.selectByMaximumSize`                   | [`scene.findPartOccurrencesByMaximumSize`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesbymaximumsize)                                       |
| `scene.selectByVisibleMaterial`               | [`scene.findPartOccurrencesByVisibleMaterial`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesbyvisiblematerial)                               |
| `scene.selectDuplicated`                      | [`scene.findDuplicatedPartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findduplicatedpartoccurrences)                                             |
| `scene.selectInstances`                       | [`scene.getInstances`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getinstances)                                                                               |
| `scene.selectPartOccurrencesInAABB`           | [`scene.findPartOccurrencesInAABB`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesinaabb)                                                     |
| `scene.selectPartOccurrencesInBox`            | [`scene.findPartOccurrencesInBox`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#findpartoccurrencesinbox)                                                       |
| `scene.selectVisibleParts`                    | [`scene.getVisiblePartOccurrences`](/asset-transformer-sdk/2026.4/api/python/scene_functions.md#getvisiblepartoccurrences)                                                     |

#### Types

| Previous                    | New                                                                                                |
| --------------------------- | -------------------------------------------------------------------------------------------------- |
| `polygonal.DressedPolyList` | [`polygonal.SubmeshList`](/asset-transformer-sdk/2026.4/api/python/polygonal_types.md#submeshlist) |
| `polygonal.DressedPoly`     | [`polygonal.Submesh`](/asset-transformer-sdk/2026.4/api/python/polygonal_types.md#submesh)         |
| `algo.SmartHiddenType`      | [`algo.InnerOuterOption`](/asset-transformer-sdk/2026.4/api/python/algo_types.md#innerouteroption) |
