Hm, i use the GeometryAccessor for my plugin and it works for every frame. It also gives you triangulated values back, if needed.
PolygonMesh mesh( whatever ); CGeometryAccessor ga = mesh.GetGeometryAccessor( siConstructionModeSecondaryShape, siCatmullClark, subd.GetParameterValue( L"gapproxmordrsl" ), false, true, subd.GetParameterValue( L"gapproxmoan", time ) ); // Vertex positions CDoubleArray vPosition; ga.GetVertexPositions( vPosition ); LONG vertCount = vPosition.GetCount(); // Normal values CFloatArray vNormal; ga.GetNodeNormals(vNormal); LONG normCount = vNormal.GetCount(); // First UV map CRefArray uvProps = ga.GetUVs(); ClusterProperty cp( uvProps[0] ); CFloatArray valueArray; CBitArray flags; cp.GetValues( valueArray, flags ); LONG uvCount = valueArray.GetCount(); Stephan 2013/3/14 Raffaele Fragapane <[email protected]> > Not 100% sure what you're using or trying to use. > In 2012 or 2013 they introduced GetGeometry3() specifically for python, > that with the time in frames argument worked ok for me. > > In CPP GetGeometry with a time argument also works fine in my (dated) > experience, but the time option is only available runOnce, operators can't > look up times other than current, so if you're doing this inside an op, > then the time parameter won't work. > > You can also explicitly pass it what construction mode to look up, if > defaulted it will use the current mode (so make sure you're not defaulting > it and in modelling mode or something). > > > On Thu, Mar 14, 2013 at 4:05 PM, ran sariel <[email protected]> wrote: > >> Hi >> >> I'm trying to get values on geometry at a certain frame. >> when using python - as long as I roll the playControl to that frame and >> call "refresh" (ugly I know) >> data= mesh.GetSurfacePointLocatorsFromPoints() >> vertices=mesh.evaluatePositions(data) >> >> I get the correct data. >> >> on C++ no matter what I do, the geometry is not reflecting the >> deformations, >> >> searching through the docs, - it suggests GetGeometry(currentTime); >> (defaulting to current) >> so: >> " >> std::vector<double>posData; >> PolygonMesh >> mesh=node.GetActivePrimitive(currentFrame).GetGeometry(currentFrame);" >> PointLocatorData data = mesh.GetSurfacePointLocatorsFromPoints(); >> posData.resize(data.GetCount()*3); >> mesh.EvaluatePositions(data,-1,0,&posData.front()); >> >> """ >> >> any ideas??? >> >> cheers >> Ran >> >> >> >> > > > -- > Our users will know fear and cower before our software! Ship it! Ship it > and let them flee like the dogs they are! >

