mirror of
https://github.com/CNCKitchen/stlTexturizer.git
synced 2026-04-07 22:11:32 +00:00
feat: update README and add GitHub links in header and license section
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
# STL Texturizer
|
# BumpMesh by CNC Kitchen
|
||||||
|
|
||||||
**Live demo:** https://cnckitchen.github.io/stlTexturizer/
|
**Live:** https://bumpmesh.com
|
||||||
|
**GitHub:** https://github.com/CNCKitchen/stlTexturizer
|
||||||
|
|
||||||
A browser-based tool for applying surface displacement textures to 3D meshes — no installation required.
|
A browser-based tool for applying surface displacement textures to 3D meshes — no installation required.
|
||||||
|
|
||||||
@@ -9,8 +10,9 @@ Load an STL, OBJ, or 3MF file, pick a texture, tune the parameters, and export a
|
|||||||
## Features
|
## Features
|
||||||
|
|
||||||
### Textures
|
### Textures
|
||||||
- **18 built-in seamless textures** — basket, brick, bubble, carbon fiber, crystal, dots, grip surface, hexagons, knitting, knurling, leather, leather 2, noise, voronoi, weave (×3 variants), wood
|
- **24 built-in seamless textures** — basket, brick, bubble, carbon fiber, crystal, dots, grid, grip surface, hexagon, hexagons, isogrid, knitting, knurling, leather 2, noise, stripes (×2 variants), voronoi, weave (×3 variants), wood (×3 variants)
|
||||||
- **Custom textures** — upload your own image as a displacement map
|
- **Custom textures** — upload your own image as a displacement map
|
||||||
|
- **Texture smoothing** — configurable blur to soften the displacement map before applying
|
||||||
|
|
||||||
### Projection Modes
|
### Projection Modes
|
||||||
- **Triplanar** (default) — blends three planar projections based on surface normals; best for complex shapes
|
- **Triplanar** (default) — blends three planar projections based on surface normals; best for complex shapes
|
||||||
@@ -83,7 +85,9 @@ Load an STL, OBJ, or 3MF file, pick a texture, tune the parameters, and export a
|
|||||||
```
|
```
|
||||||
index.html # Main entry point
|
index.html # Main entry point
|
||||||
style.css # Styles (light / dark theme)
|
style.css # Styles (light / dark theme)
|
||||||
textures/ # Built-in JPG displacement map images (18 textures)
|
logo.png # Favicon & header logo
|
||||||
|
CNAME # Custom domain (bumpmesh.com)
|
||||||
|
textures/ # Built-in JPG/PNG displacement map images (24 textures)
|
||||||
js/
|
js/
|
||||||
main.js # App bootstrap & UI wiring
|
main.js # App bootstrap & UI wiring
|
||||||
viewer.js # Three.js scene / camera / controls
|
viewer.js # Three.js scene / camera / controls
|
||||||
@@ -99,6 +103,42 @@ js/
|
|||||||
i18n.js # Translations (EN / DE)
|
i18n.js # Translations (EN / DE)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Run Locally
|
||||||
|
|
||||||
|
All processing runs entirely in the browser — no backend or build step is needed. You just need a local HTTP server because browsers block ES module imports and texture loading from `file://` URLs.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone the repository
|
||||||
|
git clone https://github.com/CNCKitchen/stlTexturizer.git
|
||||||
|
cd stlTexturizer
|
||||||
|
```
|
||||||
|
|
||||||
|
Then start any static file server from the project root. Pick whichever you have installed:
|
||||||
|
|
||||||
|
**Python (3.x)**
|
||||||
|
```bash
|
||||||
|
python -m http.server 8000
|
||||||
|
```
|
||||||
|
|
||||||
|
**Python (2.x)**
|
||||||
|
```bash
|
||||||
|
python -m SimpleHTTPServer 8000
|
||||||
|
```
|
||||||
|
|
||||||
|
**Node.js (npx, no install needed)**
|
||||||
|
```bash
|
||||||
|
npx serve .
|
||||||
|
```
|
||||||
|
|
||||||
|
**PHP**
|
||||||
|
```bash
|
||||||
|
php -S localhost:8000
|
||||||
|
```
|
||||||
|
|
||||||
|
Open http://localhost:8000 in your browser and you're ready to go.
|
||||||
|
|
||||||
|
> **Tip:** Any static server will work — the app has no server-side dependencies.
|
||||||
|
|
||||||
## Dependencies
|
## Dependencies
|
||||||
|
|
||||||
Loaded via CDN — no build step needed:
|
Loaded via CDN — no build step needed:
|
||||||
|
|||||||
@@ -55,6 +55,9 @@
|
|||||||
<span class="icon-moon" data-i18n="theme.dark">Dark Theme</span>
|
<span class="icon-moon" data-i18n="theme.dark">Dark Theme</span>
|
||||||
<span class="icon-sun" data-i18n="theme.light">Light Theme</span>
|
<span class="icon-sun" data-i18n="theme.light">Light Theme</span>
|
||||||
</button>
|
</button>
|
||||||
|
<a href="https://github.com/CNCKitchen/stlTexturizer" target="_blank" rel="noopener noreferrer" class="github-link" title="GitHub Repository" aria-label="GitHub Repository">
|
||||||
|
<svg width="20" height="20" viewBox="0 0 16 16" fill="currentColor"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27s1.36.09 2 .27c1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.01 8.01 0 0 0 16 8c0-4.42-3.58-8-8-8Z"/></svg>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@@ -380,6 +383,7 @@
|
|||||||
<li data-i18n-html="license.item6">The author shall not be held <strong>liable</strong> for any damages, data loss, or issues arising from the use of this tool.</li>
|
<li data-i18n-html="license.item6">The author shall not be held <strong>liable</strong> for any damages, data loss, or issues arising from the use of this tool.</li>
|
||||||
<li data-i18n-html="license.item7">Want to license or embed this tool for your own business or website? Contact us at <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.</li>
|
<li data-i18n-html="license.item7">Want to license or embed this tool for your own business or website? Contact us at <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.</li>
|
||||||
<li data-i18n-html="license.item3">Support this tool? Shop at <a href="https://geni.us/CNCStoreTexture" target="_blank" rel="noopener">CNCKitchen.STORE</a> or donate on <a href="https://www.paypal.me/CNCKitchen" target="_blank" rel="noopener">PayPal</a>.</li>
|
<li data-i18n-html="license.item3">Support this tool? Shop at <a href="https://geni.us/CNCStoreTexture" target="_blank" rel="noopener">CNCKitchen.STORE</a> or donate on <a href="https://www.paypal.me/CNCKitchen" target="_blank" rel="noopener">PayPal</a>.</li>
|
||||||
|
<li data-i18n-html="license.item8">Source code available on <a href="https://github.com/CNCKitchen/stlTexturizer" target="_blank" rel="noopener">GitHub</a>.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ export const TRANSLATIONS = {
|
|||||||
'license.item5': '<strong>No support</strong> is provided. The author is under no obligation to fix bugs, answer questions, or update this tool. That said, bug reports and feature requests are always welcome at <a href="mailto:texturizer@cnckitchen.com">texturizer@cnckitchen.com</a>.',
|
'license.item5': '<strong>No support</strong> is provided. The author is under no obligation to fix bugs, answer questions, or update this tool. That said, bug reports and feature requests are always welcome at <a href="mailto:texturizer@cnckitchen.com">texturizer@cnckitchen.com</a>.',
|
||||||
'license.item6': 'The author shall not be held <strong>liable</strong> for any damages, data loss, or issues arising from the use of this tool.',
|
'license.item6': 'The author shall not be held <strong>liable</strong> for any damages, data loss, or issues arising from the use of this tool.',
|
||||||
'license.item7': 'Want to license or embed this tool for your own business or website? Contact us at <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.',
|
'license.item7': 'Want to license or embed this tool for your own business or website? Contact us at <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.',
|
||||||
|
'license.item8': 'Source code available on <a href="https://github.com/CNCKitchen/stlTexturizer" target="_blank" rel="noopener">GitHub</a>.',
|
||||||
|
|
||||||
// Imprint & Privacy
|
// Imprint & Privacy
|
||||||
'imprint.btn': 'Imprint & Privacy',
|
'imprint.btn': 'Imprint & Privacy',
|
||||||
@@ -337,6 +338,7 @@ export const TRANSLATIONS = {
|
|||||||
'license.item5': 'Es wird <strong>kein Support</strong> geleistet. Der Autor ist nicht verpflichtet, Fehler zu beheben, Fragen zu beantworten oder das Tool zu aktualisieren. Fehlerberichte und Funktionswünsche sind aber jederzeit willkommen unter <a href="mailto:texturizer@cnckitchen.com">texturizer@cnckitchen.com</a>.',
|
'license.item5': 'Es wird <strong>kein Support</strong> geleistet. Der Autor ist nicht verpflichtet, Fehler zu beheben, Fragen zu beantworten oder das Tool zu aktualisieren. Fehlerberichte und Funktionswünsche sind aber jederzeit willkommen unter <a href="mailto:texturizer@cnckitchen.com">texturizer@cnckitchen.com</a>.',
|
||||||
'license.item6': 'Der Autor haftet nicht f\u00fcr <strong>Sch\u00e4den</strong>, Datenverlust oder Probleme, die durch die Nutzung dieses Tools entstehen.',
|
'license.item6': 'Der Autor haftet nicht f\u00fcr <strong>Sch\u00e4den</strong>, Datenverlust oder Probleme, die durch die Nutzung dieses Tools entstehen.',
|
||||||
'license.item7': 'Sie m\u00f6chten dieses Tool f\u00fcr Ihr eigenes Unternehmen oder Ihre Website lizenzieren oder einbinden? Kontaktieren Sie uns unter <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.',
|
'license.item7': 'Sie m\u00f6chten dieses Tool f\u00fcr Ihr eigenes Unternehmen oder Ihre Website lizenzieren oder einbinden? Kontaktieren Sie uns unter <a href="mailto:contact@cnckitchen.com">contact@cnckitchen.com</a>.',
|
||||||
|
'license.item8': 'Quellcode verf\u00fcgbar auf <a href="https://github.com/CNCKitchen/stlTexturizer" target="_blank" rel="noopener">GitHub</a>.',
|
||||||
|
|
||||||
// Impressum & Datenschutz
|
// Impressum & Datenschutz
|
||||||
'imprint.btn': 'Impressum & Datenschutz',
|
'imprint.btn': 'Impressum & Datenschutz',
|
||||||
|
|||||||
@@ -103,6 +103,24 @@
|
|||||||
[data-theme="light"] .theme-toggle .icon-moon { display: none; }
|
[data-theme="light"] .theme-toggle .icon-moon { display: none; }
|
||||||
[data-theme="light"] .theme-toggle .icon-sun { display: block; }
|
[data-theme="light"] .theme-toggle .icon-sun { display: block; }
|
||||||
|
|
||||||
|
.github-link {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 28px;
|
||||||
|
height: 28px;
|
||||||
|
background: var(--surface2);
|
||||||
|
border: 1px solid var(--border);
|
||||||
|
border-radius: var(--radius);
|
||||||
|
color: var(--text-muted);
|
||||||
|
transition: background 0.15s, border-color 0.15s, color 0.15s;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
.github-link:hover {
|
||||||
|
border-color: var(--accent);
|
||||||
|
color: var(--accent);
|
||||||
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
font-family: 'Segoe UI', system-ui, sans-serif;
|
font-family: 'Segoe UI', system-ui, sans-serif;
|
||||||
|
|||||||
Reference in New Issue
Block a user