mirror of
https://github.com/CNCKitchen/stlTexturizer.git
synced 2026-04-07 22:11:32 +00:00
Refactor surface masking and exclusion features
- Renamed "Surface Mask" section to "Mask Angles" for clarity in index.html. - Updated translation keys and tooltips to reflect the new terminology in i18n.js. - Removed the erase toggle button from the exclusion panel and implemented Shift key functionality to toggle erase mode in main.js. - Adjusted brush radius handling to improve user experience and updated related UI elements in index.html. - Enhanced the subdivision process to track original face IDs for better masking accuracy in subdivision.js. - Added CSS styles for new UI elements and improved layout in style.css.
This commit is contained in:
+26
-28
@@ -54,18 +54,18 @@ export const TRANSLATIONS = {
|
||||
'labels.seamBlend': 'Seam Blend \u24d8',
|
||||
'tooltips.seamBlend': 'Softens the hard seam where projection faces meet. Effective for Cubic and Cylindrical modes.',
|
||||
|
||||
// Surface mask section
|
||||
'sections.surfaceMask': 'Surface Mask \u24d8',
|
||||
'tooltips.surfaceMask': '0° = no masking. Surfaces within this angle of horizontal will not be textured.',
|
||||
// Mask angles section
|
||||
'sections.maskAngles': 'Mask Angles \u24d8',
|
||||
'tooltips.maskAngles': '0° = no masking. Surfaces within this angle of horizontal will not be textured.',
|
||||
'labels.bottomFaces': 'Bottom faces',
|
||||
'tooltips.bottomFaces': 'Suppress texture on downward-facing surfaces within this angle of horizontal',
|
||||
'labels.topFaces': 'Top faces',
|
||||
'tooltips.topFaces': 'Suppress texture on upward-facing surfaces within this angle of horizontal',
|
||||
|
||||
// Surface exclusions section
|
||||
'sections.surfaceExclusions': 'Surface Exclusions \u24d8',
|
||||
// Surface masking section
|
||||
'sections.surfaceMasking': 'Surface Masking \u24d8',
|
||||
'sections.surfaceSelection': 'Surface Selection',
|
||||
'tooltips.surfaceExclusions': 'Excluded surfaces appear orange and will not receive displacement during export.',
|
||||
'tooltips.surfaceMasking': 'Mask surfaces to control which areas receive displacement.',
|
||||
'tooltips.surfaceSelection': 'Selected surfaces appear green and will be the only ones to receive displacement during export.',
|
||||
'excl.modeExclude': 'Exclude',
|
||||
'excl.modeExcludeTitle': 'Exclude mode: painted surfaces will not receive texture displacement',
|
||||
@@ -75,21 +75,20 @@ export const TRANSLATIONS = {
|
||||
'excl.toolBrushTitle': 'Brush: paint triangles to exclude',
|
||||
'excl.toolFill': 'Fill',
|
||||
'excl.toolFillTitle': 'Bucket fill: flood-fill surface up to a threshold angle',
|
||||
'excl.toolErase': 'Erase',
|
||||
'excl.toolEraseTitle': 'Toggle: mark or erase mode',
|
||||
'excl.shiftHint': 'Hold Shift to erase',
|
||||
'labels.type': 'Type',
|
||||
'brushType.single': 'Single',
|
||||
'brushType.radius': 'Radius',
|
||||
'labels.radius': 'Radius',
|
||||
'brushType.circle': 'Circle',
|
||||
'labels.size': 'Size',
|
||||
'labels.maxAngle': 'Max angle',
|
||||
'tooltips.maxAngle': 'Maximum dihedral angle between adjacent triangles for the fill to cross',
|
||||
'ui.clearAll': 'Clear All',
|
||||
'excl.initExcluded': '0 faces excluded',
|
||||
'excl.faceExcluded': '{n} face excluded',
|
||||
'excl.facesExcluded': '{n} faces excluded',
|
||||
'excl.initExcluded': '0 faces masked',
|
||||
'excl.faceExcluded': '{n} face masked',
|
||||
'excl.facesExcluded': '{n} faces masked',
|
||||
'excl.faceSelected': '{n} face selected',
|
||||
'excl.facesSelected': '{n} faces selected',
|
||||
'excl.hintExclude': 'Excluded surfaces appear orange and will not receive displacement during export.',
|
||||
'excl.hintExclude': 'Masked surfaces appear orange and will not receive displacement during export.',
|
||||
'excl.hintInclude': 'Selected surfaces appear green and will be the only ones to receive displacement during export.',
|
||||
|
||||
// Symmetric displacement
|
||||
@@ -199,18 +198,18 @@ export const TRANSLATIONS = {
|
||||
'labels.seamBlend': 'Nahtglättung \u24d8',
|
||||
'tooltips.seamBlend': 'Glättet den scharfen Übergang zwischen Projektionsflächen. Wirksam für Kubische und Zylindrische Modi.',
|
||||
|
||||
// Surface mask section
|
||||
'sections.surfaceMask': 'Fl\u00e4chenmaskierung nach Winkel\u24d8',
|
||||
'tooltips.surfaceMask': '0° = keine Maskierung. Fl\u00e4chen innerhalb dieses Winkels zur Horizontalen werden nicht texturiert.',
|
||||
// Winkelmaskierung
|
||||
'sections.maskAngles': 'Winkel maskieren \u24d8',
|
||||
'tooltips.maskAngles': '0° = keine Maskierung. Fl\u00e4chen innerhalb dieses Winkels zur Horizontalen werden nicht texturiert.',
|
||||
'labels.bottomFaces': 'Unterseiten',
|
||||
'tooltips.bottomFaces': 'Textur auf nach unten gerichteten Fl\u00e4chen innerhalb dieses Winkels zur Horizontalen unterdr\u00fccken',
|
||||
'labels.topFaces': 'Oberseiten',
|
||||
'tooltips.topFaces': 'Textur auf nach oben gerichteten Fl\u00e4chen innerhalb dieses Winkels zur Horizontalen unterdr\u00fccken',
|
||||
|
||||
// Surface exclusions section
|
||||
'sections.surfaceExclusions': 'Manuelle Fl\u00e4chenmaskierung \u24d8',
|
||||
// Surface masking section
|
||||
'sections.surfaceMasking': 'Fl\u00e4chenmaskierung \u24d8',
|
||||
'sections.surfaceSelection': 'Fl\u00e4chenauswahl',
|
||||
'tooltips.surfaceExclusions': 'Ausgeschlossene Fl\u00e4chen erscheinen orange und erhalten beim Export keine Verschiebung.',
|
||||
'tooltips.surfaceMasking': 'Fl\u00e4chen maskieren, um zu steuern, welche Bereiche Verschiebung erhalten.',
|
||||
'tooltips.surfaceSelection': 'Ausgew\u00e4hlte Fl\u00e4chen erscheinen gr\u00fcn und sind die einzigen, die beim Export eine Verschiebung erhalten.',
|
||||
'excl.modeExclude': 'Ausschlie\u00dfen',
|
||||
'excl.modeExcludeTitle': 'Ausschlussmodus: bemalte Fl\u00e4chen erhalten keine Texturverschiebung',
|
||||
@@ -220,21 +219,20 @@ export const TRANSLATIONS = {
|
||||
'excl.toolBrushTitle': 'Pinsel: Dreiecke zum Ausschlie\u00dfen einf\u00e4rben',
|
||||
'excl.toolFill': 'F\u00fcllen',
|
||||
'excl.toolFillTitle': 'F\u00fcllen: Fl\u00e4che bis zu einem Winkel fluten',
|
||||
'excl.toolErase': 'Radieren',
|
||||
'excl.toolEraseTitle': 'Umschalten: Markieren oder Radieren',
|
||||
'excl.shiftHint': 'Shift gedr\u00fcckt halten zum Radieren',
|
||||
'labels.type': 'Typ',
|
||||
'brushType.single': 'Einzeln',
|
||||
'brushType.radius': 'Radius',
|
||||
'labels.radius': 'Radius',
|
||||
'brushType.circle': 'Kreis',
|
||||
'labels.size': 'Gr\u00f6\u00dfe',
|
||||
'labels.maxAngle': 'Max. Winkel',
|
||||
'tooltips.maxAngle': 'Maximaler Di\u00e4dralwinkel zwischen angrenzenden Dreiecken f\u00fcr die F\u00fcllung',
|
||||
'ui.clearAll': 'Alles l\u00f6schen',
|
||||
'excl.initExcluded': '0 Fl\u00e4chen ausgeschlossen',
|
||||
'excl.faceExcluded': '{n} Fl\u00e4che ausgeschlossen',
|
||||
'excl.facesExcluded': '{n} Fl\u00e4chen ausgeschlossen',
|
||||
'excl.initExcluded': '0 Fl\u00e4chen maskiert',
|
||||
'excl.faceExcluded': '{n} Fl\u00e4che maskiert',
|
||||
'excl.facesExcluded': '{n} Fl\u00e4chen maskiert',
|
||||
'excl.faceSelected': '{n} Fl\u00e4che ausgew\u00e4hlt',
|
||||
'excl.facesSelected': '{n} Fl\u00e4chen ausgew\u00e4hlt',
|
||||
'excl.hintExclude': 'Ausgeschlossene Fl\u00e4chen erscheinen orange und erhalten beim Export keine Verschiebung.',
|
||||
'excl.hintExclude': 'Maskierte Fl\u00e4chen erscheinen orange und erhalten beim Export keine Verschiebung.',
|
||||
'excl.hintInclude': 'Ausgew\u00e4hlte Fl\u00e4chen erscheinen gr\u00fcn und sind die einzigen, die beim Export eine Verschiebung erhalten.',
|
||||
|
||||
// Symmetric displacement
|
||||
|
||||
Reference in New Issue
Block a user