// THIS FILE IS OBSOLETE. SEE shaveWriteRib.cpp INSTEAD. // Shave and a Haircut // (c) 2019 Epic Games // US Patent 6720962 #include "shaveIO.h" #include #include #include #include #include #include "shaveGlobals.h" #include "shaveHairShape.h" #include "shaveRenderer.h" #include "shaveRenderman.h" #include "shaveTextureStore.h" MStatus shaveRenderman::dumpAll(MString filename) { shaveRenderer* renderer = shaveRender::getRenderer(); MObjectArray shaveHairShapes; renderer->getRenderableShaveNodes(shaveHairShapes); initTexInfoLookup(shaveHairShapes, ""); FILE* fp = stdout; if (filename != "") { fp = fopen(filename.asChar(), "w"); if (!fp) { MGlobal::displayError( MString("shaveWriteRib: Could not open file '") + filename + "' for RIB output." ); return MS::kFailure; } } // // Output the RIB file preamble. // if (globalRibStuff != "") fprintf(fp, "%s\n", globalRibStuff.asChar()); int prmanCurvesOK = (shaveRibPrimType > 1) ? 0 : 1; int prmanCurveType = (shaveRibPrimType > 1)?0:shaveRibPrimType; unsigned int i; unsigned int numShaveNodes = shaveHairShapes.length(); for (i = 0; i < numShaveNodes; i++) { MFnDependencyNode nodeFn(shaveHairShapes[i]); shaveHairShape* theShaveNode = (shaveHairShape*)nodeFn.userNode(); // // Get the shaveHairShape's hair node and make sure it's loaded // into the shave engine. // SHAVENODE* hairNode = theShaveNode->getHairNode(); theShaveNode->makeCurrent(); // // Output the RIB preamble for this node. // MPlug plug(shaveHairShapes[i], shaveHairShape::ribInsert); MString nodePreamble; plug.getValue(nodePreamble); fprintf(fp, "%s\n", nodePreamble.asChar()); // // Output the node's RIB info. // SHAVErib_dump_node( hairNode, fp, prmanCurvesOK, hairNode->shavep.segs[theShaveNode->getHairGroup()], prmanCurveType ); } if (filename != "") fclose(fp); return MS::kSuccess; }