Enhance UI for scale and offset controls; add surface masking options and improve displacement logic

This commit is contained in:
CNCKitchen
2026-03-17 12:59:03 +01:00
parent a68eedba38
commit 57a42f0815
6 changed files with 180 additions and 67 deletions
+25 -9
View File
@@ -96,8 +96,8 @@
<div class="form-row slider-row">
<label for="scale-u">Scale U</label>
<input type="range" id="scale-u" min="0.1" max="10" step="0.05" value="1" />
<span class="val" id="scale-u-val">1.00</span>
<input type="range" id="scale-u" min="0" max="1000" step="1" value="500" />
<input type="number" class="val" id="scale-u-val" value="1" min="0.1" max="10" step="0.1" />
</div>
<div class="lock-row">
<div class="lock-line"></div>
@@ -111,18 +111,18 @@
</div>
<div class="form-row slider-row">
<label for="scale-v">Scale V</label>
<input type="range" id="scale-v" min="0.1" max="10" step="0.05" value="1" />
<span class="val" id="scale-v-val">1.00</span>
<input type="range" id="scale-v" min="0" max="1000" step="1" value="500" />
<input type="number" class="val" id="scale-v-val" value="1" min="0.1" max="10" step="0.1" />
</div>
<div class="form-row slider-row">
<label for="offset-u">Offset U</label>
<input type="range" id="offset-u" min="-1" max="1" step="0.01" value="0" />
<span class="val" id="offset-u-val">0.00</span>
<input type="number" class="val" id="offset-u-val" value="0" min="-1" max="1" step="0.01" />
</div>
<div class="form-row slider-row">
<label for="offset-v">Offset V</label>
<input type="range" id="offset-v" min="-1" max="1" step="0.01" value="0" />
<span class="val" id="offset-v-val">0.00</span>
<input type="number" class="val" id="offset-v-val" value="0" min="-1" max="1" step="0.01" />
</div>
</section>
@@ -132,21 +132,37 @@
<div class="form-row slider-row">
<label for="amplitude">Amplitude</label>
<input type="range" id="amplitude" min="-1" max="1" step="0.01" value="0.5" />
<span class="val" id="amplitude-val">0.5 mm</span>
<input type="number" class="val" id="amplitude-val" value="0.5" min="-1" max="1" step="0.01" />
</div>
</section>
<!-- Surface Mask -->
<section class="panel-section">
<h2>Surface Mask</h2>
<div class="form-row slider-row">
<label for="bottom-angle-limit" title="Suppress texture on downward-facing surfaces within this angle of horizontal">Bottom faces</label>
<input type="range" id="bottom-angle-limit" min="0" max="90" step="1" value="5" />
<input type="number" class="val" id="bottom-angle-limit-val" value="5" min="0" max="90" step="1" />
</div>
<div class="form-row slider-row">
<label for="top-angle-limit" title="Suppress texture on upward-facing surfaces within this angle of horizontal">Top faces</label>
<input type="range" id="top-angle-limit" min="0" max="90" step="1" value="0" />
<input type="number" class="val" id="top-angle-limit-val" value="0" min="0" max="90" step="1" />
</div>
<p class="hint">0° = no masking. Surfaces within this angle of horizontal will not be textured.</p>
</section>
<!-- Export -->
<section class="panel-section">
<h2>Export</h2>
<div class="form-row slider-row">
<label for="refine-length" title="Edges longer than this value will be split during export">Max Edge Length</label>
<input type="range" id="refine-length" min="0.1" max="5" step="0.1" value="1" />
<span class="val" id="refine-length-val">1.0 mm</span>
<input type="number" class="val" id="refine-length-val" value="1" min="0.1" max="5" step="0.1" />
</div>
<div class="form-row slider-row">
<label for="max-triangles" title="Mesh is fully subdivided first, then decimated down to this count">Output Triangles</label>
<input type="range" id="max-triangles" min="100000" max="5000000" step="100000" value="1000000" />
<input type="range" id="max-triangles" min="10000" max="5000000" step="10000" value="1000000" />
<span class="val" id="max-triangles-val">1.0 M</span>
</div>
<div id="tri-limit-warning" class="tri-limit-warning hidden">