Skip to content

Commit

Permalink
Merge pull request #841 from Autodesk/t_gamaj/devtoolset-9-fixes
Browse files Browse the repository at this point in the history
Devtoolset-9 fixes
  • Loading branch information
Krystian Ligenza authored Oct 20, 2020
2 parents 9481327 + cdb5241 commit 32514f1
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 41 deletions.
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

0 comments on commit 32514f1

Please sign in to comment.