Merge branch 'master' into assimpview_unicode

pull/2417/head
RichardTea 2019-04-17 10:48:37 +01:00
commit 00f1fd6f7c
7 changed files with 532 additions and 30 deletions

View File

@ -99,7 +99,7 @@ __Importers__:
Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default): Additionally, some formats are supported by dependency on non-free code or external SDKs (not built by default):
- [C4D](https://en.wikipedia.org/wiki/Cinema_4D) (https://github.com/assimp/assimp/wiki/Cinema4D-&-Melange) - [C4D](https://en.wikipedia.org/wiki/Cinema_4D) (https://github.com/assimp/assimp/wiki/Cinema4D-&-Melange) IMporting geometry + node hierarchy are currently supported
__Exporters__: __Exporters__:

View File

@ -630,10 +630,11 @@ void MeshGeometry::ReadVertexDataMaterials(std::vector<int>& materials_out, cons
materials_out.clear(); materials_out.clear();
} }
m_materials.assign(m_vertices.size(),materials_out[0]); materials_out.resize(m_vertices.size());
std::fill(materials_out.begin(), materials_out.end(), materials_out.at(0));
} }
else if (MappingInformationType == "ByPolygon" && ReferenceInformationType == "IndexToDirect") { else if (MappingInformationType == "ByPolygon" && ReferenceInformationType == "IndexToDirect") {
m_materials.resize(face_count); materials_out.resize(face_count);
if(materials_out.size() != face_count) { if(materials_out.size() != face_count) {
FBXImporter::LogError(Formatter::format("length of input data unexpected for ByPolygon mapping: ") FBXImporter::LogError(Formatter::format("length of input data unexpected for ByPolygon mapping: ")

File diff suppressed because one or more lines are too long

View File

@ -1,6 +1,6 @@
ply ply
format ascii 1.0 format ascii 1.0
comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.4208963464) comment Created by Open Asset Import Library - http://assimp.sf.net (v4.1.412856994)
element vertex 8 element vertex 8
property float x property float x
property float y property float y

View File

@ -52,18 +52,17 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
class ColladaExportCamera : public ::testing::Test { class ColladaExportCamera : public ::testing::Test {
public: public:
void SetUp() override{
virtual void SetUp()
{
ex = new Assimp::Exporter(); ex = new Assimp::Exporter();
im = new Assimp::Importer(); im = new Assimp::Importer();
} }
virtual void TearDown() void TearDown() override {
{
delete ex; delete ex;
ex = nullptr;
delete im; delete im;
im = nullptr;
} }
protected: protected:
@ -71,12 +70,11 @@ protected:
Assimp::Importer* im; Assimp::Importer* im;
}; };
TEST_F(ColladaExportCamera, testExportCamera) TEST_F(ColladaExportCamera, testExportCamera) {
{
const char* file = "cameraExp.dae"; const char* file = "cameraExp.dae";
const aiScene* pTest = im->ReadFile(ASSIMP_TEST_MODELS_DIR "/Collada/cameras.dae", aiProcess_ValidateDataStructure); const aiScene* pTest = im->ReadFile(ASSIMP_TEST_MODELS_DIR "/Collada/cameras.dae", aiProcess_ValidateDataStructure);
ASSERT_TRUE(pTest!=NULL); ASSERT_NE( nullptr, pTest );
ASSERT_TRUE(pTest->HasCameras()); ASSERT_TRUE(pTest->HasCameras());
@ -89,7 +87,7 @@ TEST_F(ColladaExportCamera, testExportCamera)
std::unique_ptr<aiVector3D[]> pos( new aiVector3D[ origNumCams ] ); std::unique_ptr<aiVector3D[]> pos( new aiVector3D[ origNumCams ] );
for (size_t i = 0; i < origNumCams; i++) { for (size_t i = 0; i < origNumCams; i++) {
const aiCamera *orig = pTest->mCameras[ i ]; const aiCamera *orig = pTest->mCameras[ i ];
ASSERT_TRUE( orig != nullptr ); ASSERT_NE(nullptr, orig );
origFOV[ i ] = orig->mHorizontalFOV; origFOV[ i ] = orig->mHorizontalFOV;
orifClipPlaneNear[ i ] = orig->mClipPlaneNear; orifClipPlaneNear[ i ] = orig->mClipPlaneNear;
@ -99,7 +97,7 @@ TEST_F(ColladaExportCamera, testExportCamera)
} }
const aiScene* imported = im->ReadFile(file, aiProcess_ValidateDataStructure); const aiScene* imported = im->ReadFile(file, aiProcess_ValidateDataStructure);
ASSERT_TRUE(imported!=NULL); ASSERT_NE(nullptr, imported );
EXPECT_TRUE( imported->HasCameras() ); EXPECT_TRUE( imported->HasCameras() );
EXPECT_EQ( origNumCams, imported->mNumCameras ); EXPECT_EQ( origNumCams, imported->mNumCameras );
@ -119,5 +117,3 @@ TEST_F(ColladaExportCamera, testExportCamera)
} }
#endif // ASSIMP_BUILD_NO_EXPORT #endif // ASSIMP_BUILD_NO_EXPORT

View File

@ -114,3 +114,18 @@ TEST_F(utFBXImporterExporter, importUnitScaleFactor) {
scene->mMetaData->Get("UnitScaleFactor", factor); scene->mMetaData->Get("UnitScaleFactor", factor);
EXPECT_DOUBLE_EQ(500.0, factor); EXPECT_DOUBLE_EQ(500.0, factor);
} }
TEST_F(utFBXImporterExporter, importEmbeddedAsciiTest) {
// see https://github.com/assimp/assimp/issues/1957
Assimp::Importer importer;
const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/embedded_ascii/box.FBX", aiProcess_ValidateDataStructure);
EXPECT_NE(nullptr, scene);
EXPECT_EQ(1, scene->mNumMaterials);
aiMaterial *mat = scene->mMaterials[0];
ASSERT_NE(nullptr, mat);
aiString path;
aiTextureMapMode modes[2];
EXPECT_EQ(aiReturn_SUCCESS, mat->GetTexture(aiTextureType_DIFFUSE, 0, &path, nullptr, nullptr, nullptr, nullptr, modes));
}