#include <maya/MSimple.h>
#include <maya/MIOStream.h>
#include <maya/MRenderView.h>
#include <maya/M3dView.h>
#include <math.h>
#include <maya/MSyntax.h>
#include <maya/MArgDatabase.h>
{
public:
renderViewRender() {};
~renderViewRender() override {};
static void* creator();
static const char * cmdName;
private:
bool doNotClearBackground;
};
static const char * kDoNotClearBackground = "-b";
static const char * kDoNotClearBackgroundLong = "-background";
const char * renderViewRender::cmdName = "renderViewRender";
void* renderViewRender::creator()
{
return new renderViewRender;
}
MSyntax renderViewRender::newSyntax()
{
syntax.
addFlag( kDoNotClearBackground, kDoNotClearBackgroundLong );
return syntax;
}
{
doNotClearBackground = argData.
isFlagSet( kDoNotClearBackground );
return MS::kSuccess;
}
{
MFnPlugin plugin( obj, PLUGIN_COMPANY,
"4.5" );
stat = plugin.registerCommand( renderViewRender::cmdName,
renderViewRender::creator,
renderViewRender::newSyntax);
if ( !stat )
stat.
perror(
"registerCommand" );
return stat;
}
{
stat = plugin.deregisterCommand( renderViewRender::cmdName );
if ( !stat )
stat.
perror(
"deregisterCommand" );
return stat;
}
{
unsigned int distance = (unsigned int) sqrt(double((x*x) + (y*y)));
pixel.
g = pixel.
b = 155.0f + (distance % 20) * 5;
return pixel;
}
{
{
setResult( "Cannot renderViewRender in batch render mode. "
"Please run in interactive mode, "
"so that the render editor exists." );
return MS::kFailure;
}
else
{
cout<<"Past doesRenderEditorExist()"<<endl;
}
parseSyntax( argData );
{
setResult( "renderViewRender: error occurred in setCurrentCamera." );
return MS::kFailure;
}
unsigned int image_width = 640, image_height = 480;
{
setResult( "renderViewRender: error occured in startRender." );
return MS::kFailure;
}
unsigned int num_side_tiles = 8;
unsigned int average_tiles_width = image_width / num_side_tiles;
unsigned int average_tiles_height = image_height / num_side_tiles;
for (unsigned int tile_y = 0; tile_y < num_side_tiles; tile_y++)
{
for (unsigned int tile_x = 0; tile_x < num_side_tiles; tile_x++)
{
int min_x = tile_x * average_tiles_width;
int max_x;
if ((tile_x+1) == num_side_tiles)
max_x = image_width-1;
else
max_x = (tile_x + 1) * average_tiles_width - 1;
int min_y = tile_y * average_tiles_height;
int max_y;
if ((tile_y+1) == num_side_tiles)
max_y = image_height-1;
else
max_y = (tile_y + 1) * average_tiles_height - 1;
unsigned int tile_width = max_x - min_x + 1;
unsigned int tile_height = max_y - min_y + 1;
unsigned int index = 0;
for (unsigned int j = 0; j < tile_height; j++ )
{
for (unsigned int i = 0; i < tile_width; i++)
{
pixels[index] = evaluate(i - (tile_width / 2),
j - (tile_height / 2));
index++;
}
}
{
setResult( "renderViewRender: error occured in updatePixels." );
delete [] pixels;
return MS::kFailure;
}
delete [] pixels;
{
setResult( "renderViewRender: error occured in refresh." );
return MS::kFailure;
}
}
}
{
setResult( "renderViewRender: error occured in endRender." );
return MS::kFailure;
}
setResult( "renderViewRender completed." );
return stat;
}