Browse our Products

Aspose.3D for Java 24.8 Release Notes

Improvements and Changes

KeySummaryCategory
THREEDNET-1576Expose internal axis system utilities to user.Task
THREEDNET-1579Implement full XZ stream supportTask
THREEDNET-1578JT version 9.5 metadataImprovement
THREEDNET-1580Add PMI support for JT 9 formatImprovement
THREEDNET-1575Converted GLB Model RotationBug fixing
THREEDNET-1577Error “cannot open this file” for 3mf fileBug fixing

API changes

Added class com.aspose.threed.JtLoadOptions

    /**
     *  Load properties from JT's property table as Aspose.3D properties.
     *  Default value is false.
     *
     * @return  Load properties from JT's property table as Aspose.3D properties. 
     * Default value is false.
     */
    public boolean getLoadProperties()
    
    /**
     *  Load properties from JT's property table as Aspose.3D properties.
     *  Default value is false.
     *
     * @param value New value
     */
    public void setLoadProperties(boolean value)
    
    /**
     *  Load PMI information from JT file if possible, the data will be saved as property "PMI" of {@link com.aspose.threed.Scene#getAssetInfo}.
     *  Default value is false.
     *
     * @return  Load PMI information from JT file if possible, the data will be saved as property "PMI" of {@link com.aspose.threed.Scene#getAssetInfo}.
     * Default value is false.
     */
    public boolean getLoadPMI()
    
    /**
     *  Load PMI information from JT file if possible, the data will be saved as property "PMI" of {@link com.aspose.threed.Scene#getAssetInfo}.
     *  Default value is false.
     *
     * @param value New value
     */
    public void setLoadPMI(boolean value)
        

The new added JtLoadOptions allows you to instruct Aspose.3D to parse JT file’s meta data and save it as standard Aspose.3D’s properties.

Sample code

    var opt = new JtLoadOptions();
    opt.setLoadProperties(true);
    var s = Scene.fromFile("test.jt", opt);
    
    for(var prop : s.getRootNode().getChildNodes().get(0).getProperties())
    {
        System.out.println(prop.getName() + " = " + prop.getValue());
    }

Added members to class com.aspose.threed.AxisSystem:

    /**
     *  Create a matrix used to convert from current axis system to target axis system.
     *
     * @param targetSystem Target axis system
     * @return A new transformation matrix to do the axis conversion
     */
    public Matrix4 transformTo(AxisSystem targetSystem)


    /**
     *  Create {@link com.aspose.threed.AxisSystem} from {@link com.aspose.threed.AssetInfo}
     *
     * @param assetInfo From which asset info to read coordinate system, up and front vector.
     * @return Axis system containg coordinate system, up, front from given asset info
     */
    public static AxisSystem fromAssetInfo(AssetInfo assetInfo)

Sample code

The new added method allows you to create a transformation matrix to convert vector from one axis system to another axis system.

    Scene scene = Scene.fromFile("test.fbx");
    //Create a new axis sytem with up vector to +Y axis and front to +X axis.
    var target = new AxisSystem(CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.X_AXIS);
    //Create a transform matrix from scene's current axis sytem to our custom axis sytem
    var transform = AxisSystem.fromAssetInfo(scene.getAssetInfo()).transformTo(target);
    //Apply the transform to all geometries in the scene.
    PolygonModifier.applyTransform(scene.getRootNode(), transform);

Added members to class com.aspose.threed.PolygonModifier:

    /**
     *  Apply transform matrix on control points of all geometries
     *
     * @param node 
     * @param transform 
     */
    public static void applyTransform(Node node, Matrix4 transform)

This new method allows you to apply a matrix to all control points of all descendent geometries.

Sample code

    Scene scene = Scene.fromFile("test.fbx");
    //Create a new axis sytem with up vector to +Y axis and front to +X axis.
    var target = new AxisSystem(CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.X_AXIS);
    //Create a transform matrix from scene's current axis sytem to our custom axis sytem
    var transform = AxisSystem.fromAssetInfo(scene.getAssetInfo()).transformTo(target);
    //Apply the transform to all geometries in the scene.
    PolygonModifier.applyTransform(scene.getRootNode(), transform);