claude-code-arcane 2.6.1 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +8 -4
- package/dist/cli.js +349 -143
- package/docs/SKILLS-CATALOG.md +19 -3
- package/docs/USER-GUIDE.md +3 -3
- package/hooks/validate-commit.sh +36 -0
- package/package.json +1 -1
- package/profiles/blender.yaml +49 -0
- package/profiles/freelance.yaml +1 -0
- package/rules/blender-pipeline.md +95 -0
- package/skills/arcane-add/SKILL.md +29 -2
- package/skills/blender-animation/SKILL.md +167 -0
- package/skills/blender-context/SKILL.md +145 -0
- package/skills/blender-export/SKILL.md +143 -0
- package/skills/blender-export/scripts/validate_gltf.py +362 -0
- package/skills/blender-materials/SKILL.md +165 -0
- package/skills/blender-modeling/SKILL.md +160 -0
- package/skills/fiverr-gig/SKILL.md +147 -0
- package/skills/freelance-scan/references/platforms.md +2 -0
- package/skills/meshy-derive/SKILL.md +3 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blender-modeling
|
|
3
|
+
description: "Modelado en Blender para assets de juego: presupuesto de triangulos, topologia (quads, edge loops, poles), stack de modifiers, booleans, LODs y retopo, bmesh via script. Usar para: modelar en blender, topologia, modifiers, retopo, LOD, decimate."
|
|
4
|
+
category: "gamedev"
|
|
5
|
+
argument-hint: "[asset-slug] [--budget <tris>] [--lod]"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Bash, Write, Edit
|
|
8
|
+
---
|
|
9
|
+
# blender-modeling — Geometria
|
|
10
|
+
|
|
11
|
+
Modela o corrige geometria con destino a un engine. Lo que sale de aca tiene que deformar bien,
|
|
12
|
+
entrar en presupuesto y exportar sin sorpresas.
|
|
13
|
+
|
|
14
|
+
> Requiere `/blender-context`. Si no corrio, correrlo primero: sin destino definido el presupuesto
|
|
15
|
+
> de tris y los ejes son adivinanza.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Phase 1: Presupuesto antes de modelar
|
|
20
|
+
|
|
21
|
+
El presupuesto se declara primero y se mide despues. Al reves no funciona: nadie borra la mitad de
|
|
22
|
+
un asset terminado.
|
|
23
|
+
|
|
24
|
+
| Rol del asset | Rango de tris | Nota |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| Prop de fondo, mobile | 300 - 2k | Un solo material |
|
|
27
|
+
| Prop interactivo | 2k - 8k | |
|
|
28
|
+
| Personaje mobile / VR | 8k - 20k | VR paga doble: se renderiza dos veces |
|
|
29
|
+
| Personaje desktop | 20k - 60k | |
|
|
30
|
+
| Hero / cinematica | 60k+ | Necesita LODs propios |
|
|
31
|
+
|
|
32
|
+
Si el usuario da un numero, ese manda. Si no, proponer el rango segun rol y destino y **pedir
|
|
33
|
+
confirmacion** — no elegir en silencio.
|
|
34
|
+
|
|
35
|
+
En UE5 los static meshes van a Nanite y el presupuesto de tris deja de importar; los **skeletal
|
|
36
|
+
meshes no van a Nanite** y siguen necesitando LODs. Distinguirlo antes de dar un numero.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Phase 2: Diagnostico de la malla
|
|
41
|
+
|
|
42
|
+
Sobre un asset que ya existe, medir antes de opinar. Headless:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
blender --background <archivo.blend> --python-expr "
|
|
46
|
+
import bpy
|
|
47
|
+
for o in bpy.data.objects:
|
|
48
|
+
if o.type != 'MESH': continue
|
|
49
|
+
m = o.data
|
|
50
|
+
ngons = sum(1 for p in m.polygons if len(p.vertices) > 4)
|
|
51
|
+
tris = sum(len(p.vertices) - 2 for p in m.polygons)
|
|
52
|
+
print(f'{o.name}: verts={len(m.vertices)} tris={tris} ngons={ngons} '
|
|
53
|
+
f'uv_layers={len(m.uv_layers)} materials={len(o.material_slots)} scale={tuple(o.scale)}')
|
|
54
|
+
"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Que se mira, en este orden:
|
|
58
|
+
|
|
59
|
+
1. **Escala distinta de 1** → conversion de unidades sin aplicar. Se arregla antes que nada.
|
|
60
|
+
2. **N-gons en geometria que deforma** → se resuelven, no se documentan.
|
|
61
|
+
3. **Tris fuera de presupuesto** → decidir si se reduce o si se sube el presupuesto, con el usuario.
|
|
62
|
+
4. **Cero UV layers** → el asset no puede texturizarse; es trabajo de `/blender-materials`.
|
|
63
|
+
5. **Muchos materiales** → cada uno es un draw call.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Phase 3: Topologia
|
|
68
|
+
|
|
69
|
+
Reglas que no se negocian en geometria que deforma:
|
|
70
|
+
|
|
71
|
+
- **Quads.** Tris solo en estatico, n-gons en nada.
|
|
72
|
+
- **Edge loops en articulaciones**: hombro, codo, rodilla, mandibula. Sin loops no hay deformacion
|
|
73
|
+
posible, y eso no se arregla con weights.
|
|
74
|
+
- **Poles de 5 aristas o menos.** Un pole de 6+ pincha el shading.
|
|
75
|
+
- Densidad proporcional a la deformacion: la cara lleva mas malla que el torso.
|
|
76
|
+
|
|
77
|
+
En geometria estatica lo unico que importa es la silueta y la eficiencia. Un cubo con 12 tris esta
|
|
78
|
+
perfecto; subdividirlo "por prolijidad" es desperdicio.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Phase 4: Modifiers
|
|
83
|
+
|
|
84
|
+
El stack es no destructivo y **el orden cambia el resultado**. Orden que funciona casi siempre:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Mirror → Array → Solidify → Bevel → Subdivision Surface → Triangulate (solo al exportar)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
- **Mirror antes de Subdivision**, nunca al reves: si no, la costura queda subdividida dos veces.
|
|
91
|
+
- **Bevel antes de Subdivision** para bordes duros; con `Harden Normals` si el destino no tiene
|
|
92
|
+
soporte de custom normals.
|
|
93
|
+
- **Triangulate no va en el stack de trabajo.** El exporter triangula solo; tenerlo puesto solo
|
|
94
|
+
ensucia la edicion.
|
|
95
|
+
- No aplicar el stack "para dejarlo limpio". Se aplica cuando hace falta editar el resultado, y
|
|
96
|
+
ahi se pierde la vuelta atras.
|
|
97
|
+
|
|
98
|
+
Booleans: solver `Exact` para precision, `Fast` para volumen. Los dos dejan basura — despues de un
|
|
99
|
+
boolean va limpieza de topologia, siempre. Un boolean sin limpiar en algo que deforma es un bug
|
|
100
|
+
esperando.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Phase 5: LODs y reduccion
|
|
105
|
+
|
|
106
|
+
| Metodo | Cuando | Que rompe |
|
|
107
|
+
|---|---|---|
|
|
108
|
+
| Decimate `Collapse` | LOD1/LOD2 de props | Topologia; no sirve para deformar |
|
|
109
|
+
| Decimate `Planar` | Geometria dura, superficies planas | Detalle en curvas |
|
|
110
|
+
| Retopo a mano | Heroes, cualquier cosa que deforme | Nada, cuesta tiempo |
|
|
111
|
+
| Remesh (o `meshy_remesh`) | Escaneos y salidas de IA con topologia inservible | UVs, hay que rehacerlas |
|
|
112
|
+
|
|
113
|
+
Cadena tipica de LODs: 100% → 50% → 25%. Verificar la silueta a distancia de juego, no en el
|
|
114
|
+
viewport de cerca.
|
|
115
|
+
|
|
116
|
+
**Un Decimate no es un LOD terminado**, es un borrador. Para heroes se dice explicitamente que
|
|
117
|
+
hace falta retopo y no se entrega como final.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Phase 6: Scripting con bmesh
|
|
122
|
+
|
|
123
|
+
Para ediciones programaticas, `bmesh` sobre `bpy.ops`:
|
|
124
|
+
|
|
125
|
+
- `bpy.ops.*` depende del contexto (modo, seleccion, area activa) y en `--background` falla o hace
|
|
126
|
+
otra cosa.
|
|
127
|
+
- `bmesh.from_edit_mesh(me)` / `bmesh.new()` + `bm.to_mesh(me)` es determinista.
|
|
128
|
+
- **Nunca `bpy.ops` dentro de un loop**: cada llamada revalida la escena entera y el costo es
|
|
129
|
+
cuadratico.
|
|
130
|
+
|
|
131
|
+
Todo script que borra datos (`bpy.data.meshes.remove`, `objects.remove`) se le muestra al usuario
|
|
132
|
+
antes de correrlo. Sin excepcion.
|
|
133
|
+
|
|
134
|
+
Los scripts se versionan en el repo. **Pedir aprobacion antes de escribir** cualquier `.py` nuevo o
|
|
135
|
+
de modificar uno existente, mostrando que va a hacer.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Phase 7: Resumen
|
|
140
|
+
|
|
141
|
+
Reportar por objeto: verts, tris, n-gons, materiales, escala, y tris contra el presupuesto.
|
|
142
|
+
|
|
143
|
+
**Verdict:**
|
|
144
|
+
- **PASS** — dentro de presupuesto, sin n-gons donde importa, escala aplicada.
|
|
145
|
+
- **CONCERNS** — entra pero con deuda: n-gons en estatico, materiales de sobra, LOD por Decimate
|
|
146
|
+
en algo que deforma. Listar cada punto.
|
|
147
|
+
- **FAIL** — fuera de presupuesto, n-gons en geometria que deforma, o escala sin aplicar.
|
|
148
|
+
Indicar el fix por objeto.
|
|
149
|
+
|
|
150
|
+
## Next Steps
|
|
151
|
+
|
|
152
|
+
- `/blender-materials` para UVs, shader nodes y bake
|
|
153
|
+
- `/blender-animation` si el asset lleva rig
|
|
154
|
+
- `/blender-export` cuando la geometria esta cerrada
|
|
155
|
+
- `/asset-audit` para validar el resultado ya integrado en el proyecto
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
> → Topologia, presupuestos, ejes y las reglas de scripts destructivos estan en
|
|
160
|
+
> `.claude/rules/blender-pipeline.md`.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fiverr-gig
|
|
3
|
+
description: "Construye el gig de Fiverr: titulo I will, tags de busqueda, los tres packages con precio derivado del piso neto, gallery, FAQ y requirements. Triggers: gig de fiverr, fiverr, packages basic standard premium, precio del gig, tags de fiverr, vender en fiverr."
|
|
4
|
+
argument-hint: "[audit | title | packages | gallery | faq | price]"
|
|
5
|
+
category: "career"
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebFetch
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Fiverr Gig - El lado de la oferta
|
|
11
|
+
|
|
12
|
+
Fiverr funciona al revés que Upwork: **no te postulás, publicás.** El gig queda parado y el
|
|
13
|
+
comprador te encuentra buscando. Los Buyer Requests ya no existen, así que no hay cola de ofertas
|
|
14
|
+
que scorear - por eso `/freelance-scan` excluye Fiverr a propósito, y este skill es el que cubre lo
|
|
15
|
+
que ahí falta.
|
|
16
|
+
|
|
17
|
+
Consecuencia práctica: un gig es un **activo**, no una postulación. Se escribe una vez bien y se
|
|
18
|
+
itera con datos (impresiones → clicks → órdenes), no se reescribe por cada cliente.
|
|
19
|
+
|
|
20
|
+
Rutas relativas al career workspace (`--workspace`, env `CAREER_WORKSPACE`, o `./career-workspace/`).
|
|
21
|
+
|
|
22
|
+
Modo: `$ARGUMENTS`
|
|
23
|
+
|
|
24
|
+
## Inputs
|
|
25
|
+
|
|
26
|
+
- **El perfil maestro** de `01-Perfiles/` - la fuente de verdad del nicho, el stack y los números.
|
|
27
|
+
Si no existe, correr `/master-profile` primero.
|
|
28
|
+
- **El piso de tarifa neto** definido en `/freelance-hunt`. Sin piso no se puede fijar precio: se
|
|
29
|
+
estaría adivinando.
|
|
30
|
+
- **El gig actual**, si ya existe: URL pública → WebFetch, o pegado.
|
|
31
|
+
|
|
32
|
+
## Modos
|
|
33
|
+
|
|
34
|
+
### `audit` - Revisar el gig actual
|
|
35
|
+
|
|
36
|
+
Recorrer los cinco elementos de abajo y reportar qué falta, priorizado por impacto. Empezar siempre
|
|
37
|
+
por **título, primera imagen de la gallery y precio del Basic**: son los únicos tres que se ven en
|
|
38
|
+
los resultados de búsqueda, antes de que alguien haga click.
|
|
39
|
+
|
|
40
|
+
### `title` - El título
|
|
41
|
+
|
|
42
|
+
Arranca con `I will` por convención de la plataforma, y es lo que indexa la búsqueda.
|
|
43
|
+
|
|
44
|
+
- **Nicho concreto, no rol.** "I will develop your Unity game" compite con todo el mundo. "I will
|
|
45
|
+
build multiplayer gameplay for your Unity mobile game" compite con pocos y aparece en la búsqueda
|
|
46
|
+
que importa.
|
|
47
|
+
- Las palabras que usa el comprador, no las tuyas. El comprador no busca "gameplay architecture",
|
|
48
|
+
busca "multiplayer".
|
|
49
|
+
- Sin superlativos ni "professional": no aportan y ocupan caracteres que sí indexan.
|
|
50
|
+
- **Los tags (hasta 5) son parte del título, funcionalmente.** Elegirlos del mismo vocabulario, sin
|
|
51
|
+
repetir la misma palabra cinco veces.
|
|
52
|
+
|
|
53
|
+
Proponer siempre **2 variantes** para elegir.
|
|
54
|
+
|
|
55
|
+
### `packages` - Los tres niveles
|
|
56
|
+
|
|
57
|
+
El error clásico es hacer tres versiones del mismo trabajo con distinto precio. Los packages tienen
|
|
58
|
+
que separarse por **alcance**, no por velocidad ni por ganas.
|
|
59
|
+
|
|
60
|
+
| | Basic | Standard | Premium |
|
|
61
|
+
|---|---|---|---|
|
|
62
|
+
| Qué es | La unidad mínima entregable y útil | **El que se quiere vender** | El techo, para el comprador que ya decidió |
|
|
63
|
+
| Alcance | Una cosa, definida | Lo del Basic más lo que casi todos terminan pidiendo | Alcance completo, con lo que consume tiempo real |
|
|
64
|
+
| Rol | Filtro de entrada y precio de referencia | Ancla: se compara contra los otros dos y gana | Sube el promedio y hace que el Standard parezca razonable |
|
|
65
|
+
|
|
66
|
+
Reglas duras:
|
|
67
|
+
|
|
68
|
+
- **El alcance va escrito en el package.** Lo que no está escrito es scope creep sin change order
|
|
69
|
+
posible: en Fiverr no hay renegociación a mitad de camino, hay una orden con un alcance.
|
|
70
|
+
- **Revisiones con número.** "Unlimited revisions" es una promesa que destruye el margen y no se
|
|
71
|
+
puede retirar sin cancelar la orden.
|
|
72
|
+
- **Delivery time realista, no competitivo.** Entregar tarde pega en el nivel de la cuenta, que no
|
|
73
|
+
se edita. Un día extra en el gig cuesta menos que una entrega tarde.
|
|
74
|
+
- Los **gig extras** son para lo que es genuinamente opcional (fuente editable, licencia comercial,
|
|
75
|
+
entrega express), no para partir en pedazos algo que el package ya prometió.
|
|
76
|
+
|
|
77
|
+
### `gallery` - Lo que se ve
|
|
78
|
+
|
|
79
|
+
- **La primera imagen es el gig en la búsqueda.** Tiene que leerse en miniatura: una idea, texto
|
|
80
|
+
grande, cero decoración.
|
|
81
|
+
- Después: el resultado real, no el proceso. Un before/after gana a cualquier mockup.
|
|
82
|
+
- Video corto si el trabajo se entiende mejor en movimiento (animación, gameplay, motion).
|
|
83
|
+
- Nunca material de un cliente sin permiso ni bajo NDA. Si no se puede mostrar, se reconstruye un
|
|
84
|
+
ejemplo propio equivalente y **se dice que es un ejemplo**.
|
|
85
|
+
|
|
86
|
+
### `faq` - Las objeciones, adelantadas
|
|
87
|
+
|
|
88
|
+
Cada FAQ existe para sacar una objeción del camino antes de que alguien escriba un mensaje. Las que
|
|
89
|
+
casi siempre hacen falta: qué necesitás para arrancar, qué pasa si no gusta, si el precio incluye
|
|
90
|
+
la fuente editable, si se puede usar comercialmente, qué **no** incluye el gig.
|
|
91
|
+
|
|
92
|
+
Decir qué no hacés filtra al comprador equivocado, que es el que después califica mal.
|
|
93
|
+
|
|
94
|
+
### `price` - El precio
|
|
95
|
+
|
|
96
|
+
- Se deriva del **piso neto** de `01-Perfiles/` más la comisión de la plataforma. Fiverr retiene un
|
|
97
|
+
porcentaje del valor de la orden (históricamente 20%): verificar el vigente antes de fijar, y
|
|
98
|
+
cargarlo sobre el piso, no descontarlo del precio pensado.
|
|
99
|
+
- El precio del Basic es el que aparece en la búsqueda: es filtro de tráfico, no la venta esperada.
|
|
100
|
+
- **Arrancar barato para conseguir las primeras reviews es una trampa conocida**: atrae compradores
|
|
101
|
+
de precio, que son los que más piden y peor califican, y las reviews que dejan son las que
|
|
102
|
+
después determinan el nivel de la cuenta. Si falta historial, la palanca es **acotar el nicho**,
|
|
103
|
+
no bajar el precio.
|
|
104
|
+
- Un gig con precio arriba del mercado y nicho angosto convierte peor en volumen y mejor en plata.
|
|
105
|
+
Esa es la elección, y la hace el usuario, no el skill.
|
|
106
|
+
|
|
107
|
+
## Lo que el gig no controla
|
|
108
|
+
|
|
109
|
+
El **nivel de la cuenta** (New Seller → Level 1 → Level 2 → Top Rated) y la métrica de respuesta no
|
|
110
|
+
se editan: salen de órdenes completadas, calificaciones, entregas a tiempo y tiempo de respuesta.
|
|
111
|
+
Es el mismo problema que el Job Success Score en Upwork, y se protege igual - eligiendo qué órdenes
|
|
112
|
+
se aceptan y qué alcance se promete, no escribiendo mejor el gig.
|
|
113
|
+
|
|
114
|
+
Las **impresiones** tampoco: dependen del algoritmo de búsqueda. Lo que el gig sí controla es la
|
|
115
|
+
conversión de impresión a click (título y primera imagen) y de click a orden (packages y FAQ). Si
|
|
116
|
+
las impresiones son bajas, el problema es el nicho o los tags; si son altas y no hay órdenes, el
|
|
117
|
+
problema son los packages o el precio.
|
|
118
|
+
|
|
119
|
+
## Proceso
|
|
120
|
+
|
|
121
|
+
1. Leer el perfil maestro y el piso de tarifa. Si falta el piso, parar y mandar a `/freelance-hunt`.
|
|
122
|
+
2. Correr el modo pedido (o `audit` si no se indicó ninguno).
|
|
123
|
+
3. Proponer los textos como borradores en el chat, con 2 variantes de título y la tabla de los tres
|
|
124
|
+
packages completa, incluyendo delivery time y revisiones.
|
|
125
|
+
4. Con approval, guardar en `01-Perfiles/Fiverr-<slug-del-gig>.md` (derivado del maestro, no
|
|
126
|
+
reemplazo). El usuario copia y pega en la plataforma - **este skill nunca toca la cuenta.**
|
|
127
|
+
5. Anotar la fecha de publicación o del último ajuste, para poder correlacionarla después con
|
|
128
|
+
impresiones y órdenes.
|
|
129
|
+
|
|
130
|
+
Un gig por nicho. Dos gigs que compiten por la misma búsqueda se canibalizan las impresiones.
|
|
131
|
+
|
|
132
|
+
## Reglas
|
|
133
|
+
|
|
134
|
+
- Nunca inventar experiencia, clientes ni números.
|
|
135
|
+
- Nunca prometer en el package algo que no está en el alcance escrito.
|
|
136
|
+
- Nunca "unlimited" nada.
|
|
137
|
+
- El precio se deriva del piso, nunca de la competencia.
|
|
138
|
+
- Sin guiones largos en los textos generados.
|
|
139
|
+
|
|
140
|
+
## Handoff
|
|
141
|
+
|
|
142
|
+
Pedí aprobación (approval) antes de escribir en `01-Perfiles/`. Gig **READY** cuando título, los
|
|
143
|
+
tres packages con alcance y delivery, primera imagen definida y al menos tres FAQ están completos.
|
|
144
|
+
|
|
145
|
+
Después: `/freelance-pipeline` para medir el gig con las órdenes que entren (el embudo de Fiverr es
|
|
146
|
+
impresiones → clicks → órdenes, no propuestas enviadas), `/freelance-profile` si además va a
|
|
147
|
+
trabajar en Upwork, y `/portfolio-site` si quiere un portfolio propio fuera de las plataformas.
|
|
@@ -114,6 +114,8 @@ Nota lateral útil: Lemon.io y Proxify (marketplaces con screening) publican sus
|
|
|
114
114
|
|
|
115
115
|
Modelo invertido: no te postulás a trabajos, publicás gigs y el comprador te encuentra. Los "Buyer Requests" ya no existen como los conocía la gente. No hay cola que scorear.
|
|
116
116
|
|
|
117
|
+
Queda fuera del scanner por eso, no porque no valga la pena: el lado de la oferta lo cubre `/fiverr-gig` (título, packages, gallery, FAQ y precio derivado del piso).
|
|
118
|
+
|
|
117
119
|
### Toptal, Gun.io, Braintrust, Arc, Lemon.io
|
|
118
120
|
|
|
119
121
|
Verticales con screening previo. No hay board público consumible; el acceso se gana pasando su proceso de admisión. Fuera del alcance de un scanner.
|
|
@@ -110,6 +110,9 @@ Reportar: targets generados, creditos gastados reales (delta de `check_balance`)
|
|
|
110
110
|
|
|
111
111
|
- `/asset-audit` para validar naming, budgets y formatos contra los standards
|
|
112
112
|
- `/meshy-print <slug>` si ademas va a impresion (tiene su propio flujo de printability)
|
|
113
|
+
- `/blender-context` si el derivado `.blend` necesita limpieza: la topologia que sale de Meshy no
|
|
114
|
+
esta pensada para deformar, y las UVs suelen necesitar rehacerse. Ahi siguen `/blender-modeling`,
|
|
115
|
+
`/blender-materials` y `/blender-export` con su validador de glTF
|
|
113
116
|
|
|
114
117
|
---
|
|
115
118
|
|