Aspose.3D
17.8.0
See the version list below for details.
dotnet add package Aspose.3D --version 17.8.0
NuGet\Install-Package Aspose.3D -Version 17.8.0
<PackageReference Include="Aspose.3D" Version="17.8.0" />
paket add Aspose.3D --version 17.8.0
#r "nuget: Aspose.3D, 17.8.0"
// Install Aspose.3D as a Cake Addin #addin nuget:?package=Aspose.3D&version=17.8.0 // Install Aspose.3D as a Cake Tool #tool nuget:?package=Aspose.3D&version=17.8.0
Aspose.3D is a class library for working with 3D files. It allows developers to create/manipulate/render 3D scene and work with FBX,STL,OBJ,3DS,U3D,DAE,PDF,DRC,GLTF files. It allows you to open files and manipulate the elements in the 3D scene, from line,mesh,nurbs curve, to more complex elements animation, and then export to FBX ASCII, FBX binary, STL ASCII, STL binary, Collada, Wavefront .obj, 3DS, PDF formats, glTF, glTF2, Google Draco.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net35 is compatible. net40 is compatible. net403 was computed. net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
This package has no dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on Aspose.3D:
Package | Downloads |
---|---|
Aspose.Total
Aspose.Total for .NET is the most complete package of all .NET file format APIs offered by Aspose. It empowers developers to create, edit, render, print and convert between a wide range of popular document formats within any .NET, C#, ASP.NET and VB.NET applications. |
|
nilnul.geometry._stereo_._LIB_
cubic/3dimension geometry |
|
Aspose.3D.Codec.SkiaSharp
This plugin allows you to use SkiaSharp's image codec to encode and decode textures. |
|
Pilz.Simple3DFileParser
Package Description |
|
nilnul._physic_._DLL_
physics fundamentals, including force, mass, gravity, heating, etc |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
24.10.0 | 986 | 10/30/2024 |
24.9.0 | 2,634 | 9/29/2024 |
24.8.0 | 2,433 | 8/30/2024 |
24.7.1 | 1,008 | 8/7/2024 |
24.7.0 | 117 | 7/31/2024 |
24.6.0 | 5,552 | 7/1/2024 |
24.5.0 | 5,697 | 5/29/2024 |
24.4.0 | 3,446 | 4/29/2024 |
24.3.0 | 5,263 | 3/26/2024 |
24.2.0 | 3,958 | 2/28/2024 |
24.1.0 | 5,003 | 1/30/2024 |
23.12.0 | 7,561 | 12/28/2023 |
23.11.1 | 1,270 | 12/8/2023 |
23.11.0 | 7,815 | 11/29/2023 |
23.10.0 | 8,951 | 10/30/2023 |
23.9.0 | 8,056 | 9/27/2023 |
23.8.0 | 10,240 | 8/25/2023 |
23.7.0 | 10,790 | 7/26/2023 |
23.6.0 | 9,782 | 6/26/2023 |
23.5.0 | 7,211 | 5/26/2023 |
23.4.0 | 8,575 | 4/13/2023 |
23.3.0 | 8,268 | 3/16/2023 |
23.2.0 | 7,888 | 2/14/2023 |
23.1.0 | 13,638 | 1/18/2023 |
22.12.0 | 11,018 | 12/21/2022 |
22.11.0 | 11,600 | 11/17/2022 |
22.10.0 | 12,375 | 10/14/2022 |
22.9.0 | 8,463 | 9/9/2022 |
22.8.0 | 23,682 | 8/3/2022 |
22.7.0 | 7,510 | 7/8/2022 |
22.6.0 | 12,008 | 6/10/2022 |
22.5.0 | 13,735 | 5/9/2022 |
22.4.0 | 8,066 | 4/13/2022 |
22.3.0 | 20,195 | 3/4/2022 |
22.2.0 | 9,757 | 2/7/2022 |
22.1.0 | 10,683 | 1/5/2022 |
21.12.0 | 2,646 | 12/3/2021 |
21.11.0 | 9,923 | 11/11/2021 |
21.10.0 | 7,990 | 10/9/2021 |
21.9.0 | 13,933 | 9/6/2021 |
21.8.0 | 16,383 | 8/6/2021 |
21.7.0 | 14,301 | 7/5/2021 |
21.6.0 | 4,473 | 6/7/2021 |
21.5.0 | 11,410 | 5/6/2021 |
21.4.0 | 11,838 | 4/2/2021 |
21.3.0 | 8,747 | 3/4/2021 |
21.2.1 | 11,529 | 2/14/2021 |
21.2.0 | 1,811 | 2/7/2021 |
21.1.0 | 3,624 | 1/8/2021 |
20.12.2 | 3,792 | 12/10/2020 |
20.12.0 | 1,735 | 12/5/2020 |
20.11.0 | 8,759 | 11/3/2020 |
20.9.0 | 4,148 | 9/4/2020 |
20.8.0 | 3,264 | 8/11/2020 |
20.7.0 | 3,283 | 7/3/2020 |
20.6.1 | 2,647 | 6/16/2020 |
20.6.0 | 3,367 | 6/8/2020 |
20.5.0 | 10,295 | 5/12/2020 |
20.4.0 | 4,884 | 4/9/2020 |
20.3.0 | 4,274 | 3/3/2020 |
20.2.1 | 3,597 | 2/14/2020 |
20.2.0 | 2,076 | 2/10/2020 |
20.1.0 | 5,081 | 1/2/2020 |
19.12.2 | 3,697 | 12/10/2019 |
19.12.0 | 1,742 | 12/9/2019 |
19.11.0 | 2,300 | 11/5/2019 |
19.10.0 | 44,730 | 10/9/2019 |
19.9.0 | 2,385 | 9/9/2019 |
19.8.0 | 2,225 | 8/2/2019 |
19.7.0 | 2,373 | 7/8/2019 |
19.6.0 | 2,968 | 6/5/2019 |
19.5.0 | 2,635 | 5/12/2019 |
19.4.0 | 2,202 | 4/4/2019 |
19.3.0 | 2,205 | 3/8/2019 |
19.2.0 | 2,897 | 2/2/2019 |
19.1.0 | 2,083 | 1/9/2019 |
18.12.0 | 2,308 | 12/6/2018 |
18.11.0 | 2,357 | 11/6/2018 |
18.10.0 | 2,248 | 10/9/2018 |
18.9.0 | 2,657 | 9/6/2018 |
18.8.0 | 2,234 | 8/8/2018 |
18.7.0 | 2,616 | 7/11/2018 |
18.6.0 | 3,249 | 6/11/2018 |
18.5.0 | 2,670 | 5/10/2018 |
18.4.0 | 2,551 | 4/16/2018 |
18.3.0 | 2,350 | 3/14/2018 |
18.2.0 | 2,407 | 2/8/2018 |
18.1.0 | 2,593 | 1/8/2018 |
17.12.0 | 2,345 | 12/8/2017 |
17.11.0 | 2,806 | 11/6/2017 |
17.10.0 | 2,286 | 10/10/2017 |
17.9.0 | 2,340 | 9/7/2017 |
17.8.0 | 2,267 | 8/8/2017 |
17.7.0 | 2,364 | 7/17/2017 |
17.6.0 | 2,961 | 6/5/2017 |
17.5.0 | 2,547 | 5/8/2017 |
17.4.0 | 2,451 | 4/5/2017 |
17.3.0 | 2,312 | 3/6/2017 |
17.2.0 | 2,345 | 2/15/2017 |
17.1.0 | 2,406 | 1/5/2017 |
16.12.0 | 2,633 | 12/4/2016 |
16.11.0 | 2,498 | 11/1/2016 |
16.9.0 | 2,342 | 9/29/2016 |
2.1.0 | 2,378 | 8/30/2016 |
2.0.0 | 2,504 | 8/2/2016 |
1.7.0 | 2,338 | 6/29/2016 |
1.6.1 | 2,670 | 5/26/2016 |
1.5.0 | 2,453 | 4/27/2016 |
1.4.0 | 2,450 | 4/1/2016 |
1.3.0 | 2,472 | 2/23/2016 |
1.2.0 | 2,479 | 12/18/2015 |
1.1.0 | 2,636 | 11/27/2015 |
1.0.0 | 2,566 | 10/26/2015 |
This page contains release notes for Aspose.3D for .NET 17.8.
Other Improvements and Changes
Key Summary Category
THREEDNET-279 Render scene into a cube map with 6 faces.
New feature
THREEDNET-280 Add post-processing of equirectangular projection. New feature
THREEDNET-281 Render cube map to fisheye. New feature
THREEDNET-276 Incorrect conversion of OBJ to GLTF and GLB. Bug
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.
Methods marked as obsoleted and will be removed in the end of this year 2017
Before the 17.8 all texture units (used by the renderer) are represented by the interface ITextureUnit but this design is not working well for the cube map and 3D texture in the future (not implemented yet), so these methods are all marked as obsolete, to make sure that the code will not break the compiler, developers should use the methods with same name from ITexture1D/ITexture2D/ITextureCubemap.
C#
interface ITextureUnit
{
void Load(TextureData bitmap);
void Save(string path, ImageFormat format);
void Save(Bitmap bitmap);
Bitmap ToBitmap();
}
Added new enum type Aspose.ThreeD.Render.CubeFace
This type works with Aspose.ThreeD.Render.CubeFaceData<> and Aspose.ThreeD.Render.ITextureCubemap to access data as per the face of cubemap.
C#
/// <summary>
/// Each face of the cube map texture
/// </summary>
public enum CubeFace
{
/// <summary>
/// The +X face
/// </summary>
PositiveX,
/// <summary>
/// The -X face
/// </summary>
NegativeX,
/// <summary>
/// The +Y face
/// </summary>
PositiveY,
/// <summary>
/// The -Y face
/// </summary>
NegativeY,
/// <summary>
/// The +Z face
/// </summary>
PositiveZ,
/// <summary>
/// The -Z face
/// </summary>
NegativeZ
}
Added new class Aspose.ThreeD.Render.CubeFaceData<>
This class is a generic class to describe per cubemap face's data like file name or bitmap.
Added new class Aspose.ThreeD.Render.ITextureCubemap
C#
/// <summary>
/// Cube map texture
/// </summary>
public interface ITextureCubemap : ITextureUnit
{
/// <summary>
/// Load texture content from specified files
/// </summary>
/// <param name="fileNames"></param>
void Load(CubeFaceData<string> fileNames);
/// <summary>
/// Load texture content from specified <see cref="TextureData"/>
/// </summary>
/// <param name="data"></param>
void Load(CubeFaceData<TextureData> data);
/// <summary>
/// Load the data into specified face
/// </summary>
/// <param name="face"></param>
/// <param name="data"></param>
void Load(CubeFace face, TextureData data);
/// <summary>
/// Save the cube's sides texture content to external files.
/// </summary>
/// <param name="path">File names to save.</param>
/// <param name="format">Image format</param>
void Save(CubeFaceData<string> path, ImageFormat format);
/// <summary>
/// Save the texture content to memory.
/// </summary>
/// <param name="bitmap">Result bitmap to save.</param>
void Save(CubeFaceData<Bitmap> bitmap);
/// <summary>
/// Save the specified side to memory
/// </summary>
/// <param name="side"></param>
/// <param name="bitmap"></param>
void Save(CubeFace side, Bitmap bitmap);
/// <summary>
/// Convert the texture unit to <see cref="Bitmap"/> instance
/// </summary>
Bitmap ToBitmap(CubeFace side);
}
C#
//The model used in this sample can be found at https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/1.0/VC/glTF-Binary
string path = @"D:\Projects\glTF-Sample-Models\1.0\VC\glTF-Binary\VC.glb";
//load the scene
Scene scene = new Scene(path);
//create a camera for capturing the cube map
Camera cam = new Camera(ProjectionType.Perspective)
{
NearPlane = 0.1,
FarPlane = 200,
RotationMode = RotationMode.FixedDirection
};
scene.RootNode.CreateChildNode(cam).Transform.Translation = new Vector3(5, 6, 0);
//create two lights to illuminate the scene
scene.RootNode.CreateChildNode(new Light() {LightType = LightType.Point}).Transform.Translation = new Vector3(-10, 7, -10);
scene.RootNode.CreateChildNode(new Light()
{
Color = new Vector3(Color.CadetBlue)
}).Transform.Translation = new Vector3(49, 0, 49);
//create a renderer
using (var renderer = Renderer.CreateRenderer())
{
//Create a cube map render target with depth texture, depth is required when rendering a scene.
IRenderTexture rt = renderer.RenderFactory.CreateCubeRenderTexture(new RenderParameters(false), 512, 512);
//a viewport is required on the render target
rt.CreateViewport(cam, RelativeRectangle.FromScale(0, 0, 1, 1));
renderer.Render(rt);
//now lets get the cubemap texture
ITextureCubemap cubemap = rt.Targets[0] as ITextureCubemap;
//we can directly save each face to disk by specifing the file name
CubeFaceData<string> fileNames = new CubeFaceData<string>()
{
Right = "right.png",
Left = "left.png",
Back = "back.png",
Front = "front.png",
Bottom = "bottom.png",
Top = "top.png"
};
//and call Save method
cubemap.Save(fileNames, ImageFormat.Png);
//or we just need to use the render result in memory, we can save it to CubeFaceData<Bitmap>
CubeFaceData<Bitmap> bitmaps = new CubeFaceData<Bitmap>();
cubemap.Save(bitmaps);
bitmaps.Back.Save("back.bmp", ImageFormat.Bmp);
}
Added new class Aspose.ThreeD.Render.ITexture1D
This interface is used to represent an 1D texture object
Added new class Aspose.ThreeD.Render.ITexture2D
This interface is used to represent a 2D texture object
Added new methods to class Aspose.ThreeD.Render.RenderFactory:C#
// this is an overloaded version for method IRenderTexture CreateRenderTexture(Aspose.ThreeD.Render.RenderParameters parameters, int targets, int width, int height) with targets to 1
public Aspose.ThreeD.Render.IRenderTexture CreteRenderTexture(Aspose.ThreeD.Render.RenderParameters parameters, int width, int height)
//Create a render target that will render the scene into a cube map
public Aspose.ThreeD.Render.IRenderTexture CreateCubeRenderTexture(Aspose.ThreeD.Render.RenderParameters parameters, int width, int height)
// allow user to create ITexture1D/ITexture2D/ITextureCubemap manually
public Aspose.ThreeD.Render.ITextureUnit CreateTextureUnit(Aspose.ThreeD.Render.TextureType textureType)
Added new method in class Aspose.ThreeD.Render.Renderer:
In the previous versions the post processing can only be used by providing a chain of post processing effects to Aspose.ThreeD.Render.Renderer.PostProcessings, now with this method user can manually execute the post processing procedure, this is useful in the new feature THREEDNET-280 and THREEDNET-281, means you can render a cubemap into a panaroma image or fisheye image.
C#
public void Execute(Aspose.ThreeD.Render.PostProcessing postProcessing, Aspose.ThreeD.Render.IRenderTarget result)
Generate a Panaroma Image in 3D Scene
Developers can use 3rd party tools like three.js/Pano2VR to visualize the result.
C#
//The model used in this sample can be found at https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/1.0/VC/glTF-Binary
string path = @"D:\Projects\glTF-Sample-Models\1.0\VC\glTF-Binary\VC.glb";
//load the scene
Scene scene = new Scene(path);
//create a camera for capturing the cube map
Camera cam = new Camera(ProjectionType.Perspective)
{
NearPlane = 0.1,
FarPlane = 200,
RotationMode = RotationMode.FixedDirection
};
scene.RootNode.CreateChildNode(cam).Transform.Translation = new Vector3(5, 6, 0);
//create two lights to illuminate the scene
scene.RootNode.CreateChildNode(new Light() {LightType = LightType.Point}).Transform.Translation = new Vector3(-10, 7, -10);
scene.RootNode.CreateChildNode(new Light()
{
Color = new Vector3(Color.CadetBlue)
}).Transform.Translation = new Vector3(49, 0, 49);
//create a renderer
using (var renderer = Renderer.CreateRenderer())
{
//Create a cube map render target with depth texture, depth is required when rendering a scene.
IRenderTexture rt = renderer.RenderFactory.CreateCubeRenderTexture(new RenderParameters(false), 512, 512);
//create a 2D texture render target with no depth texture used for image processing
IRenderTexture final = renderer.RenderFactory.CreateRenderTexture(new RenderParameters(false, 32, 0, 0), 1024 * 3 , 1024);
//a viewport is required on the render target
rt.CreateViewport(cam, RelativeRectangle.FromScale(0, 0, 1, 1));
renderer.Render(rt);
//execute the equirectangular projection post-processing with the previous rendered cube map as input
PostProcessing equirectangular = renderer.GetPostProcessing("equirectangular");
//Specify the cube map rendered from the scene as this post processing's input
equirectangular.Input = rt.Targets[0];
//Execute the post processing effect and save the result to render target final
renderer.Execute(equirectangular, final);
//save the texture into disk
((ITexture2D)final.Targets[0]).Save("panaroma.png", ImageFormat.Png);
}
Generate Fisheye Lens Effect in 3D Scene
C#
//The model used in this sample can be found at https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/1.0/VC/glTF-Binary
string path = @"D:\Projects\glTF-Sample-Models\1.0\VC\glTF-Binary\VC.glb";
//load the scene
Scene scene = new Scene(path);
//create a camera for capturing the cube map
Camera cam = new Camera(ProjectionType.Perspective)
{
NearPlane = 0.1,
FarPlane = 200,
RotationMode = RotationMode.FixedDirection
};
scene.RootNode.CreateChildNode(cam).Transform.Translation = new Vector3(5, 6, 0);
//create two lights to illuminate the scene
scene.RootNode.CreateChildNode(new Light() {LightType = LightType.Point}).Transform.Translation = new Vector3(-10, 7, -10);
scene.RootNode.CreateChildNode(new Light()
{
Color = new Vector3(Color.CadetBlue)
}).Transform.Translation = new Vector3(49, 0, 49);
//create a renderer
using (var renderer = Renderer.CreateRenderer())
{
//Create a cube map render target with depth texture, depth is required when rendering a scene.
IRenderTexture rt = renderer.RenderFactory.CreateCubeRenderTexture(new RenderParameters(false), 512, 512);
//create a 2D texture render target with no depth texture used for image processing
IRenderTexture final = renderer.RenderFactory.CreateRenderTexture(new RenderParameters(false, 32, 0, 0), 1024, 1024);
//a viewport is required on the render target
rt.CreateViewport(cam, RelativeRectangle.FromScale(0, 0, 1, 1));
renderer.Render(rt);
//execute the fisheye projection post-processing with the previous rendered cube map as input
//the fisheye can have field of view more than 180 degree, so a cube map with all direction is required.
PostProcessing fisheye = renderer.GetPostProcessing("fisheye");
// we can change the fov to 360 instead of the default value 180.
fisheye.FindProperty("fov").Value = 360.0;
//Specify the cube map rendered from the scene as this post processing's input
fisheye.Input = rt.Targets[0];
//Execute the post processing effect and save the result to render target final
renderer.Execute(fisheye, final);
//save the texture into disk
((ITexture2D)final.Targets[0]).Save("fisheye.png", ImageFormat.Png);
}
Added methods to struct Aspose.ThreeD.Utilities.FVector3:
These are the two primitive operations of vectors.
C#
//Calculate the normalized vector of the FVector3, equivalent implementation of Vector3.Normalize
public Aspose.ThreeD.Utilities.FVector3 Normalize()
//Calculate the cross product of two FVector3, equivalent implementation of Vector3.Cross
public Aspose.ThreeD.Utilities.FVector3 Cross(Aspose.ThreeD.Utilities.FVector3 rhs)
Usage Examples
Please check the list of help topics added or updated in the Aspose.3D Wiki docs:
https://docs.aspose.com/display/3dnet/Aspose.3D+for+.NET+17.8+Release+Notes