HTML
TGA
PDF
XML
TGA
TGA
Create your Lithophane from TGA via C#
Build your own .NET apps to create your lithophane from TGA files using server-side APIs.
How to Create your Lithophane from TGA File Using C#
In order to create your lithophane from TGA file, we’ll use
API which is a feature-rich, powerful and easy to use API for C# platform to be used with create your lithophane. Open
package manager, search for Aspose.3D and install. You may also use the following command from the Package Manager Console.
Package Manager Console Command
PM> Install-Package Aspose.3D
Steps to Create your Lithophane from TGA via C#
Aspose.3D makes it easy for the developers to create your lithophane from the TGA file with just few lines of code.
- Create some new parameters and create a Mesh object
- Perform computational operations on Mesh objects
- TGA file loads 3d scene through Mesh class
- Call the Scene.Save method with object
System Requirements
Aspose.3D for .NET is supported on all major operating systems. Just make sure that you have the following prerequisites.
- Microsoft Windows or a compatible OS with .NET Framework, .NET Core, Mono
- Development environment like Microsoft Visual Studio
- Aspose.3D for .NET referenced in your project
C# code to Create your Lithophane from TGA
//The original image that needs to be uploaded and the 3d file output after saving
string file = "template.tga";
string output =System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".fbx";
//Create some new parameters
var td= TextureData.FromFile(file);
const float nozzleSize = 0.9f;//0.2mm
const float layerHeight = 0.2f;
var grayscale = ToGrayscale(td);
const float width = 120.0f;//canvas width is 200.0mm
float height = width / td.Width * td.Height;
float thickness = 10.0f;//10mm thickness
float layers = thickness / layerHeight;
int widthSegs = (int)Math.Floor(width / nozzleSize);
int heightSegs = (int)Math.Floor(height / nozzleSize);
//Perform computational operations on Mesh objects
var mesh = new Mesh();
for (int y = 0; y < heightSegs; y++)
{
float dy = (float)y / heightSegs;
for (int x = 0; x < widthSegs; x++)
{
float dx = (float)x / widthSegs;
float gray = Sample(grayscale, td.Width, td.Height, dx, dy);
float v = (1 - gray) * thickness;
mesh.ControlPoints.Add(new Vector4(dx * width, dy * height, v));
}
}
for (int y = 0; y < heightSegs - 1; y++)
{
int row = (y * heightSegs);
int ptr = row;
for (int x = 0; x < widthSegs - 1; x++)
{
mesh.CreatePolygon(ptr, ptr + widthSegs, ptr + 1);
mesh.CreatePolygon(ptr + 1, ptr + widthSegs, ptr + widthSegs + 1);
ptr++;
}
}
//Generate 3d scene and save objects
var scene = new Scene(mesh);
scene.Save(output, FileFormat.FBX7400ASCII);
//The sample method to call
static float Sample(float[,] data, int w, int h, float x, float y)
{
return data[(int)(x * w), (int)(y * h)];
}
//ToGrayscale method to call
static float[,] ToGrayscale(TextureData td)
{
var ret = new float[td.Width, td.Height];
var stride = td.Stride;
var data = td.Data;
var bytesPerPixel = td.BytesPerPixel;
for (int y = 0; y < td.Height; y++)
{
int ptr = y * stride;
for (int x = 0; x < td.Width; x++)
{
var v = (data[ptr] * 0.21f + data[ptr + 1] * 0.72f + data[ptr + 2] * 0.07f) / 255.0f;
ret[x, y] = v;
ptr += bytesPerPixel;
}
}
return ret;
}
About Aspose.3D for .NET API
Aspose.3D is a CAD and Gameware API to load, modify and convert 3D files. API is a standalone and does not require any any 3D modeling or rendering software. One can easily use API for Discreet3DS, WavefrontOBJ, STL (ASCII, Binary), Universal3D, FBX (ASCII, Binary), Collada, glTF, PLY, GLB, DirectX and more formats.Free App to Create your Lithophane from TGA
Check our live demos to Lithophane TGA with following benefits.
No need to download or setup anything
No need to write or compile code
Just upload TGA file and hit the "lithophane" button
Download TGA file from the link, if required
Other Supported App to Create your Lithophane from Formats
Using C#, One can also create your lithophane from many other file formats including.