raycast op• 데이터 종류: mesh × keypoints → table
• 호출: import fullseye as fs; fs.ledger.cad_pixel_to_surface(mesh, pixels, K=None, R=None, t=None, cull_backfaces=True, image_size=None, strict=False)(구현을 직접 호출하려면 import cadmap; cadmap.cad_pixel_to_surface(mesh, pixels, K=None, R=None, t=None, cull_backfaces=True, image_size=None, strict=False), 원장에서 가져오려면 opscadmap.get("cad_pixel_to_surface"))
화소 (N,2) → CAD 면 위의 (face_id, 무게중심 좌표, 3-D 점)(닫힌 식).
화소마다 시선을 만들고(camera.py 규약: 중심은 정수 좌표, u = 열, v = 행), Möller-Trumbore로 모든 삼각형과 교차시켜, 가장 앞쪽의 적중을취한다. 맞지 않은 화소에는 face_id = -1을 반환하며, 가장 가까운 면으로는 절대반올림하지 않는다(검사에서 "결함이 배경에 있었다"를 "면 17의 결함"으로 둔갑시키지 않기위해). cull_backfaces=True(기본값)에서는 법선이 카메라를 향하지 않는 면은적중으로 치지 않는다.
반환은 dict:
• face_id (N,) int64 — 적중한 삼각형의 행 번호. miss는 -1.
• bary (N,3) — 무게중심 좌표 (w0, w1, w2), F[face_id]의 3 정점의순서. point = w0*V[i0] + w1*V[i1] + w2*V[i2]가 엄밀히 성립한다. miss는 NaN. 변·정점 위에서는 1 성분이 0(허용 1e-9).
• point (N,3) — 월드 좌표의 교점. miss는 NaN.
• depth (N,) — 카메라 좌표의 Z(시선 거리가 아님). miss는 NaN.
• normal (N,3) — 적중한 면의 단위 법선(월드 좌표, 감긴 방향대로). miss는 NaN(bary/point/depth와 같은 규약).
• hit (N,) bool.
• camera 실제로 사용된 K/R/t/width/height. 기본값으로 떨어진 경우도 여기를 보면 알 수 있다.
• winding_fixed bool — 안쪽으로 감긴 닫힌 메시를 검출하여 이호출 안에서 감김을 고쳤는지 여부. 항상 들어간다(False여도 들어간다).
cull_backfaces=True(기본값)에서 mesh가 닫혀 있고 부호 있는 체적이 음이면, 기본적으로 감김을 고치고 winding_fixed=True를 반환한다. strict=True로 하면고치지 않고 ValueError로 거부한다. cull_backfaces=False일 때는 뒷면 판정을하지 않으므로 감김 방향은 결과에 영향을 주지 않으며, 검사도 하지 않고 winding_fixed는 항상 False(normal은 입력의 감김대로의 부호로 반환된다). 자세한 내용은 _orient_for_culling.
K/R/t를 생략하면 mesh를 영상에 담는 기본 카메라를 만든다(R = I, 카메라는 무게중심의 -Z 쪽). image_size를 생략하면 주어진 화소의외접 상자로부터 영상 크기를 정한다 — 기본 카메라가 화소가 있는 곳을 보도록하기 위한 것이며, K를 명시했을 때는 in_image 판정에만 영향을 준다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• defect_to_cad — py -3.11 examples/defect_to_cad.py
table 를 입력으로 받는 것)—
raycast)—
*Provenance: cadmap.py — CADMAP 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.