Skip to content

Releases: Markemp/Cryengine-Converter

v2.0.0 - USD Export and Animation Support

27 Nov 16:59
2165ebc

Choose a tag to compare

Release Notes: v2.0.0-rc1

🎉 Major New Feature: USD Export Support

This release introduces experimental support for Universal Scene Description (USD) format export, bringing
cgf-converter to modern 3D pipelines used by Pixar, NVIDIA Omniverse, Apple, and Blender.

USD Features

  • Full geometry export with materials, textures, and vertex colors
  • Skeletal animation support - exports .dba animation databases as UsdSkelAnimation prims
  • Skeletal animation support - exports .caf animation files (WIP)
  • Skeleton/armature support - bone hierarchies with proper bind poses and rest transforms
  • PBR material workflow via UsdPreviewSurface shaders
  • Support for both traditional CryEngine and Star Citizen #ivo format
  • Multi-UV layer infrastructure (parsing TBD)

Usage

cgf-converter.exe model.chr -usd -objectdir "path/to/objects"


✨ New: Collada Skeletal Animation Export

Collada (.dae) export now includes skeletal animation support:

  • Matrix-based animation export for maximum compatibility.
  • Animations from .dba databases and .caf (WIP) are exported with proper bone targeting.
  • Works with Blender 4.4 and earlier Collada importer. Blender 5.0 and newer no longer supports Collada.

🔧 Improvements

Collada Renderer Refactoring

  • Split monolithic 1600+ line renderer into 7 maintainable partial class files
  • Improved code organization following the established glTF/USD pattern

USD Fixes & Improvements

  • Fixed GeomSubset face indices for proper material assignment
  • Improved numeric formatting (no scientific notation in coordinates)
  • Added Nodraw shader handling for invisible/collision geometry
  • Fixed roughness and opacity material properties

📋 Known Issues

  • Animation: Only .dba animation databases supported; individual .caf files not yet parsed
  • Multi-UV: Infrastructure complete but CryEngine dual-UV parsing not yet implemented

🛠️ Build Instructions

dotnet publish -c Release

Output: cgf-converter\bin\Release\net9.0\win-x64\publish\cgf-converter.exe


Full Changelog

USD Export

  • Add USD export support with command-line integration
  • Add USD skeleton/armature support with improved matrix formatting
  • Add USD skeletal animation support
  • Add Ivo format support to USD renderer
  • Implement shader-based material system for USD export
  • Add multiple UV layer support infrastructure

Collada Export

  • Add Collada skeletal animation support
  • Refactor ColladaModelRenderer into partial classes

glTF Export

  • Orientation fix for models (-Y forward to Y forward) (WIP)

Fixes

  • Fix USD SkelAnimation scales type and number formatting
  • Fix USD animation timing and add required scales array
  • Fix USD skeleton bone orientation and transforms
  • Fix USD per-node bounding box and matrix scientific notation
  • Fix Ivo format geometry explosion and skeleton recursion
  • Fix USD material system: roughness, Nodraw shader, opacity handling
  • Fix USD texture handling and null safety

v1.7.1 - Support v802 morph chunks

19 Jun 14:45
2165ebc

Choose a tag to compare

Quick update to support new morph chunk version found in KCD2.

This update also includes the USD work done to date.

v1.7.0 - Fix for new Ivo cgf/cga and KCD2 materials

10 May 15:24
43f77dd

Choose a tag to compare

This one took a while and has some significant updates.

  • Supports Ivo 3.24 and 4.0+ cga/cgf files.
  • Refactor domain models to be more generic, including skinning info. This makes the models much more generic and should require a lot less refactoring of individual renderers whenever there is a change.
  • Can deserialize mtl files from KCD2 that have MaterialRef elements.
  • Can handle material layers for SC materials. This creates a material for the sublayers of a material, but won't assign them to the geometry as Collada doesn't support sublayers. Will look into handling this better for USD format in the future.
  • Fix bone weight skinning for some models by using skinning chunks (if they exist) instead of bone map datastreams.
  • Can unsplit DDS files with the -unsplittextures or -ut flag. This will also find textures in the material files for KCD2's MaterialRef elements and SC's Layers elements.
  • Better KCD2 support
  • Lots of refactoring and cleanup.

Bugfix for SC skin files

13 Jun 01:44
088c913

Choose a tag to compare

  • Fix for SC 3.23 skin files (Change int for material id to short)

v1.6.0

11 Feb 00:58
f4590cb

Choose a tag to compare

  • Support v3.22 Star Citizen Ivo files. (issue #168)
  • Better material handling. (issue #161)
  • Material bugfix for models that have 2 material files (Archeage). (issue #161)
  • Allow the material file to be passed in via -mtl argument. This overrides the materials found in the MtlNameChunk which sometimes doesn't point to the right material file (MWO mech parts).
  • Support for 0x0804 material chunks (New World). (issue #165)
  • Support for 0x0801 compiled physical proxies chunk (Archeage fix). (issue #161, #74)
  • Renamed all the Grendgine files to just Collada.
  • Support for new bone list in Star Citizen files (issue #156)
  • Star Citizen landing gear fix (issue #151)

v1.5.0 Release

03 Jan 00:57
9982d5e

Choose a tag to compare

  • Fix for Ivo armatures.
  • Clarification on the Half data structure (CryHalf, DymekHalf and traditional IEEE Half).
  • Renamed Utils to Utilities. Why? Seemed like a good idea at the time.
  • Remove unused converters (FBX, Cryengine, Blender). Support being added for USD as Blender adds functionality.
  • General cleanup and bugfixes.

image

Update to .Net 6 and materials improvements

09 Oct 14:47
6330ff5

Choose a tag to compare

Lots of goodies happening here!

  • Updated the solution to .Net 6 and converted many files to take advantage of file scoped namespaces (as well as general code cleanup).
  • Fixed material handling! It is more important than ever to ensure the game's object directory path is set up, since the converter really needs to find the material files for the model to work properly. Without it, it will create generic material names.
  • Implement Half type in .Net and remove references to the math toolkit.
  • Added an XML deserializer for Sonic Boom material files.
  • Added support for older Cryengine games (version 0x744 which I believe is Cryengine 1 and 2).
  • Fixed a bug in reading armatures for older versions (size has to be computed to get proper number of bones).

Known issues:

  • Older models with armatures have an issue where the armature is flipped 180 degrees from the model. This can be fixed in Blender by going into edit mode for the armature, selecting all the bones, rotating 180 degrees on the z axis, and slightly moving it on the y axis to match up with the model. Weight mapping does appear to be correct if you do it this way.

Upcoming:

  • Add support for USD (Pixar's model format). This seems to be the most accepted standard for generic model formats, and the direction that Blender seems to be moving.
  • Create new videos on how to use the converter.

More support for SC Ivo files. Hunt fix

28 Jul 12:49

Choose a tag to compare

Release v1.3.1 to fix some bugs that crept in with v1.3.0 and enhance #ivo file handling a bit better.

  • Fix for Hunt issue on 1.3.0 release
  • Fix bad quaternion to rotation matrix calculation
  • Add support for 2 new Normals datastream Ivo chunks

Better #ivo file handling and significant bug patching/maintainability updates

21 Jul 04:18

Choose a tag to compare

New v1.3 release including some significant performance and size improvements.

  • Added additional processing for #ivo files. Aside from face models, it should be working fairly decently.
  • Code refactored to convert custom structs (Vectors, matrices) to System.Numerics to take advantage of much better written code.
  • Removed unneeded dependencies due to .Net 5 upgrade, such as Math.Net and Cody Fostura. This reduced the size of the executable from 8.7MB to 2.6MB, and reduced test run times from 13 to 8 seconds.
  • Added many more integration tests
  • Refactored Node and Bone Transform processing to use computed values and removed a ton of unneeded functions and class properties.
  • Added extensions to BinaryReader to allow reading of System.Numeric structs directly, making the code easier to understand and maintain.

Update Framework and deconflict SC/Hunt

04 Jul 20:38

Choose a tag to compare

  • Updated the framework to .Net 5.0. This has increased the integration test runs significantly, from over 12 sec to about half that. I am assuming regular usage will also be improved as well. The flip side is that the size of the .exe has changed from about 1.5MB to over 8MB.
  • Deconflicted the VertsUV structure between Star Citizen and other ver 0x802 datastream models.
  • Added additional integration tests.
  • Added a Material File element to the assets element that contains the material file name from the cryengine file (or the best guess at it).