{ "id": "fisheye-reproject", "name": "Fisheye Reproject", "description": "Inverse-projects a cropped fisheye source into a virtual rectilinear or cylindrical camera view with pan, tilt, and roll controls.", "category": "Projection", "entryPoint": "shadeVideo", "parameters": [ { "id": "lensFovDegrees", "label": "Lens FOV", "type": "float", "default": 190, "min": 1, "max": 220, "step": 0.1, "description": "Actual fisheye lens field of view in degrees." }, { "id": "center", "label": "Optical Center", "type": "vec2", "default": [ 0.5, 0.5 ], "min": [ 0, 0 ], "max": [ 1, 1 ], "step": [ 0.001, 0.001 ], "description": "Normalized position in the frame, where 0.5, 0.5 is center." }, { "id": "radius", "label": "Fisheye Radius", "type": "vec2", "default": [ 0.5, 0.885 ], "min": [ 0.001, 0.001 ], "max": [ 2, 2 ], "step": [ 0.001, 0.001 ], "description": "Normalized fisheye radius; adjust X/Y when the image is cropped or squeezed." }, { "id": "sourceEdgeCut", "label": "Source Edge Cut", "type": "float", "default": 0.01, "min": 0, "max": 0.2, "step": 0.001, "description": "Cuts slightly inward from all four source-frame edges before sampling to hide empty border regions." }, { "id": "sourceEdgeFeather", "label": "Source Edge Feather", "type": "float", "default": 0.02, "min": 0, "max": 0.2, "step": 0.001, "description": "Softens the trimmed source edges into the outside color for easier background blending." }, { "id": "virtualFovDegrees", "label": "Virtual FOV", "type": "float", "default": 75, "min": 1, "max": 175, "step": 0.1, "description": "Field of view of the generated virtual camera." }, { "id": "basePanDegrees", "label": "Base Pan", "type": "float", "default": 0, "min": -180, "max": 180, "step": 0.1, "description": "Permanent horizontal alignment offset before live pan." }, { "id": "baseTiltDegrees", "label": "Base Tilt", "type": "float", "default": 0, "min": -120, "max": 120, "step": 0.1, "description": "Permanent vertical alignment offset before live tilt." }, { "id": "baseRollDegrees", "label": "Base Roll", "type": "float", "default": 0, "min": -180, "max": 180, "step": 0.1, "description": "Permanent roll alignment offset before live roll." }, { "id": "panDegrees", "label": "Pan", "type": "float", "default": 0, "min": -180, "max": 180, "step": 0.1, "description": "Live horizontal view rotation." }, { "id": "tiltDegrees", "label": "Tilt", "type": "float", "default": 0, "min": -120, "max": 120, "step": 0.1, "description": "Live vertical view rotation." }, { "id": "rollDegrees", "label": "Roll", "type": "float", "default": 0, "min": -180, "max": 180, "step": 0.1, "description": "Live roll rotation around the viewing axis." }, { "id": "fisheyeModel", "label": "Fisheye Model", "type": "enum", "default": "equidistant", "options": [ { "value": "equidistant", "label": "Equidistant" }, { "value": "equisolid", "label": "Equisolid" }, { "value": "stereographic", "label": "Stereographic" }, { "value": "orthographic", "label": "Orthographic" } ], "description": "Projection model used by the physical fisheye lens." }, { "id": "outputProjection", "label": "Output Projection", "type": "enum", "default": "rectilinear", "options": [ { "value": "rectilinear", "label": "Rectilinear" }, { "value": "cylindrical", "label": "Cylindrical" } ], "description": "Chooses rectilinear perspective or cylindrical reprojection." }, { "id": "outsideColor", "label": "Outside Color", "type": "color", "default": [ 0, 0, 0, 1 ], "description": "Color used where the remapped image samples outside the source frame." } ] }