Skip to content

Releases: recp/AssetKit

v0.6.2: CI and Build Fixes

Choose a tag to compare

@recp recp released this 25 Jun 06:02

v0.6.2: CI and Build Fixes

This patch release focuses on build reliability and a numeric parsing correctness fix found during Linux ARM / optimized CI validation.

Next:

  • docs
  • more samples

Full Changelog: v0.6.0...v0.6.1

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.6.1: 3MF, CLI, samples and performance

Choose a tag to compare

@recp recp released this 24 Jun 20:31

v0.6.1: 3MF, CLI, samples and performance

This release adds 3MF / print document support, cli, samples, and build improvements.

It is still not the end of 3MF work, but AssetKit can now read, preserve and write much more of real print-oriented 3MF packages

CLI:

> ./assetkit --help
AssetKit 0.6.1

Fast 3D asset inspection and conversion tool.
Reads and writes scene, mesh, material, animation and print formats.

Home:   https://github.com/recp/assetkit
Issues: https://github.com/recp/assetkit/issues

Usage:
  assetkit --convert <input> <output> [options]
  assetkit --inspect <input> [output] [options]

Aliases:
  -c, --convert    Convert an asset
  -i, --inspect    Inspect an asset
  -h, --help       Show help
      --version    Show AssetKit version

Convert options:
      --format <fmt>          Use when output has no extension, or force this format
      --bin                   Binary output when supported: stl, ply, glb
      --ascii                 Text output when supported: stl, ply, gltf
      --asset-version <ver>   Output asset version: auto, 1.4.1, 1.5.0, 2.0, 2.1

Inspect options:
      --json                  JSON report
      --text                  Text report
  -o, --output <path>         Write report to file

🎓 New Features:

  • 3MF supp
  • Print validation: add initial mesh validation, negative transform detection and print feature flags
  • CLI
  • add samples
  • build: add configurable exporter builds for import-only or smaller packages
  • build: add static internal dependency mode for package / wheel / CLI builds
  • glTF: add early glTF 2.1 infrastructure work

🛠️ Bugfixes and Improvements:

  • performance improvements
  • OBJ / DAE / glTF / 3MF: deduplicate URI, image and buffer helper paths
  • build: tune optimized build flags and clean package build warnings
  • fix Draco / meshopt / SPZ / KTX2 builds across macOS, Linux, Windows and MSVC
  • DAE: fix XML document lifetime leak
  • DAE / XML: fix MSVC value parsing and DAE float-param byte offsets
  • PLY: fix MSVC conversion warnings
  • lights: fix preview resolve and path ownership for app / Blender consumers
  • windows: fix exporter directory checks, ARM warnings and decoder shim linkage

Next:

  • docs
  • more samples

Full Changelog: v0.6.0...v0.6.1

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.6.0: export

Choose a tag to compare

@recp recp released this 12 Jun 17:31

Finally we have export support.

Next:

  • 3mf, x3d
  • Docs
  • Samples

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.5.1: public api cleanup

Choose a tag to compare

@recp recp released this 06 Jun 16:30

v0.5.1: drop COLALDA complexity and public API cleanup

This release cleans up the remaining DAE-shaped public APIs. It removes legacy source, library, scene, image, instance and profiling leftovers, and makes the core model more format-agnostic.

Highlights

  • removed public AkSource from the normal accessor/buffer flow
  • replaced AkVisualScene with the simpler AkScene model
  • simplified document libraries with typed AkLibrary lists
  • made scene roots and node instances more format-agnostic
  • updated image source and light APIs

Next:

  • Export
  • 3mf, x3d
  • Docs
  • Samples

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.5.0: new material system

Choose a tag to compare

@recp recp released this 31 May 12:21

v0.5.0: new material system

This release replaces AssetKit's legacy effect/profile-centered material path with a modern, format-agnostic material system. The new model is designed around renderable surfaces, typed inputs, sparse material features and explicit binding resolution, while keeping importer and consumer hot paths lightweight.

Breaking Changes: Material

  • replaced the old public AkEffect / AkProfile / AkTechniqueFxCommon-style material path with AkMaterialSurface, AkMaterialInput and typed material features.
  • legacy DAE effect/profile structures are now internal adapter data instead of the primary public material API.
  • consumers should use ak_materialResolve(), direct AkMaterialSurface fields, typed feature structs and ak_materialInputBySemantic() for generic lookup instead of re-deriving format-specific material state.

Old:

AkMaterial *mat              = prim->material;
AkInstanceEffect *instEffect = mat->effect;
AkEffect *effect             = instEffect->effect;
AkProfile *profile           = effect->profile;
AkTechniqueFxCommon *cmn     = profile->technique->common;

/* mat->instanceEffect->effect->profile->technique->common->diffuse */
diffuse     = cmn->diffuse;
transparent = cmn->transparent;
normal      = cmn->normalMap;
occlusion   = cmn->occlusion;

if (cmn->transparent) {
  switch (cmn->transparent->opaque) {
    case AK_OPAQUE_A_ONE:
    case AK_OPAQUE_A_ZERO:
    case AK_OPAQUE_RGB_ONE:
    case AK_OPAQUE_RGB_ZERO:
      ...
  }
}

if (diffuse->tex) {
  // DAE bind_vertex_input / texcoord semantic
}

if (gltf_material) {
  // separate glTF PBR path
}

if (obj_mtl) {
  // separate OBJ illum / Tr / d / map_Kd path
}

New:

AkResolvedMaterial rm;

if (ak_materialResolve(prim, instance, UINT32_MAX, &rm) && rm.surface) {
  AkMaterialSurface *s = rm.surface;

  /* preferred hot-path access for known built-in inputs. */
  const AkMaterialInput *baseColor = s->baseColor;
  const AkMaterialInput *opacity   = s->opacity;
  const AkMaterialInput *normal    = s->normal;

   /* generic / inspector-style access, still O(1) for known semantics. */
  const AkMaterialInput *baseColor = ak_materialInputBySemantic(s, AK_MATERIAL_SEMANTIC_BASE_COLOR);


  AkTextureRef *tex = ak_materialInputTexture(baseColor);
  float alpha       = ak_materialInputScalar(opacity, 1.0f);
}

🎓 New Features:

  • material: add modern surface model with base color, opacity, metallic, roughness, normal, occlusion, emissive, alpha mode, IOR and emissive strength.
  • material: add typed feature structs for clearcoat, specular, specular-glossiness, transmission, sheen, iridescence, volume, anisotropy, dispersion, diffuse transmission, subsurface and classic material data.
  • material: add semantic lookup helpers and O(1) semantic input access for consumer hot paths.
  • material: add material binding and resolved material APIs for primitive / instance / variant workflows.
  • material: add property-set groundwork for future 3MF, X3D and USD material/property models.
  • glTF: map PBR material extensions directly into the new material feature model.
  • DAE: normalize common-profile materials into modern material surfaces while preserving legacy source data internally.
  • OBJ / MTL: map classic MTL fields into modern surface + classic feature data.
  • PLY / STL: keep vertex/face color materials aligned with the new surface model.

🛠️ Bugfixes and Improvements:

  • material: fix DAE transparency handling across A_ONE, A_ZERO, RGB_ONE, RGB_ZERO, MASK and BLEND modes.
  • material: preserve texture channel semantics for opacity, metallic/roughness, occlusion and extension textures.
  • material: centralize material semantic strings through generated strpool constants.
  • material: improve alpha-mode handling for glTF OPAQUE, MASK and BLEND.
  • material: align RGB transparency luminance with COLLADA / cglm coefficients.
  • consumers: simplify texture-coordinate slot resolution through AssetKit helpers.
  • build: suppress C++ header initializer warnings and keep public inline helpers warning-clean.

Next:

  • Export
  • 3mf, x3d
  • Docs
  • Samples

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.4.0: Morph & Skin, extensions and optimizations

Choose a tag to compare

@recp recp released this 22 May 17:13

v0.4.0: Morph & Skin, extensions and optimizations

This release expands AssetKit's glTF support, adds new skin / morph controller utilities, and improves importer performance across glTF, DAE, OBJ, PLY and STL.

New Features:

  • glTF: optional decoder side libraries for Draco, meshoptimizer, SPZ / Gaussian splats and KTX2 / BasisU textures.
  • glTF: typed support for material variants, Gaussian splatting, animation pointer, punctual lights and GPU instancing.
  • glTF: support sparse accessors and KHR_mesh_quantization, with an option to preserve quantized attributes.
  • Skin: add format-agnostic helpers for DAE and glTF bone weights.
  • Morph: add inspect / interleave helpers, target names, presets and override weights.
  • Animation: add resolved animation targets and bake helpers.
  • Material: support more PBR extensions including clearcoat, specular, transmission, IOR, unlit and emissive strength.
  • Extras: preserve glTF extras, preserved extension payloads and COLLADA <extra> through ak_extra().
  • Build: CMake is now the canonical build system.

Bugfixes and Improvements:

  • glTF / GLB: fix loading paths, accessor ref-counting, byteStride / byteLength, texture refs and scene nodes.
  • DAE: fix external <vertices>, polygon loading, SceneKit cases, controller fixups and axis / matrix conventions.
  • OBJ / MTL: improve vertex, normal, texcoord, name and material parsing.
  • PLY / STL: fix ASCII / binary edge cases, zero-count elements, binary STL headers and position dedup paths.
  • Performance: optimize string / numeric parsing, typed index storage, DAE index parsing and OBJ / PLY / STL hot paths.
  • Platform / build: improve MinGW / MSYS support, dependency updates and warning cleanup.
  • Documentation: add extras / extensions docs and refresh build docs.

Next:

  • Material system updates
  • Docs
  • Samples

Full Changelog: v0.3.1...v0.4.0

❤️ Sponsorship: Consider become a sponsor for AssetKit

Supporting cross platform, multiple OS-es and multiple CPUs requires multiple hardwares to test on it which requires extra financial cost. Also sparing time is another big issue while working at somewhere fulltime... Your company can become a sponsor to help:

https://github.com/sponsors/recp
https://opencollective.com/assetkit#backer
https://patreon.com/recp

v0.3.1: Read File Optimizations - mmap

Choose a tag to compare

@recp recp released this 18 Aug 18:23

AssetKit now provides an option to read files with mmap (Windows also supported). This options is enabled as default. To disable mmap

ak_opt_set(AK_OPT_USE_MMAP, false);

New Features:

  • New Option: AK_OPT_USE_MMAP boolean, default is true.
  • Expose mmap api to usable externally
  • mmap-ed memories can be attached to a memory node, unmap will be called before memory node is free-ed
    • ak_mmap_rdonly(int fd, size_t size) - map file as READONLY
    • ak_unmap(void *file, size_t size)- unmap file
    • ak_mmap_attach(void *obj, void *mapped, size_t sized) - attach mmap to memory to unmap automatically
    • ak_unmmap_attached(void *obj) - unmap all attached mmap files

Bugfixes and Improvements:

  • fix ak_strtok_count_fast for READONLY memory
  • util: remove modes from ak_readfile and make it "rb" globally
  • dae: fix writing READONLY memory
  • memory: fix URL memory extension
  • some other improvements

v0.3.0: PLY (Binary + ASCII) + Bugfixes and Improvements

Choose a tag to compare

@recp recp released this 14 Aug 09:12

New Features:

  • AssetKit now supports PLY (both ASCII and Binary) files
  • endian helper to read binary data; use common endian header for all formats (endian.h)
  • documentation

Bugfixes and Improvements:

  • wobj: fix loading wavefront object if there is no NORMAL (position + texture case)
  • wobj: improve switching between objects (use triangle object if the target is not poly)
  • wobj: join group and object separations
  • add new compare func for ivec3
  • wobj: group/separate primitives by usemtl: mesh primitives created for each usemtl, base buffers and accessors are shared between them
  • reuse postscript functions and files
  • use short names for input semantics; remove _SEMANTIC from enum constants
  • improve byte swap operations and make cross platform
  • rename _assetkit_hide macros to AK_HIDE
  • add common strpool to avoid duplications
  • stl: fix loading normals in Binary STL
  • dae: fix load skin controllers
  • dae: move controller postscripts to separate file
  • drop stb image, let user load images themselves
  • provide callbacks for loading images
  • move dependencies from lib/ folder to deps/
  • remove unused files, suppress warnings, update README
  • remove sample-model sub repo for tests

IO: New Formats (.obj, .mtl, .stl)

Choose a tag to compare

@recp recp released this 14 Jul 15:57

AssetKit now supports Wavefront Object (.obj), Wavefront Object Material (.mtl), STL (both ASCII and Binary)

v0.1.0: Initial Release

Pre-release

Choose a tag to compare

@recp recp released this 17 May 02:03

AssetKit can glTF 2.0, COLLADA 1.4/1.4.1 and COLLADA 1.5 with single interface. It makes it easy and fast to load 3D scene to GPU.