RyzomConverter adapts character models and animations from the Ryzom Asset Repository for use with jMonkeyEngine.
RyzomConverter derives from Java software created by Alweth. Before using, modifying, selling, or distributing this software or its output, please read Alweth's license very carefully.
The Ryzom Asset Repository is available under a CC-BY-SA 3.0 license, so if you distribute the converted files or anything built from them, you should do so under that license.
The screenshot is derived from Ryzom Asset Repository, licensed CC-BY-SA 3.0.
Alweth is acknowledged for authoring RyzomConverter
and providing it free of charge.
The suggested procedure (for Bash users) is:
mkdir RyzomAssets
cd RyzomAssets
git clone https://bitbucket.org/ccxvii/ryzom-assets.git
cd ..
git clone https://github.com/stephengold/RyzomConverter.git
cd RyzomConverter
./gradlew run
The final step may take 4 minutes or more.
Converted assets are written to the
RyzomConverter/assets/ryzom-assets/export
folder.
They should occupy about 750 MBytes of filesystem storage.
There should be 4 J3O animations files,
1958 J3O geometries files, and 1183 PNG texture files.
Once the converter has successfully run to completion,
the RyzomAssets folder
(which should occupy about 3.5 GBytes of storage) may be deleted.
The converted assets occupy less storage space because not all assets in the Ryzom Asset Repository get converted: only assets in the "actors" folder, and even there, the "banners", "tools", and "weapons" sub-folders are skipped.
The asset names and animation names are in a mixture of French and English.
To construct a character in Java code:
- register a locator:
assetManager.registerLocator("../RyzomConverter/assets", FileLocator.class);
- load an animations asset and attach it to the scene graph:
ModelKey key = new ModelKey("ryzom-assets/export/animations_ca_hom.j3o");
Node characterNode = (Node) assetManager.loadAsset(key);
rootNode.attachChild(characterNode);
- load a geometries asset for each body part
and attach it to the character node.
If using the
ca
skeletal group, the code might look something like this:
key = new ModelKey("ryzom-assets/export/fy_hom_armor01_armpad.j3o");
Spatial arms = manager.loadAsset(key);
characterNode.attachChild(arms);
key = new ModelKey("ryzom-assets/export/fy_hom_armor01_gilet.j3o");
Spatial chest = manager.loadAsset(key);
characterNode.attachChild(chest);
key = new ModelKey("ryzom-assets/export/fy_hom_visage.j3o");
Spatial face = manager.loadAsset(key);
characterNode.attachChild(face);
key = new ModelKey("ryzom-assets/export/fy_hom_armor01_bottes.j3o");
Spatial feet = manager.loadAsset(key);
characterNode.attachChild(feet);
key = new ModelKey("ryzom-assets/export/fy_hom_cheveux_basic01.j3o");
Spatial hair = manager.loadAsset(key);
characterNode.attachChild(hair);
key = new ModelKey("ryzom-assets/export/fy_hom_armor01_hand.j3o");
Spatial hands = manager.loadAsset(key);
characterNode.attachChild(hands);
key = new ModelKey("ryzom-assets/export/fy_hom_armor01_pantabottes.j3o");
Spatial legs = manager.loadAsset(key);
characterNode.attachChild(legs);
- disable scene-graph culling for all model spatials
Each geometry is designed for a specific skeletal group, either ca
or ge
.
Geometries returned by loadAsset()
are for the ca
skeletal group.
Geometries for the ge
skeletal group
are stashed in the ryzom_alternative
user data of each geometry asset.
- The
ca
group provides 76 animations for males and 53 for females. - The
ge
group provides 1654 animations for males and 1452 for females.
Open-source demo software is available from GitHub.
For more information about RyzomConverter, read its topic at the jME Forum.
For more information about The Saga of Ryzom (the MMORPG for which the assets were created) read its Wikipedia article.
For more information about the licensing of the Ryzom Asset Repository, read the May 2010 Creative Commons press release.