116 lines
5.7 KiB
Markdown
116 lines
5.7 KiB
Markdown
---
|
|
title: OmniPoly
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, front-end, polyhaven, 3d, assets, textures, blender, cgi, libre, docker]
|
|
confidence: medium
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Front-End, https://github.com/kWeglinski/OmniPoly]
|
|
---
|
|
|
|
# 🎨 OmniPoly
|
|
|
|
> **Un front-end self-hosted pour parcourir et télécharger les assets 3D / textures / HDRIs libres de Poly Haven** — sans dépendre du site officiel.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://polyhaven.com/ (catalogue original) |
|
|
| **GitHub** | https://github.com/kWeglinski/OmniPoly |
|
|
| **License** | CC0 (contenu) / AGPL-3.0 (code) |
|
|
| **Langage principal** | TypeScript / Node.js |
|
|
| **Étoiles GitHub** | ~6 ⭐ |
|
|
| **Dernière MAJ** | 2024-2025 (lent) |
|
|
| **Catégorie** | [[cat-front-end]] |
|
|
|
|
## Description
|
|
|
|
**OmniPoly** est un **front-end alternatif pour Poly Haven**, la célèbre bibliothèque d'assets 3D, textures et HDRIs **100% libres (CC0)** utilisée massivement par les graphistes, architectes, développeurs de jeux et makers Blender. Le site officiel est très bien fait, mais OmniPoly ajoute une **couche self-hostable** : on garde la possibilité de naviguer dans le catalogue, filtrer par type (modèles 3D, textures, HDRIs), prévisualiser et télécharger — **sans dépendre de la disponibilité ou des évolutions futures de polyhaven.com**.
|
|
|
|
L'intérêt pratique est triple : **1)** résilience (si polyhaven.com tombe, on a notre miroir), **2)** intégration possible dans un pipeline interne ou un intranet d'école/studio, **3)** personnalisation de l'interface (catégories favorites, langues, branding). OmniPoly agit essentiellement comme un **proxy intelligent** qui réorganise les flux de données publiques de Poly Haven.
|
|
|
|
⚠️ **Note importante** : OmniPoly reste **fortement dépendant de l'API publique de Poly Haven**. Si l'API change ou se ferme, le projet s'arrête. Le rythme de développement est lent (bus factor 1, jeune, peu de contributeurs) — c'est un **projet passion plus qu'un produit mature**. À considérer comme une **brique sympa pour homelab créatif** ou pour des usages éducatifs, pas comme un outil de production critique.
|
|
|
|
## Installation
|
|
|
|
### Via Docker (recommandé)
|
|
|
|
```yaml
|
|
version: "3.8"
|
|
|
|
services:
|
|
omnipoly:
|
|
image: ghcr.io/kweglinski/omnipoly:latest
|
|
container_name: omnipoly
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
- NODE_ENV=production
|
|
- POLYHAVEN_API_BASE=https://api.polyhaven.com
|
|
- DEFAULT_THEME=light
|
|
volumes:
|
|
- omnipoly-cache:/app/cache
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/"]
|
|
interval: 60s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
volumes:
|
|
omnipoly-cache:
|
|
```
|
|
|
|
> **Note** : l'image officielle est publiée sur `ghcr.io/kweglinski/omnipoly`. Vérifier sur le dépôt que la dernière build CI est bien passée avant déploiement.
|
|
|
|
### Installation manuelle
|
|
|
|
1. Cloner le dépôt : `git clone https://github.com/kWeglinski/OmniPoly.git && cd OmniPoly`
|
|
2. Installer Node.js 18+ et npm/yarn
|
|
3. Installer les dépendances : `npm install`
|
|
4. Configurer les variables d'environnement (voir section Configuration)
|
|
5. Compiler pour la production : `npm run build`
|
|
6. Démarrer : `npm start` (par défaut sur le port 3000)
|
|
7. Exposer derrière un reverse proxy HTTPS (Caddy, Traefik, Nginx)
|
|
|
|
## Configuration
|
|
|
|
- **API Poly Haven** : `POLYHAVEN_API_BASE` — laisse le défaut sauf si vous avez un miroir interne
|
|
- **Thème par défaut** : `DEFAULT_THEME=light` ou `dark`
|
|
- **Cache local** : le volume `omnipoly-cache` stocke les vignettes et métadonnées pour limiter les appels API
|
|
- **Filtres** : OmniPoly propose nativement les filtres par catégorie (Modèles, Textures, HDRIs), licence (CC0 partout), popularité
|
|
- **Pas d'auth** : pas d'authentification utilisateur, l'app est publique par défaut
|
|
- **Internationalisation** : interface en anglais, pas de traduction française native
|
|
|
|
## Alternatives
|
|
|
|
### Open source
|
|
- **polyhaven.com** — le site officiel, déjà open et libre, mais non self-hostable
|
|
- **ambientCG** — autre bibliothèque de textures CC0, gérée par la même équipe historique
|
|
- **cgbookcase** — textures CC0 supplémentaires
|
|
|
|
### Propriétaires
|
|
- **Adobe Substance 3D Assets** — la bibliothèque payante d'Adobe, intégrée à la suite Substance
|
|
- **TurboSquid** — marketplace de modèles 3D, qualité variable, licences non toutes libres
|
|
- **3dsky / CGTrader** — marketplaces généralistes, beaucoup de contenu non libre
|
|
|
|
## Sécurité
|
|
|
|
- ✅ **Aucun credential utilisateur** : pas d'auth, donc rien à voler
|
|
- ✅ **CC0 sur le contenu** : tous les assets servis sont dans le domaine public
|
|
- ⚠️ **Dépendance externe forte** : l'app **ne fonctionne pas** si polyhaven.com et son API sont inaccessibles — c'est un proxy, pas un miroir complet
|
|
- ⚠️ **Pas de stockage des assets** : OmniPoly ne ré-héberge pas les fichiers, il sert ceux de Poly Haven. Pour un vrai miroir hors-ligne, voir plutôt `polyhavenassets` (plugin Blender) ou un script de sync manuel
|
|
- **HTTPS obligatoire** en production pour éviter l'écoute des requêtes de prévisualisation
|
|
- **Rate limiting** : Poly Haven a une API publique ; en cas d'usage intensif, l'IP peut être throttlée — activer le cache aide
|
|
- **Bus factor 1 / projet jeune** : pas de garantie de maintenance long terme, garder un œil sur les releases et l'API upstream
|
|
|
|
## Ressources
|
|
- [Dépôt GitHub kWeglinski/OmniPoly](https://github.com/kWeglinski/OmniPoly)
|
|
- [Poly Haven (catalogue original)](https://polyhaven.com/)
|
|
- [API Poly Haven](https://api.polyhaven.com/)
|
|
- [AmbientCG (textures CC0 complémentaires)](https://ambientcg.com/)
|
|
|
|
## Pages Liées
|
|
- [[cat-front-end]]
|
|
- [[recettes-docker-compose]]
|