terrain op• 데이터 종류: mesh → matrix
• 호출: import fullseye as fs; fs.ledger.displacement_band_weights(V, F, wavelengths=(0.06, 0.03, 0.015, 0.0075, 0.00375), *, nyquist: 'float' = 2.0, fade: 'float' = 1.0, local_edge=None) -> 'np.ndarray'(구현을 직접 호출하려면 import render3d; render3d.displacement_band_weights(V, F, wavelengths=(0.06, 0.03, 0.015, 0.0075, 0.00375), *, nyquist: 'float' = 2.0, fade: 'float' = 1.0, local_edge=None) -> 'np.ndarray', 원장에서 가져오려면 ops3d.get("displacement_band_weights"))
옥타브별·정점별 대역 게이트 (K, N), 값은 [0,1].
메시가 그 파장을 지오메트리로 담을 수 있는 곳은 1, 에일리어싱이 생길 곳은 0.
국소 변 길이 e 인 정점(접한 변의 평균, mesh_edge_lengths, 또는 주어지면 local_edge (N,))은 λ ≥ nyquist·e 일 때만 파장 λ 를 담는다; 게이트는 λ = nyquist·e 에서 0 으로부터 λ = (nyquist+fade)·e 에서 1 까지 선형으로 오른다(fade=0 → 하드 컷). Itokawa 파이프라인은 이를 두 가지로 쓴다: (i) *렌더링되는* 메시에서 어느 옥타브를 변위시킬지 결정(나머지는 범프 법선으로); (ii) *원본* 모델에서 실제 데이터가 이미 담고 있는 파장을 측정 — 그여집합 1 − gate 가 합성 기복 가중치이다(데이터가 세밀한 곳은 0, 거친 곳은 1). 따라서 조밀한 영역에 텍스처가 이중으로 입혀지지 않는다. 결정적.
계산은 ratio = λ_k / e_i 에 대해 fade == 0 이면 gate = (ratio ≥ nyquist) 의이진값, 그 외에는 gate = clip((ratio − nyquist) / fade, 0, 1). 반환값은 float64 (K, N)(K = 파장 수, N = 정점 수).
• wavelengths: 메시 단위의 파장 열(비어 있음, 양수 아님, 비유한은 ValueError). mesh_displace_spectrum 과 같은 열을 넘긴다.
• nyquist: "지오메트리로 담을 수 있다" 고 보는 파장/변 길이 비의 하한(기본값 2 = 1 파장에 2 변). 0 이하는 ValueError.
• fade: 전이 폭(변 길이의 배수). 0 이면 하드 임계값. 음수는 ValueError.
• local_edge: 정점별 변 길이 (N,) 를 직접 주는 경우(mesh_edge_lengths 의 per='vertex' 에 해당). 길이 불일치, 양수 아님, 비유한은 ValueError. None 이면
내부에서 mesh_edge_lengths 를 호출한다.
mesh_displace_spectrum 이 내부에서 이 함수를 호출하므로 보통은 직접 호출할 필요가 없다. 직접쓰는 경우는 원본 데이터가 이미 담고 있는 파장을 측정해 1 − gate 를 weights 로 넘길 때(세밀한 곳에 합성 기복을 이중으로 얹지 않기 위해)와 bump_normals_fbm 으로 보낼 나머지를정할 때이다.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py
matrix 를 입력으로 받는 것)terrain)mesh_displace_fbm · terrain_region_mask · mesh_scatter_boulders · mesh_edge_lengths · mesh_subdivide · mesh_displace_spectrum · bump_normals_fbm
*Provenance: render3d.py — 3D 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.