Current stereo channel on VP

On 20/09/2015 at 16:48, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   R13-R16 
Platform:    Mac  ;  
Language(s) :     C++  ;

---------
Hi!

I need to know which stereo channel is being rendered on my VideoPost plugin.

I know I can use StereoGetCameraCount() and StereoGetCameraInfo() to iterate the stereo cameras, but I need to pass the actual channel being rendered to StereoGetCameraInfo() and I can't find where this information is.

On 21/09/2015 at 02:04, xxxxxxxx wrote:

Hello,

I'm afraid the the id of the currently rendered stereo channel is not handed over to video post plugins.

Best wishes,
Sebastian

On 22/09/2015 at 06:49, xxxxxxxx wrote:

Really?
So I had to reproduce this from RenderData....

RENDERRESULT Blendy360CamVP::Execute(BaseVideoPost *node, VideoPostStruct *vps)
{
	// For each RENDER
	if (vps->vp==VIDEOPOSTCALL_FRAMESEQUENCE && vps->open)
	{
		//mStChannelCount = node->StereoGetCameraCountRenderer( doc, rd );
		mStChannelCount = mCamera->StereoGetCameraCount( doc, bd, rd, 0 );
		bStereoEnabled = ( mStChannelCount > 0 );
		mStChannelOrder[0] = -1;
		mStChannelOrder[1] = -1;
		mStChannelSequential = -1;
		mStCurrentChannel = -1;
		BlendyDebug("StereoGetCameraCount = %d\n",mStChannelCount);
		if ( bStereoEnabled )
		{
			bStereoEnabled			= ! renderData.GetBool( RDATA_STEREO_CALCULATE_ORIGINAL );
			mStMode					= renderData.GetLong( RDATA_STEREO_MODE );
			mStCalcResult			= renderData.GetLong( RDATA_STEREO_CALCRESULT );
			bStAlignmentHorizontal	= ( renderData.GetBool( RDATA_STEREO_SBS_ALIGN ) == RDATA_STEREO_SBS_ALIGN_HORIZONTAL );
			bStAlignmentVertical	= ( renderData.GetBool( RDATA_STEREO_SBS_ALIGN ) == RDATA_STEREO_SBS_ALIGN_VERTICAL );
			mStPixelParallax		= renderData.GetLong( RDATA_STEREO_PARALLAX );
			
			if ( bStereoEnabled )
			{
				if ( mStCalcResult == RDATA_STEREO_CALCRESULT_SINGLE )
				{
					mStChannelCount = 1;
					mStChannelOrder[0] = renderData.GetLong( RDATA_STEREO_SINGLECHANNEL ) - 1;
				}
				// C4D will swap when merging
//				else if ( renderData.GetLong( RDATA_STEREO_SWAP ) )
//				{
//					mStChannelOrder[0] = 1;
//					mStChannelOrder[1] = 0;
//				}
				else
				{
					mStChannelOrder[0] = 0;
					mStChannelOrder[1] = 1;
				}
			}
		}
	}
	//
	// Before each FRAME
	else if (vps->vp==VIDEOPOSTCALL_RENDER && vps->open)
	{
		if ( bStereoEnabled && ! bPreviewRender )
		{
			mStChannelSequential = ( mStChannelSequential + 1 ) % mStChannelCount;
			mStCurrentChannel = ( mStChannelSequential < 2 ? mStChannelOrder[ mStChannelSequential ] : -1 );
			if ( mStCurrentChannel >= 0 )
			{
				mCamera->StereoGetCameraInfo( doc, bd, rd, mStCurrentChannel, mStCameraInfo, 0 );
				BlendyDebug("stereo channel [%d] off [%.2f,%.2f] name [%s]",mStCurrentChannel,(float)mStCameraInfo.off_x,(float)mStCameraInfo.off_y,mStCameraInfo.strName.GetCStringCopy());
			}
		}
	}

On 22/09/2015 at 10:22, xxxxxxxx wrote:

Hello,

the id is really not handed over.

Best wishes,
Sebastian