//---------------------------------------------------------------------- // Creates a new node with a text geometry // Author: pdaehne //---------------------------------------------------------------------- NodeTransitPtr TextVectorFace::makeNode(const TextLayoutResult &layoutResult, Real32 scale, Real32 depth, UInt32 level, Real32 creaseAngle) { GeometryTransitPtr geo = makeGeo(layoutResult, scale, depth, level, creaseAngle); NodeTransitPtr node = Node::create(); node->setCore(geo); return node; }
NodeTransitPtr OSGSceneFileType::read( std::istream &is, const Char8 *, Resolver resolver) const { OSGLoader *_pFile = new OSGLoader(_endNodeFunctors); NodeTransitPtr returnValue = _pFile->scanStream(is, resolver); if(returnValue->getNChildren() == 1) { returnValue = returnValue->getChild(0); } delete _pFile; commitChanges(); return returnValue; }
NodeTransitPtr RAWSceneFileType::read( std::istream &is, const Char8 *, Resolver ) const { NodeTransitPtr root; GeometryUnrecPtr geo; GeoPnt3fPropertyUnrecPtr points; GeoVec3fPropertyUnrecPtr normals; GeoIntegralPropertyUnrecPtr index; GeoIntegralPropertyUnrecPtr lens; GeoIntegralPropertyUnrecPtr type; Vec3f vec[3]; UInt32 i = 0, n, triCount = 0; Real32 x,y,z; if(is) { root = Node ::create(); geo = Geometry::create(); root->setCore( geo ); points = GeoPnt3fProperty::create(); geo->setPositions(points); normals = GeoVec3fProperty::create(); geo->setNormals(normals); triCount = i = 0; while(1) { is >> x >> y >> z; if(is.eof()) { break; } else { points->editFieldPtr()->push_back(Pnt3f(x, y, z)); vec[i].setValues(x,y,z); std::cerr << x << " " << y << " " << z << std::endl; if(i == 2) { vec[0] -= vec[1]; vec[1] -= vec[2]; vec[0].crossThis(vec[1]); vec[0].normalize(); normals->editFieldPtr()->push_back(vec[0]); normals->editFieldPtr()->push_back(vec[0]); normals->editFieldPtr()->push_back(vec[0]); i = 0; triCount++; } else { i++; } } } if(triCount != 0) { index = GeoUInt32Property::create(); geo->setIndex(index, Geometry::PositionsIndex); geo->setIndex(index, Geometry::NormalsIndex ); n = triCount * 3; for(i = 0; i < n; i++) index->push_back(i); lens = GeoUInt32Property::create(); geo->setLengths(lens); lens->push_back(n); type = GeoUInt8Property::create(); geo->setTypes(type); type->push_back(GL_TRIANGLES); } SimpleMaterialUnrecPtr mat = SimpleMaterial::create(); mat->setDiffuse (Color3f( .8f, .8f, .8f)); mat->setSpecular (Color3f( 1.f, 1.f, 1.f )); mat->setShininess(20.f ); geo->setMaterial(mat); } if(triCount) { SNOTICE << triCount << " triangle read " << std::endl; } commitChanges(); return root; }