Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
84e5644
{Cgltf,TinyGltf}Importer: test phongMaterialFallback config default v…
pezcode Dec 7, 2021
cfcc9b9
{Cgltf,TinyGltf}Importer: doc++
pezcode Dec 13, 2021
6ea6321
{Cgltf,TinyGltf}Importer: fix unlit material test
pezcode Dec 16, 2021
3056bc6
AssimpImporter: make this warning more intuitive
pezcode Dec 13, 2021
0ae42b4
AssimpImporter: test large material name/size
pezcode Dec 13, 2021
56dc4d9
AssimpImporter: cleanup
pezcode Dec 13, 2021
354621b
CgltfImporter: simplify extension parsing
pezcode Dec 13, 2021
63d7be9
CgltfImporter: use StringView for texture attribute names
pezcode Dec 13, 2021
3d1ed99
CgltfImporter: import unknown material extensions as custom layers
pezcode Dec 13, 2021
d9f5422
CgltfImporter: import material extensions handled by cgltf
pezcode Dec 14, 2021
385cc00
CgltfImporter: add docs for unrecognized material extensions
pezcode Dec 14, 2021
40cf41d
CgltfImporter: ignore empty extension and attribute names
pezcode Dec 14, 2021
f5592c2
CgltfImporter: check texture material attribute size
pezcode Dec 14, 2021
c5756b7
CgltfImporter: test default scale being skipped for custom texture at…
pezcode Dec 14, 2021
b9c7a21
CgltfImporter: minor
pezcode Dec 14, 2021
1bd21de
CgltfImporter: fix memory leak
pezcode Dec 14, 2021
db8b395
CgltfImporter: always import custom extension factors
pezcode Dec 14, 2021
917e11f
CgltfImporter: test custom material extensions handled by cgltf
pezcode Dec 14, 2021
13f2d93
CgltfImporter: parse texture extensions less strictly
pezcode Dec 16, 2021
5919d83
CgltfImporter: test exponent notation detection and parsing
pezcode Dec 16, 2021
3d2617d
CgltfImporter: make LCOV happier
pezcode Dec 16, 2021
d3a920c
CgltfImporter: handle duplicate attributes
pezcode Dec 16, 2021
06016e6
CgltfImporter: unindent some of this code
pezcode Dec 16, 2021
d846569
CgltfImporter: don't mark custom material layers as handled required …
pezcode Dec 22, 2021
70dc96f
CgltfImporter: use MAGNUM vendor extension prefix
pezcode Dec 22, 2021
f54513d
CgltfImporter: parse all custom material number primitives as float
pezcode Dec 22, 2021
eb45512
CgltfImporter: handle encoded strings in custom material data
pezcode Dec 22, 2021
e757bd5
AssimpImporter: directly compare output against empty string
pezcode Dec 22, 2021
c4633de
CgltfImporter: test materials more concisely
pezcode Dec 22, 2021
da05efe
CgltfImporter: also set custom layer prefix for cgltf-handled materials
pezcode Dec 22, 2021
33dc8d7
CgltfImporter: fix alignas position
pezcode Dec 22, 2021
e73b85e
CgltfImporter: update docs about parsing of unknown extension number …
pezcode Jan 7, 2022
9dbd66a
CgltfImporter: add some TODOs
pezcode Jan 9, 2022
6b17a30
CgltfImporter: test warnings in between valid material attributes
pezcode Jan 10, 2022
b85ea40
CgltfImporter: import material extras
pezcode Jan 10, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/MagnumPlugins/AssimpImporter/AssimpImporter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1617,7 +1617,8 @@ Containers::Optional<MaterialData> AssimpImporter::doMaterial(const UnsignedInt

/* +1 is null byte for the key */
if(valueSize + keyString.size() + 1 + sizeof(MaterialAttributeType) > sizeof(MaterialAttributeData)) {
Error{} << "Trade::AssimpImporter::material(): property" << keyString << "is too large with" << valueSize << "bytes, skipping";
Warning{} << "Trade::AssimpImporter::material(): property" << keyString <<
"is too large with" << valueSize + keyString.size() << "bytes, skipping";
continue;
}

Expand Down
28 changes: 19 additions & 9 deletions src/MagnumPlugins/AssimpImporter/Test/AssimpImporterTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -892,7 +892,7 @@ void AssimpImporterTest::animationGltfTicksPerSecondPatching() {
CORRADE_VERIFY(Containers::StringView{out.str()}.contains(
" ticks per second is incorrect for glTF, patching to 1000\n"));
} else
CORRADE_VERIFY(out.str().empty());
CORRADE_COMPARE(out.str(), "");
}

void AssimpImporterTest::animationFbxTicksPerSecondPatching() {
Expand All @@ -918,7 +918,7 @@ void AssimpImporterTest::animationFbxTicksPerSecondPatching() {
CORRADE_VERIFY(Containers::StringView{out.str()}.contains(
" ticks per second is incorrect for FBX, patching to 1000\n"));
} else
CORRADE_VERIFY(out.str().empty());
CORRADE_COMPARE(out.str(), "");
}

void AssimpImporterTest::animationDummyTracksRemovalEnabled() {
Expand Down Expand Up @@ -978,7 +978,7 @@ void AssimpImporterTest::animationDummyTracksRemovalEnabled() {
"Trade::AssimpImporter::animation(): ignoring dummy rotation track in animation 1, channel {}\n",
targets[2].channel, targets[2].channel)));
} else
CORRADE_VERIFY(out.str().empty());
CORRADE_COMPARE(out.str(), "");
}

void AssimpImporterTest::animationDummyTracksRemovalDisabled() {
Expand Down Expand Up @@ -2254,7 +2254,13 @@ void AssimpImporterTest::materialRaw() {
CORRADE_VERIFY(importer->openFile(Utility::Directory::join(ASSIMPIMPORTER_TEST_DIR, "material-raw.fbx")));
CORRADE_COMPARE(importer->materialCount(), 2);

Containers::Optional<MaterialData> material = importer->material("Custom_Types");
Containers::Optional<MaterialData> material;
std::ostringstream out;
{
Warning redirectWarning{&out};
material = importer->material("Custom_Types");
}

CORRADE_VERIFY(material);
CORRADE_COMPARE(material->types(), MaterialType{});
CORRADE_COMPARE(material->layerCount(), 1);
Expand Down Expand Up @@ -2288,22 +2294,26 @@ void AssimpImporterTest::materialRaw() {
CORRADE_COMPARE(material->attribute<Float>(2), 0.25f);
}

if(_assimpVersion < 500)
if(_assimpVersion < 500) {
CORRADE_WARN("This version of Assimp doesn't import raw FBX material properties.");
else {

CORRADE_COMPARE(out.str(), "");
} else {
/* Raw attributes taken directly from the FBX file, prefixed with "$raw.".
Seems to be the only importer that supports that. */
{
CORRADE_COMPARE(material->attributeName(3), "$raw.SomeColor"_s);
CORRADE_COMPARE(material->attributeType(3), MaterialAttributeType::Vector3);
CORRADE_COMPARE(material->attribute<Vector3>(3), (Vector3{0.1f, 0.2f, 0.3f}));
} {
CORRADE_EXPECT_FAIL_IF(_assimpVersion < 500,
"This version of Assimp doesn't import raw FBX material properties.");
CORRADE_COMPARE(material->attributeName(4), "$raw.SomeString"_s);
CORRADE_COMPARE(material->attributeType(4), MaterialAttributeType::String);
CORRADE_COMPARE(material->attribute<Containers::StringView>(4), "Ministry of Finance (Turkmenistan)");
}

CORRADE_COMPARE(out.str(),
"Trade::AssimpImporter::material(): property $raw.LongNameLongNameLongNameLongNameLongNameLongNameLongName is too large with 67 bytes, skipping\n"
"Trade::AssimpImporter::material(): property $raw.LongValue is too large with 70 bytes, skipping\n");
}

if(_assimpVersion < 410)
Expand Down Expand Up @@ -2735,7 +2745,7 @@ void AssimpImporterTest::meshSkinningAttributes() {
mesh = importer->mesh(meshName);
}
/* No warning about glTF dropping sets of weights */
CORRADE_VERIFY(out.str().empty());
CORRADE_COMPARE(out.str(), "");

CORRADE_VERIFY(mesh);
CORRADE_VERIFY(mesh->hasAttribute(jointsAttribute));
Expand Down
2 changes: 2 additions & 0 deletions src/MagnumPlugins/AssimpImporter/Test/material-raw.fbx
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,8 @@ Objects: {
P: "Opacity", "double", "Number", "",0.25
P: "SomeColor", "Vector3D", "", "",0.1,0.2,0.3
P: "SomeString", "KString", "", "","Ministry of Finance (Turkmenistan)"
P: "LongNameLongNameLongNameLongNameLongNameLongNameLongName", "KString", "", "","Test"
P: "LongValue", "KString", "", "","LongValueLongValueLongValueLongValueLongValueLongValue"
}
}
}
Expand Down
Loading