Describe the problem
I am running the basic pipeline. Within the Structure From Motion step I observe that the files cannot be saved.
Log
[21:57:05.808979][info] Structure from motion took (s): 199.757000
[21:57:05.809136][info] Generating HTML report...
[21:57:05.883260][info] Export SfMData to disk: /home/skinkie/meshroom/MeshroomCache/StructureFromMotion/a884ca809714e827b0707bbf27d3881297458742/sfm.abc
[21:57:05.883387][error] Cannot save the SfM data file: '/home/skinkie/meshroom/MeshroomCache/StructureFromMotion/a884ca809714e827b0707bbf27d3881297458742/cloud_and_poses.abc'.
The file extension is not recognized.
[21:57:05.883455][error] Cannot save the SfM data file: '/home/skinkie/meshroom/MeshroomCache/StructureFromMotion/a884ca809714e827b0707bbf27d3881297458742/sfm.abc'.
The file extension is not recognized.
[21:57:05.962271][info] Structure from Motion results:
- # input images: 164
- # cameras calibrated: 146
- # poses: 146
- # landmarks: 53943
Desktop (please complete the following and other pertinent information):
I think that we can prevent this question if this could be revamped to a: Alembic is not compiled in.
#if ALICEVISION_IS_DEFINED(ALICEVISION_HAVE_ALEMBIC)
else if(extension == ".abc") // Alembic
{
AlembicImporter(filename).populateSfM(sfmData, partFlag);
status = true;
}
#endif // ALICEVISION_HAVE_ALEMBIC
@fabiencastan is there a way to make mushroom aware of the build conf of AV and e.g, avoid using alembic?
@skinkie yes, you need to build AV with Alembic.
@simogasp No, the extension is abc in many places and is not exposed as an option.
We should maybe switch the ALICEVISION_USE_ALEMBIC from AUTO to ON. So by default, ensure people build with Alembic and they can explicitly disable the dependency if they don't need it.
@skinkie yes, you need to build AV with Alembic.
Yes, if only I knew what went wrong because I didn't do it. Would a slight change in AliceVision be acceptable where the #ifdev would explicitly return in an error when loading/saving a file?
@simogasp No, the extension is abc in many places and is not exposed as an option.
We should maybe switch the ALICEVISION_USE_ALEMBIC from AUTO to ON. So by default, ensure people build with Alembic and they can explicitly disable the dependency if they don't need it.
It seems that the code does not fall back to building the dependency if the system does not have it. I hope with ON this can be guaranteed.
Oh, you're right. I didn't pay attention to the code!
We should probably do something like:
else if(extension == ".abc") // Alembic
{
#if ALICEVISION_IS_DEFINED(ALICEVISION_HAVE_ALEMBIC)
AlembicImporter(filename).populateSfM(sfmData, partFlag);
status = true;
#else
ALICEVISION_THROW_ERROR("Cannot load the ABC file: \""<< filename <<"\", AliceVision is built without Alembic support.");
#endif // ALICEVISION_HAVE_ALEMBIC
}
Keep open.