DATAKIT API  V2025.1
FBX Write Sample
//start_of_mainfbxmeshwritemain
Dtk_ErrorStatus FbxwTwoMeshes( const Dtk_string& outputFileName )
{ // SAMPLE 1
Dtk_MeshPtr CubeMesh, CylinderMesh;
Dtk_bool useless; // useless for this sample
// Cube Sample
// Cylinder Sample
CylinderMesh = sampleWriter::CreateMeshCylinder( 30 );
// First we initialize writing with name of files and protection fonction if needed (3rd parameter)
Dtk_FBXWriter Fb( outputFileName, err );
if( err != dtkNoError )
return err;
// Rootnode creation
Fb.OpenInstance( "RootNode", -1, useless );
// from this node, create a Child for the cube, and naming it "Cube"
Fb.OpenInstance( "Cube", -1, useless );
// write the cube
Fb.WriteMesh( CubeMesh );
// close the cube node
Fb.CloseLastInstance();
// from root node again, create a Child for the cylinder, and naming it "Cylinder"
Fb.OpenInstance( "Cylinder", -1, useless );
// write the cube
Fb.WriteMesh( CylinderMesh );
// close the cube node
Fb.CloseLastInstance();
// Rootnode closing.
Fb.CloseLastInstance();
// CLeaning class save file
return dtkNoError;
}
Dtk_ErrorStatus FbxwInstances( const Dtk_string& outputFileName )
{ // SAMPLE 2
Dtk_MeshPtr CubeMesh;
// Cube Sample
Dtk_transfo cubetransfo;
Dtk_bool useless, wasreinstancied; // useless for this sample
// For this sample, i will write 10 instances of cube.
// the matrix given is shifted in all iterations
// Inside the for below, we give an ID to OpenInstance. Then we add the cube, and close the child.
// For all others instances, we give the same ID to OpenInstance, and just close the child. Fbx Writer will recognize the ID and automatic reinstance the cube with another matrix.
// First we initialize writing with name of files and protection fonction if needed (3rd parameter)
Dtk_FBXWriter Fb( outputFileName, err );
if( err != dtkNoError )
return err;
Fb.OpenInstance( "RootNode", -1, useless );
int i;
for( i = 0; i < 10; i++ )
{
Fb.OpenInstance( "Cube", 1, wasreinstancied, cubetransfo ); // Giving ID 1
if( !wasreinstancied )
{
Fb.WriteMesh( CubeMesh );
}
Fb.CloseLastInstance();
cubetransfo.addTranslate( Dtk_dir( 10, 0, 0 ) ); // shift matrix.
}
Fb.CloseLastInstance();
return dtkNoError;
}
int
FbxWriteSample( const Dtk_string &inResultDirectory )
{
Dtk_string outputDirectory, fileName;
cout << endl << "----------------------------------------------" << endl;
// Choosing output directory and file name
outputDirectory = inResultDirectory + L"dtk/Fbx/";
outputDirectory.FixPathSeparator();
outputDirectory.mkdir();
cout << "Fbx Write start" << endl;
// sample 1 : just wirte 2 meshes
fileName = outputDirectory + L"twomeshes.fbx";
Dtk_ErrorStatus err = FbxwTwoMeshes( fileName );
if( err == dtkNoError )
cout << "=> " << fileName.c_str() << endl;
else
cout << "error : " << dtkTypeError( err ).c_str() << endl;
// sample 2 : write instances
fileName = outputDirectory + L"twomeshes.fbx";
err = FbxwInstances( fileName );
if( err == dtkNoError )
cout << "=> " << fileName.c_str() << endl;
else
cout << "error : " << dtkTypeError( err ).c_str() << endl;
cout << "Fbx Write end" << endl;
return err;
}
//end_of_mainfbxmeshwrite
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
sampleWriter::CreateMeshCube
Dtk_MeshPtr CreateMeshCube()
Mesh Cube sample.
Definition: testcreatemesh.cpp:207
FbxwInstances
Dtk_ErrorStatus FbxwInstances(const Dtk_string &outputFileName)
Definition: testlibfbxwrite.cpp:58
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:58
FbxWriteSample
int FbxWriteSample(const Dtk_string &inResultDirectory)
Definition: testlibfbxwrite.cpp:92
Dtk_bool
char Dtk_bool
Definition: define.h:725
Dtk_FBXWriter
FBX Writer main class.
Definition: fbxw.hpp:10
FbxwTwoMeshes
Dtk_ErrorStatus FbxwTwoMeshes(const Dtk_string &outputFileName)
Definition: testlibfbxwrite.cpp:17
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_SmartPtr
Definition: util_ptr_dtk.hpp:37
dtkTypeError
Dtk_string dtkTypeError(Dtk_Int32 errNumero)
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
sampleWriter::CreateMeshCylinder
Dtk_MeshPtr CreateMeshCylinder(int nbpoints)
Mesh Cylinder sample.
Definition: testcreatemesh.cpp:337
Dtk_string::mkdir
int mkdir() const
File Utility : Create a Directory.
Dtk_string::FixPathSeparator
void FixPathSeparator()
File Utility : Fixes path separator consistency. It lets you replace the '\' or '/' by the OS needed ...
Dtk_transfo::addTranslate
void addTranslate(const Dtk_dir &V)
Translate the Dtk_transfo.
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:140
Dtk_dir
This is a mathematical direction class.
Definition: dtk_dir.hpp:15