Made the tri stripping of tile default to using a minimum tri strip length

of 3, thereby reducing the number of indivual primitives, but with the tradeoff
of more seperate triangles being used.
This commit is contained in:
Robert Osfield
2004-05-02 15:45:36 +00:00
parent 6223c11570
commit a709c0a474

View File

@@ -1927,17 +1927,7 @@ osg::Node* DataSet::DestinationTile::createHeightField()
}
static osg::Vec3 computeLocalPosition(const osg::Matrixd& localToWorld, double X, double Y, double Z)
{
X -= localToWorld(3,0);
Y -= localToWorld(3,1);
Z -= localToWorld(3,2);
return osg::Vec3(X*localToWorld(0,0) + Y*localToWorld(0,1) + Z*localToWorld(0,2),
X*localToWorld(1,0) + Y*localToWorld(1,1) + Z*localToWorld(1,2),
X*localToWorld(2,0) + Y*localToWorld(2,1) + Z*localToWorld(2,2));
}
static osg::Vec3 computeLocalPosition2(const osg::Matrixd& worldToLocal, double X, double Y, double Z)
static osg::Vec3 computeLocalPosition(const osg::Matrixd& worldToLocal, double X, double Y, double Z)
{
return osg::Vec3(X*worldToLocal(0,0) + Y*worldToLocal(1,0) + Z*worldToLocal(2,0) + worldToLocal(3,0),
X*worldToLocal(0,1) + Y*worldToLocal(1,1) + Z*worldToLocal(2,1) + worldToLocal(3,1),
@@ -2033,8 +2023,7 @@ osg::Node* DataSet::DestinationTile::createPolygonal()
worldToLocal.invert(localToWorld);
//center_position = computeLocalPosition(localToWorld,midX,midY,midZ);
center_position = computeLocalPosition2(worldToLocal,midX,midY,midZ);
center_position = computeLocalPosition(worldToLocal,midX,midY,midZ);
transformed_center_normal = osg::Matrixd::transform3x3(localToWorld,center_normal);
}
@@ -2104,8 +2093,7 @@ osg::Node* DataSet::DestinationTile::createPolygonal()
if (useLocalToTileTransform)
{
//v[vi] = computeLocalPosition(localToWorld,X,Y,Z);
v[vi] = computeLocalPosition2(worldToLocal,X,Y,Z);
v[vi] = computeLocalPosition(worldToLocal,X,Y,Z);
}
else
{
@@ -2318,6 +2306,7 @@ osg::Node* DataSet::DestinationTile::createPolygonal()
osgUtil::TriStripVisitor tsv;
tsv.setMinStripSize(3);
tsv.stripify(*geometry);