Fix T50227: Alembic uv export/load issue
Previously only a CD_MLOOPUV custom data layer was created. Now we also create the accompanying CD_MTEXPOLY layer too.
This commit is contained in:
@@ -897,19 +897,31 @@ static void *add_customdata_cb(void *user_data, const char *name, int data_type)
|
|||||||
{
|
{
|
||||||
DerivedMesh *dm = static_cast<DerivedMesh *>(user_data);
|
DerivedMesh *dm = static_cast<DerivedMesh *>(user_data);
|
||||||
CustomDataType cd_data_type = static_cast<CustomDataType>(data_type);
|
CustomDataType cd_data_type = static_cast<CustomDataType>(data_type);
|
||||||
void *cd_ptr = NULL;
|
void *cd_ptr;
|
||||||
|
CustomData *loopdata;
|
||||||
|
int numloops;
|
||||||
|
|
||||||
if (ELEM(cd_data_type, CD_MLOOPUV, CD_MLOOPCOL)) {
|
/* unsupported custom data type -- don't do anything. */
|
||||||
cd_ptr = CustomData_get_layer_named(dm->getLoopDataLayout(dm), cd_data_type, name);
|
if (!ELEM(cd_data_type, CD_MLOOPUV, CD_MLOOPCOL)) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (cd_ptr == NULL) {
|
loopdata = dm->getLoopDataLayout(dm);
|
||||||
cd_ptr = CustomData_add_layer_named(dm->getLoopDataLayout(dm),
|
cd_ptr = CustomData_get_layer_named(loopdata, cd_data_type, name);
|
||||||
cd_data_type,
|
if (cd_ptr != NULL) {
|
||||||
CD_DEFAULT,
|
/* layer already exists, so just return it. */
|
||||||
NULL,
|
return cd_ptr;
|
||||||
dm->getNumLoops(dm),
|
}
|
||||||
name);
|
|
||||||
}
|
/* create a new layer, taking care to construct the hopefully-soon-to-be-removed
|
||||||
|
* CD_MTEXPOLY layer too, with the same name. */
|
||||||
|
numloops = dm->getNumLoops(dm);
|
||||||
|
cd_ptr = CustomData_add_layer_named(loopdata, cd_data_type, CD_DEFAULT,
|
||||||
|
NULL, numloops, name);
|
||||||
|
if (cd_data_type == CD_MLOOPUV) {
|
||||||
|
CustomData_add_layer_named(dm->getPolyDataLayout(dm),
|
||||||
|
CD_MTEXPOLY, CD_DEFAULT,
|
||||||
|
NULL, numloops, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return cd_ptr;
|
return cd_ptr;
|
||||||
|
Reference in New Issue
Block a user