displacement_band_weights — 3D 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 的剩餘部分時。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py

型別可銜接的下一個運算子(可接受 matrix 作為輸入)

fuse_to_voxel

同類別(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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.