Aspose.3D for Java 21.6 Release Notes

Improvements and Changes

Key Summary Category
THREEDNET-870 Add USDC export support. New Feature
THREEDNET-891 Expose zip archive file system New Feature
THREEDNET-892 Allow FBX exporter to embed textures during the export. New feature
THREEDNET-895 Fixed some characters in node’s name will cause generated GLB file failed to pass validation Bug fix
THREEDNET-896 Fixed empty scene cannot export to a valid glb file Bug fix
THREEDNET-890 Add material/texture export in USDC Improvement
THREEDNET-899 Expose the property of RelativeFilename for FBX Texture Improvement

API changes

Added USD as export type

From 21.6 you can export scene into a USD file by:

    Scene scene = new Scene();
    //...prepare your scene
    scene.save("test.usd", FileFormat.USD);

Added new class com.aspose.threed.ZipArchiveFileSystem

It’s possible for glb/fbx and other file formats that supports texture embedding to access external assets through a zip file by using a ZipArchiveFileSystem to SaveOptions.FileSystem.

Added new property to class com.aspose.threed.FbxSaveOptions

    /**
     * Gets whether to embed the texture to the final output file.
     * FBX Exporter will try to find the texture's raw data from {@link com.aspose.threed.IOConfig#getFileSystem}, and embed the file to final FBX file.
     * Default value is false.
     */
    public boolean getEmbedTextures();
    
    /**
     * Sets whether to embed the texture to the final output file.
     * FBX Exporter will try to find the texture's raw data from {@link com.aspose.threed.IOConfig#getFileSystem}, and embed the file to final FBX file.
     * Default value is false.
     * @param value New value
     */
    public void setEmbedTextures(boolean value);

Sample code:

    var scene = new Scene();
    var opt = new FbxSaveOptions(FileFormat.FBX7700ASCII);
    opt.setEmbedTextures(true);
    var tex = new Texture();
    tex.setFileName("test.png");
    var mat = new PhongMaterial();
    mat.setTexture(Material.MAP_DIFFUSE, tex);
    var planeNode = scene.getRootNode().createChildNode(new Plane());
    planeNode.setMaterial(mat);
    scene.save("plane-with-texture.fbx", opt);