Go to file
2023-09-12 17:03:06 +08:00
CodeGen fill info for CKBitmapData 2023-09-10 13:23:04 +08:00
Documents add document as a memorandum 2023-08-26 14:23:33 +08:00
LibCmo finish CKTexture reading 2023-09-12 17:03:06 +08:00
Unvirt finish CKTexture reading 2023-09-12 17:03:06 +08:00
VirtoolsProbe write some CKStateChunk code 2023-02-26 13:57:32 +08:00
.gitattributes move some document into here 2023-02-04 22:21:18 +08:00
.gitignore refact codegen 2023-08-20 21:38:16 +08:00
CONTRIBUTING.md finish linux related code writting. remove all offensive content. 2023-03-26 20:32:13 +08:00
libcmo21.sln add new proj for convenient IDA rev work. 2023-02-15 10:12:30 +08:00
LibRef.props use stb as default image codec 2023-09-06 15:17:39 +08:00
LICENSE Intro project. Change license back to MIT. 2023-03-26 21:03:22 +08:00
README.md use stb as default image codec 2023-09-06 15:17:39 +08:00

libcmo21

The Library for CMO File Read/Write. Also the Minimalist Virtools Environment.

Status

This is a long time project.
This project welcome everyone's contribution, except the employee of Dassault, which created Virtools.

Introduction

The aim of this project is creating a universal library which can read / write CMO files or any other Virtools files without any Virtools dependencies.
This project will not link any original Virtools dynamic library. So this project can be ported to any platform if the compiler supports.
This project only involving specific Virtools version, 2.1. Other Virtools versions are not considered by this project.
This project is based on reverse work of CK2.dll, VxMath.dll and CK2_3D.dll. The program unvirt created by Luigi Auriemma, which is licensed by GPL-v2, also help my work.

The difference between this project and other Virtools libraries, is that we are not focusing on re-creating the whole Virtools engine. We only focus on the Virtools files RW, and we only just implement a minimalist Virtools environment for achieving this.

Goals

The ultimate goals of this project are:

  • Create a library which can read Virtools file and do not limited on x86 platform by original Virtools implement.
  • Create a user-firendly Python binding. And allow user can export Ballance Map from Blender on Linux platform natively.
  • Create a Godot Extension which can load Ballance Map natively.

There is still a long way to go. But I will try my best.

Contributions

However, not all contribution will be accepted. Just like I said, we create Minimalist Virtools Environment. The basic RW functions is enough. We do not accept complex function implementations.
There are 3 lists which indicate our accept guideline.

Wanted Features

These features will be accepted as soon as possible.

  • The bug fix of Virtools file reader.
  • Class layout, Load() functions of following CKObject based classes.
    • CKBeObject
    • CKGroup
    • CKMaterial
    • CKTexture
    • CKMesh
    • CKRenderObject
    • CK3dEntity
    • CK3dObject
  • Class layout, and LoadData() functions of following CKBaseManager based classes.
    • CKAttributeManager
    • CKBehaviorManager

Not Urgent Features

These features are in plan, but not urge to merge.

  • The CK_ID remap system of Reader & Writer.
  • Any Save functions.
  • The save steps of Virtools file.
  • Other CK classes implementations.
  • Non-Virtools 2.1 implementations.

Don't Care Features

These features explicitly will not be merged.

  • Run Virtools file.
  • Plugin system.

Compile

This project require:

  • The compiler supporting C++20
  • Littile-endian architecture system.
  • zlib
  • stb (For image read / write)
  • iconv (non-Windows system required)

It can be compiled on Windows via sln file, or on Linux platform via CMake file.
You should set up LibRef.props when using sln file.
However CMake may not be updated in time because I develop this project on Windows frequently.