render op• Data kinds: points → keypoints
• Call: import fullseye as fs; fs.ledger.project_points(points, K, R=None, t=None) (to call the implementation directly, import match3d; match3d.project_points(points, K, R=None, t=None); from the registry, ops3d.get("project_points"))
• Return value through the ledger: fullseye.ledger.project_points(...) returns only the declared out type keypoints (the underlying function also returns auxiliary values). When you need what was dropped, use fullseye.ledger.project_points.raw(...) or call match3d.project_points directly.
• Underlying return: (uv (N,2), depth (N,)) → uv
3-D point set (N,3) → image coordinates (u,v) and depth. Pinhole (the forward direction of depth_to_points).
K = camera intrinsic matrix [[fx,0,cx],[0,fy,cy],[0,0,1]]. R,t give the extrinsic pose. The observation map of a world model.
Projects P_cam = R @ P + t (R (3,3), t (3,); None means identity / zero) with u = fx·X/Z + cx, v = fy·Y/Z + cy. Returns (uv (N,2), depth (N,)): uv[:,0] = u (column), uv[:,1] = v (row), depth is Z in camera coordinates (the raw value before clipping; negatives are kept as is). K is indexed as K[0,0] etc., so it must be a numpy array (a nested list does not work). Z is clipped to at least 1e-6 before dividing, so points behind the camera are not discarded either and become huge u,v (the caller removes them with depth > 0). Points outside the image are also returned (render_point_depth cuts them by range). It is the inverse of depth_to_points; depth_to_points(render_point_depth(...)) is a round trip.
• blender_interop — Using Blender alongside — build the shape, measure it with fullseye (pitfalls: axes, units, ground truth)
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• pnp_pose_outliers — py -3.11 examples_3d/pnp_pose_outliers.py
• pose_estimation — py -3.11 examples_3d/pose_estimation.py
keypoints as input)fuse_to_voxel · dlt_pose · pnp_ransac · reprojection_error
render)render_point_depth · render_volume_projection · render_shaded · ambient_occlusion · cast_shadow · phong_shade · matcap_shade · supersample_mesh
*Provenance: match3d.py — 3D operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.