Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Devtoolset-9 fixes #841

Merged
merged 2 commits into from
Oct 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
12 changes: 4 additions & 8 deletions lib/mayaUsd/fileio/utils/meshWriteUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -576,10 +576,9 @@ UsdMayaMeshWriteUtils::exportReferenceMesh(UsdGeomMesh& primSchema, MObject obj)
}

const float* mayaRawPoints = referenceMesh.getRawPoints(&status);
const GfVec3f* mayaRawVec3 = reinterpret_cast<const GfVec3f*>(mayaRawPoints);
const int numVertices = referenceMesh.numVertices();
VtVec3fArray points(numVertices);

memcpy(points.data(), mayaRawPoints, numVertices * sizeof(float) * 3);
VtVec3fArray points(mayaRawVec3, mayaRawVec3 + numVertices);

UsdGeomPrimvar primVar = primSchema.CreatePrimvar(
UsdUtilsGetPrefName(),
Expand Down Expand Up @@ -678,17 +677,14 @@ UsdMayaMeshWriteUtils::writePointsData(const MFnMesh& meshFn,
MStatus status{MS::kSuccess};

const uint32_t numVertices = meshFn.numVertices();
VtVec3fArray points(numVertices);
const float* pointsData = meshFn.getRawPoints(&status);

if(!status) {
MGlobal::displayError(MString("Unable to access mesh vertices on mesh: ") + meshFn.fullPathName());
return;
}

// use memcpy() to copy the data. HS April 09, 2020
memcpy((GfVec3f*)points.data(), pointsData, sizeof(float) * 3 * numVertices);

const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(pointsData);
VtVec3fArray points(vecData, vecData + numVertices);
VtVec3fArray extent(2);
// Compute the extent using the raw points
UsdGeomPointBased::ComputeExtent(points, &extent);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,28 +54,15 @@ MObject createNurbStage(bool useSingleWidth=false)
VtArray<int32_t> curveVertextCounts;
curveVertextCounts.push_back(5);

std::array<double, 7> knotsa = {0., 0., 0., 1., 2., 2., 2.};
VtDoubleArray knots = VtDoubleArray(7);
memcpy(knots.data(), &knotsa, sizeof(double)*7);
VtDoubleArray knots = VtDoubleArray{0., 0., 0., 1., 2., 2., 2.};

std::vector<std::array<float, 3>> pointsa = { {-1.5079714f, 44.28195f, 5.781988f},
VtVec3fArray points = VtVec3fArray{ {-1.5079714f, 44.28195f, 5.781988f},
{-1.5784601f, 44.300205f, 5.813314f},
{-2.4803247f, 44.201904f, 6.2143235f},
{-3.9173129f, 43.33975f, 6.475575f},
{-5.2281976f, 42.145287f, 6.6371536f} };
VtVec3fArray points = VtVec3fArray(5);
for(uint32_t i = 0 ; i< pointsa.size(); ++i)
{
memcpy(&points[i], &pointsa[i], 3*sizeof(float));
}

std::vector<std::array<double,2> > rangesa = {{0.,2.}};
VtVec2dArray ranges = VtVec2dArray(2);

for(uint32_t i = 0 ; i< rangesa.size(); ++i)
{
memcpy(&ranges[i], &rangesa[i], 2*sizeof(double));
}
VtVec2dArray ranges = VtVec2dArray{{0.,2.}};

if(useSingleWidth)
{
Expand Down
2 changes: 1 addition & 1 deletion plugin/al/usdmayautils/AL/usdmaya/utils/DgNodeHelper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@ MStatus DgNodeHelper::setMatrix4x4Array(MObject node, MObject attribute, const d
MStatus status;
MMatrixArray arrayData;
arrayData.setLength(count);
memcpy(&arrayData[0], values, sizeof(MMatrix) * count);
memcpy(arrayData[0][0], values, sizeof(MMatrix) * count);

MFnMatrixArrayData fn;
MObject data = fn.create(arrayData, &status);
Expand Down
4 changes: 2 additions & 2 deletions plugin/al/usdmayautils/AL/usdmaya/utils/DiffPrimVar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ uint32_t diffGeom(UsdGeomPointBased& geom, MFnMesh& mesh, UsdTimeCode timeCode,
if(status)
{
const uint32_t numVertices = mesh.numVertices();
VtArray<GfVec3f> points(numVertices);
memcpy((GfVec3f*)points.data(), pointsData, sizeof(float) * 3 * numVertices);
const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(pointsData);
VtArray<GfVec3f> points(vecData, vecData + numVertices);

VtArray<GfVec3f> mayaExtent(2);
UsdGeomPointBased::ComputeExtent(points, &mayaExtent);
Expand Down
25 changes: 11 additions & 14 deletions plugin/al/usdmayautils/AL/usdmaya/utils/MeshUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,7 @@ void MeshImportContext::applyColourSetData()
{
const VtArray<GfVec4f> rawVal = vtValue.UncheckedGet<VtArray<GfVec4f> >();
colours.setLength(rawVal.size());
memcpy(&colours[0], (const float*) rawVal.cdata(), sizeof(float) * 4 * rawVal.size());
memcpy(&colours[0][0], (const float*) rawVal.cdata(), sizeof(float) * 4 * rawVal.size());
representation = MFnMesh::kRGBA;
}

Expand Down Expand Up @@ -1986,12 +1986,11 @@ void MeshExportContext::copyVertexData(UsdTimeCode time)
{
MStatus status;
const uint32_t numVertices = fnMesh.numVertices();
VtArray<GfVec3f> points(numVertices);
const float* pointsData = fnMesh.getRawPoints(&status);
if(status)
{
memcpy((GfVec3f*)points.data(), pointsData, sizeof(float) * 3 * numVertices);

const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(pointsData);
VtArray<GfVec3f> points(vecData, vecData + numVertices);
pointsAttr.Set(points, time);
}
else
Expand All @@ -2013,9 +2012,9 @@ void MeshExportContext::copyExtentData(UsdTimeCode time)
const float* pointsData = fnMesh.getRawPoints(&status);
if(status)
{
const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(pointsData);
const uint32_t numVertices = fnMesh.numVertices();
VtArray<GfVec3f> points(numVertices);
memcpy((GfVec3f*)points.data(), pointsData, sizeof(float) * 3 * numVertices);
VtArray<GfVec3f> points(vecData, vecData + numVertices);

VtArray<GfVec3f> extent(2);
UsdGeomPointBased::ComputeExtent(points, &extent);
Expand Down Expand Up @@ -2044,11 +2043,11 @@ void MeshExportContext::copyBindPoseData(UsdTimeCode time)
{
MStatus status;
const uint32_t numVertices = fnMesh.numVertices();
VtArray<GfVec3f> points(numVertices);
const float* pointsData = fnMesh.getRawPoints(&status);
if(status)
{
memcpy((GfVec3f*)points.data(), pointsData, sizeof(float) * 3 * numVertices);
const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(pointsData);
VtArray<GfVec3f> points(vecData, vecData + numVertices);

pRefPrimVarAttr.Set(points, time);
}
Expand Down Expand Up @@ -2084,6 +2083,7 @@ void MeshExportContext::copyNormalData(UsdTimeCode time, bool copyAsPrimvar)
MStatus status;
const uint32_t numNormals = fnMesh.numNormals();
const float* normalsData = fnMesh.getRawNormals(&status);
const GfVec3f* vecData = reinterpret_cast<const GfVec3f*>(normalsData);
if(status && numNormals)
{
MIntArray normalCounts, normalIndices;
Expand Down Expand Up @@ -2111,7 +2111,6 @@ void MeshExportContext::copyNormalData(UsdTimeCode time, bool copyAsPrimvar)
{
if(MayaUsdUtils::compareArray(&normalIndices[0], &faceConnects[0], normalIndices.length(), faceConnects.length()))
{
VtArray<GfVec3f> normals(numNormals);
if(copyAsPrimvar)
{
primvar.SetInterpolation(UsdGeomTokens->vertex);
Expand All @@ -2121,7 +2120,7 @@ void MeshExportContext::copyNormalData(UsdTimeCode time, bool copyAsPrimvar)
mesh.SetNormalsInterpolation(UsdGeomTokens->vertex);
}

memcpy((GfVec3f*)normals.data(), normalsData, sizeof(float) * 3 * numNormals);
VtArray<GfVec3f> normals(vecData, vecData + numNormals);
normalsAttr.Set(normals, time);
}
else
Expand All @@ -2147,8 +2146,7 @@ void MeshExportContext::copyNormalData(UsdTimeCode time, bool copyAsPrimvar)

if(isPerVertex)
{
VtArray<GfVec3f> normals(numNormals);
memcpy((GfVec3f*)normals.data(), normalsData, sizeof(float) * 3 * numNormals);
VtArray<GfVec3f> normals(vecData, vecData + numNormals);
for(auto& c : missing)
{
const uint32_t orig = c.first;
Expand Down Expand Up @@ -2219,8 +2217,7 @@ void MeshExportContext::copyNormalData(UsdTimeCode time, bool copyAsPrimvar)
{
mesh.SetNormalsInterpolation(UsdGeomTokens->faceVarying);
}
VtArray<GfVec3f> normals(numNormals);
memcpy((GfVec3f*)normals.data(), normalsData, sizeof(float) * 3 * numNormals);
VtArray<GfVec3f> normals(vecData, vecData + numNormals);
normalsAttr.Set(normals, time);
}
else
Expand Down