docs: public void internalProcess( double[] input, DMatrix leftPoint, DMatrix rightView) {
  		int numRows = getNumOfOutputsM();
  		// number of parameters on left. All points
  		int numPointParam = structure.points.length*lengthPoint + numRigidUnknown*lengthSE3;
  		// Number of paramters on right. views + camera
  		int numViewParam = numParameters-numPointParam; // view + camera
  
  		((ReshapeMatrix)leftPoint).reshape(numRows,numPointParam);
  		((ReshapeMatrix)rightView).reshape(numRows,numViewParam);
  		leftPoint.zero();
  		rightView.zero();
  
  		// parse parameters for rigid bodies. the translation + rotation is the same for all views
  		for (int rigidIndex = 0; rigidIndex < structure.rigids.length; rigidIndex++) {
  			if( !structure.rigids[rigidIndex].known ) {
  				jacRigidS03[rigidIndex].setParameters(input,indexFirstRigid+rigidParameterIndexes[rigidIndex]);
  			}
  		}
  
  		int observationIndex = 0;
  		// first decode the transformation
  		for( int viewIndex = 0; viewIndex < structure.views.length; viewIndex++ ) {
  			SceneStructureMetric.View view = structure.views[viewIndex];
  			SceneStructureMetric.Camera camera = structure.cameras[view.camera];
  
  			if( !view.known ) {
  				int paramIndex = viewParameterIndexes[viewIndex]+indexFirstView;
  				jacSO3.setParameters(input,paramIndex);
  				paramIndex += jacSO3.getParameterLength();
  
  				worldToView.T.x = input[paramIndex];
  				worldToView.T.y = input[paramIndex+1];
  				worldToView.T.z = input[paramIndex+2];
  
  				worldToView.getR().set(jacSO3.getRotationMatrix());
  			} else {
  				worldToView.set(view.worldToView);
  			}
  			int cameraParamStartIndex = cameraParameterIndexes[view.camera];
  			if( !camera.known ) {
  				camera.model.setIntrinsic(input,indexLastView+cameraParamStartIndex);
  			}
  
  			observationIndex = computeGeneralPoints(leftPoint,rightView, input, observationIndex, viewIndex, view, camera, cameraParamStartIndex);
  			if( observations.viewsRigid != null )
  				observationIndex = computeRigidPoints(leftPoint,rightView,observationIndex, viewIndex, view, camera, cameraParamStartIndex);
  		}
  	}