terrain op• 資料種類:mesh → mesh
• 呼叫: import fullseye as fs; fs.ledger.mesh_displace_spectrum(V, F, wavelengths=(0.06, 0.03, 0.015, 0.0075, 0.00375), amplitudes=(0.003, 0.00176, 0.00103, 0.0006, 0.00035), *, seed: 'int' = 0, nyquist: 'float' = 2.0, fade: 'float' = 1.0, weights=None, local_edge=None)(要直接呼叫實作,import render3d; render3d.mesh_displace_spectrum(V, F, wavelengths=(0.06, 0.03, 0.015, 0.0075, 0.00375), amplitudes=(0.003, 0.00176, 0.00103, 0.0006, 0.00035), *, seed: 'int' = 0, nyquist: 'float' = 2.0, fade: 'float' = 1.0, weights=None, local_edge=None);從台帳取用則 ops3d.get("mesh_displace_spectrum"))
以明確給出的振幅譜、帶限地沿法線位移頂點。
帶限依頂點進行;回傳 (V, F)。
displacement_i = Σ_k A_k · n_k(x_i) · gate_k(i) · w_k(i),其中每個 (wavelength_k, amplitude_k) 對各有一個帶 seed 的 value-noise 八度 n_k ∈ [−1, 1](網格單位 —— Itokawa 的 STL 以 km 為單位,因此預設在 60 m 處為 3 m,依 A ∝ λ^0.77 下降到 3.75 m 處的 0.35 m),gate = 在*本*網格上的 displacement_band_weights (短於 nyquist × local edge 的八度不施加 —— 它會混疊成
小面雜訊;請改交給 bump_normals_fbm),weights = 可選的 (N,) 每頂點或 (K, N) 每八度每頂點、取值於 [0,1] 的係數(例如來源模型的合成起伏權重 1 − gate)。頂點處的峰值位移至多為 Σ_k A_k(測試固定了這一點)。與 mesh_displace_fbm(單一振幅、八度比 2、無頻帶限制)不同,每個八度的振幅都是明確指定的。在 seed 下為確定性。對形狀/非有限/負值 fail-closed。
步驟:(1) 以 displacement_band_weights 產生 gate (K,N),(2) 若有 weights 則乘上它,(3) 對每個八度 k 評估 seed 固定的 value noise n_k(x) ∈ [-1,1](波長 λ_k,格點偏移隨八度編號變化),把 Σ_k A_k · gate_k · n_k 作為沿法線方向的位移,(4) 沿面積加權的頂點法線移動頂點。回傳值 (V' (N,3) float64, F 的副本)。
• wavelengths / amplitudes:長度相同(1〜32 個)的正數序列。網格單位。個數不一致、空、33 個以上、負振幅、amplitudes=None 時拋出 ValueError。振幅為 0 的八度跳過評估。
• nyquist / fade / local_edge:頻帶閘控的設定(與 displacement_band_weights 相同)。
• weights:(N,) 時為所有八度共用的係數,(K,N) 時為各八度各自的係數。值限於 [0, 1],超出範圍或形狀不一致時拋出 ValueError。
• seed:相同的 seed 與 bump_normals_fbm 共用同一格點(幾何無法承載的八度可以連續地交給陰影一側)。
與 mesh_displace_fbm 的差別在於:振幅依八度明確給出,並且依頂點以邊長截斷頻帶。即使給粗網格施加短波長也不會混疊,只是被忽略。
• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。
• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。
• itokawa_regolith_hero — py -3.11 examples_3d/itokawa_regolith_hero.py
mesh 作為輸入)mesh_to_voxel · mesh_to_points · to_points · fuse_to_voxel · ambient_occlusion · cast_shadow · supersample_mesh · render_beauty
terrain)mesh_displace_fbm · terrain_region_mask · mesh_scatter_boulders · mesh_edge_lengths · mesh_subdivide · displacement_band_weights · bump_normals_fbm
*Provenance: render3d.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.