I’ve written a program that calls the warp and blend methods in the NVAPI API, and have been using it successfully to warp and blend projectors on planar surfaces, using quadrilateral ‘perspective’ warping, via NV_GPU_WARPING_VERTICE_FORMAT_TRIANGLESTRIP_XYUVRQ.
While these transformations are suitable for most projectors, it looks like a quadrilateral transformation is not sufficient for cases where the projectors shift their principal points (e.g., with tilt-shift lenses). In these cases, it seems that the lens distortion from the tilt-shift optics makes it impossible to successfully warp projectors into alignment.
In my post above I’d asked about any differences between public NVAPI and special licensing, presumable with individual ISVs. I’ve not sure there is a private license for NVAPI, but reading between the lines in the NVAPI documentation seems to suggest there in.
Is there any definitive word on public v. licensed NVAPI methods?
While I am looking for other answers regarding warp&blend I can answer this one:
it is no problem to define a larger warp matrix (not sure where the maximum actually is). I use a camera based calibration to generate warp matrix and blend image and the matrix has 129 rows and 81 columns, which makes 10449 points. I modified the (linux) warp and blend sample code to read the warp matrix from a file and write it to a triangle strip. Warping (at least on linux) is no problem also with larger matrices. Unfortunately blending only works in standard BlendOrder (WarpAfterBlend) and not BlendAfterWarp on non-Quadro cards.