Hello Pablo,
Pablo Carneiro Elias wrote:
> I'm trying to use the OSG::createSingleIndex function at
> <OpenSG/OSGGeoFunctions.h> but it only prints "nyi" (not yet
> implemented). Is there any other way of doing what that function does?
hm, no I don't think so. The beginning of an implementation would
probably look like the below (completely untested).
The missing (and a bit tedious) part is now rewriting all the properties
so that they can actually be indexed by the newly written index.
Int32 createSingleIndex(Geometry *geo)
{
// creates a single index for the geometry by reordering/duplicating
// values in properties.
// - determine unique 'index tuples' (unique 'property value tuples'
// would be exact, but harder and slower to compute)
// - write a new index by numbering the unique 'index tuples'
// and referring to them in the order they are used by the geo
// - reorder the property values in such a way that the new index
// can refer directly to them instead of the 'index tuples'
GeoUInt32PropertyUnrecPtr newI = GeoUInt32Property::create();
GeoIntegralProperty *lens = geo->getLengths ();
Geometry::IndexBag ibag = geo->getUniqueIndexBag();
UInt32 idx = 0;
IndexDic indexDic;
IndexDic::Int32Tuple indexTuple(ibag.size());
// find all unique index tuples of the geometry and write new index
for(UInt32 i = 0; i < lens->size(); ++i)
{
for(UInt32 j = 0; j < lens->getValue(i); ++j, ++idx)
{
for(UInt32 k = 0; k < ibag.size(); ++k)
{
indexTuple[k] = ibag[k].first->getValue(idx);
}
// write new index
newI->push_back(indexDic.entry(indexTuple));
}
}
for(UInt32 i = 0; i < indexDic.entryCount(); ++i)
{
// write new properties such that
// indexTuple = indexDic.entry(i);
//
// p_new[k][i] = p_old[k][ indexTuple[k] ]
// where k distinguishes between the different properties
}
}
Sorry, I'm not sure when I'll be able to finish this, so I'm posting it
in case anybody wants to pick it up...
Cheers,
Carsten
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users