Aspose.3D for .NET 18.2 - February 2018

Other Improvements and Changes

KeySummaryCategory
THREEDNET-335Implement adding Targets to the MorphChannelNew feature
THREEDNET-348Add support of skeleton/morphing animation exportingNew feature
THREEDNET-332Add support for NURBS curveNew feature
THREEDNET-333Add support for NURBS surfaceNew feature
THREEDNET-338Add support of Pre/Post RotationNew feature
THREEDNET-351Cannot render transparency on PNG image of the sceneEnhancement
THREEDNET-334Output FBX - the null pointer error occurredBug

Public API and Backwards Incompatible Changes

See the list of any changes made to the public API such as added, renamed, removed or deprecated members as well as any non-backward compatible change made to Aspose.3D for .NET. If you have concerns about any change listed, please raise it on the Aspose.3D support forum.

Adds members to Aspose.ThreeD.Deformers.Bone class

C#

 /// <summary>

/// Gets the weight for control point specified by index

/// </summary>

/// <param name="index">Control point's index</param>

/// <returns>the weight at specified index, or 0 if the index is invalid</returns>

public double GetWeight(int index)

/// <summary>

/// Sets the weight for control point specified by index

/// </summary>

/// <param name="index">Control point's index</param>

/// <param name="weight">New weight</param>

public void SetWeight(int index, double weight)

/// <summary>

/// Gets the count of weight, this is automatically extended by <see cref="SetWeight"/>

/// </summary>

int WeightCount{ get;}

/// <summary>

/// Gets or sets the transform matrix of the bone.

/// </summary>

Aspose.ThreeD.Utilities.Matrix4 BoneTransform{ get;set;}

Adds members to Aspose.ThreeD.Deformers.MorphTargetChannel class

C#

 /// <summary>

/// Gets the weight for the specified target, if the target is not belongs to this channel, default value 0 is returned. 

/// </summary>

/// <param name="target"></param>

/// <returns></returns>

public double GetWeight(Aspose.ThreeD.Entities.Geometry target)

/// <summary>

/// Sets the weight for the specified target, default value is 1, range should between 0~1

/// </summary>

/// <param name="target"></param>

/// <param name="weight"></param>

public void SetWeight(Aspose.ThreeD.Entities.Geometry target, double weight)

Adds members in class Aspose.ThreeD.Entities.NurbsCurve

C#

 /// <summary>

/// Evaluate the nurbs curve

/// </summary>

/// <param name="steps">The evaluation frequency between two neighbor knots, default value is 20</param>

/// <returns>Points in the curve</returns>

public Aspose.ThreeD.Utilities.Vector4[] Evaluate(double delta)

/// <summary>

/// Evaluate the curve's point at specified position

/// </summary>

/// <param name="u">The position in the curve, between 0 and 1</param>

/// <returns></returns>

public Aspose.ThreeD.Utilities.Vector4 EvaluateAt(double u)

Sample code:

C#

 public static void Main(string[] args)

{

    NurbsCurve curve = new NurbsCurve();

    curve.ControlPoints.AddRange(new Vector4[]{

        new Vector4(-28.0118217468262, 53.0359077453613, 0, 1),

        new Vector4(8.95330429077148, 64.7735290527344, 0, 1),

        new Vector4(35.7778739929199, 42.424259185791, 0, 1),

        new Vector4(24.8725852966309, -4.86993026733398, 0, 1),

        new Vector4(-35.7778739929199, -34.192684173584, 0, 1),

        new Vector4(-18.6066780090332, -57.1458396911621, 0, 1),

        new Vector4(17.733715057373, -64.7735290527344, 0, 1)

    });

    curve.KnotVectors.AddRange(new double[]{0, 0, 0, 0, 0.25, 0.5, 0.75, 1, 1, 1, 1});

    foreach (var pt in curve.Evaluate())

    {

        Console.WriteLine(pt);

    }

}

Adds members to Aspose.ThreeD.Entities.NurbsCurve class

C#

 /// <summary>

/// Convert the nurbs surface to the mesh

/// </summary>

/// <returns></returns>

public Aspose.ThreeD.Entities.Mesh ToMesh()

Adds members to Aspose.ThreeD.Transform class

Some FBX files contain a non-zero pre/post rotation value for nodes, these two properties exposes them to the user and allow you to manipulate them.

C#

 /// <summary>

/// Gets or sets the pre-rotation represented in degree

/// </summary>

Aspose.ThreeD.Utilities.Vector3 PreRotation{ get;set;}

/// <summary>

/// Gets or sets the post-rotation represented in degree

/// </summary>

Aspose.ThreeD.Utilities.Vector3 PostRotation{ get;set;}

Adds members to Aspose.ThreeD.Utilities.MathUtils class

C#

 /// <summary>

/// Convert a number from radian to degree

/// </summary>

/// <param name="x">The x component in radian value.</param>

/// <param name="y">The y component in radian value.</param>

/// <param name="z">The z component in radian value.</param>

/// <returns>The degree value.</returns>

public static Aspose.ThreeD.Utilities.Vector3 ToDegree(double x, double y, double z)

/// <summary>

/// Convert a vector from degree to radian

/// </summary>

/// <param name="x">The x component in degree value.</param>

/// <param name="y">The y component in degree value.</param>

/// <param name="z">The z component in degree value.</param>

/// <returns>The radian value.</returns>

public static Aspose.ThreeD.Utilities.Vector3 ToRadian(double x, double y, double z)

The old code example:

C#

 MathUtils.ToDegree(new Vector3(x, y, z));

MathUtils.ToRadian(new Vector3(x, y, z));

It can now be simplified as:

C#

 MathUtils.ToDegree(x, y, z);

MathUtils.ToRadian(x, y, z);

Member updated in Aspose.ThreeD.Formats.GLTFSaveOptions

Old definition

 System.Func<Aspose.ThreeD.Shading.Material, Aspose.ThreeD.Shading.Material> MaterialConverter{ get;set;}

New definition

 //New definition

Aspose.ThreeD.Formats.MaterialConverter MaterialConverter{ get;set;}

The definition of MaterialConverter has the same signature to the old Func<Material, Material>:

C#

 /// <summary>

/// Custom converter to convert the geometry's original material to GLTF's PBR material.

/// </summary>

/// <param name="mat">Old material instance</param>

/// <returns>New material instance</returns>

public delegate Material MaterialConverter(Material mat);

Adds a new class Aspose.ThreeD.Entities.VertexElementVector4

This class is the new base class of VertexElementNormal, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent, VertexElementUV and VertexElementSpecular. It does not affect user’s side code.

Member is modified to Aspose.ThreeD.Entities.NurbsCurve class

Old definition

 System.Collections.Generic.List<double> KnotVectors{ get;}

New definition

 IArrayList<double> KnotVectors{ get;}

Member is modified to Aspose.ThreeD.Entities.NurbsDirection class

Old definition

 System.Collections.Generic.List<double> KnotVectors{ get;}

New definition

 IArrayList<double> KnotVectors{ get;}