@liquidcars/atlas 0.1.38 → 0.1.40
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/README.md +84 -33
- package/dist/liquidcars-atlas.js +959 -692
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +1 -1
- package/src/liquidcars-atlas.js +370 -22
package/README.md
CHANGED
|
@@ -187,12 +187,17 @@ para mantener el contraste sobre geometrías tanto claras como oscuras.
|
|
|
187
187
|
## Geometry packs
|
|
188
188
|
|
|
189
189
|
Las geometrías pueden distribuirse en paquetes independientes. El componente
|
|
190
|
-
expone `registerGeometryPack()`, `unregisterGeometryPack()
|
|
191
|
-
`getGeometryCatalog()`; los mismos métodos están
|
|
192
|
-
`LiquidCarsAtlas`. Los identificadores usan un
|
|
193
|
-
`architecture.
|
|
194
|
-
publican como `geo.box`, `geo.sphere`, etc. Los nombres
|
|
195
|
-
namespace siguen siendo compatibles.
|
|
190
|
+
expone `registerGeometryPack()`, `unregisterGeometryPack()`,
|
|
191
|
+
`getGeometryCatalog()` y `getGeometryPackCatalog()`; los mismos métodos están
|
|
192
|
+
disponibles como estáticos en `LiquidCarsAtlas`. Los identificadores usan un
|
|
193
|
+
namespace (`infra.server`, `emoji-fluent.robot`, `architecture.hexagonal.port`, etc.) y las primitivas
|
|
194
|
+
integradas también se publican como `geo.box`, `geo.sphere`, etc. Los nombres
|
|
195
|
+
históricos sin namespace siguen siendo compatibles. Los namespaces pueden contener segmentos separados por puntos, de modo que packs especializados como `architecture.hexagonal` convivan con `architecture`.
|
|
196
|
+
|
|
197
|
+
`getGeometryCatalog()` conserva el catálogo operativo de geometrías.
|
|
198
|
+
`getGeometryPackCatalog()` describe las librerías registradas, incluyendo
|
|
199
|
+
autoría, licencia, procedencia y recursos, sin duplicar estos datos en cada
|
|
200
|
+
geometría.
|
|
196
201
|
|
|
197
202
|
El módulo exporta también `ATLAS_VERSION`, y la clase registrada expone la
|
|
198
203
|
misma versión mediante `customElements.get("liquidcars-atlas").version`. Esta
|
|
@@ -202,27 +207,39 @@ si accidentalmente se cargan varias versiones del core.
|
|
|
202
207
|
```js
|
|
203
208
|
import { registerGeometryPack } from "@liquidcars/atlas";
|
|
204
209
|
|
|
210
|
+
const robotImage = new URL("./assets/robot.svg", import.meta.url).href;
|
|
211
|
+
|
|
205
212
|
registerGeometryPack({
|
|
206
|
-
namespace: "
|
|
207
|
-
name: "
|
|
213
|
+
namespace: "example",
|
|
214
|
+
name: "Example visual assets",
|
|
208
215
|
version: "0.1.0",
|
|
209
|
-
|
|
216
|
+
authors: [{ name: "Example Studio", url: "https://example.com" }],
|
|
217
|
+
license: { spdx: "MIT", url: "https://opensource.org/license/mit" },
|
|
218
|
+
sources: [{
|
|
219
|
+
id: "example-artwork",
|
|
220
|
+
name: "Example artwork",
|
|
221
|
+
authors: ["Example Studio"],
|
|
222
|
+
license: "MIT"
|
|
223
|
+
}],
|
|
224
|
+
resources: [{
|
|
225
|
+
id: "robot",
|
|
226
|
+
kind: "image",
|
|
227
|
+
mimeType: "image/svg+xml",
|
|
228
|
+
path: "./assets/robot.svg",
|
|
229
|
+
url: robotImage,
|
|
230
|
+
source: "example-artwork"
|
|
231
|
+
}],
|
|
232
|
+
palette: { backplate: "#193142", image: "#ffffff" },
|
|
210
233
|
geometries: [{
|
|
211
|
-
id: "
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
units: { type: "number", min: 1, max: 8, default: 3 },
|
|
216
|
-
icon: { type: "icon", default: "⚙" },
|
|
217
|
-
image: { type: "image", default: "" }
|
|
218
|
-
},
|
|
219
|
-
anchors: { input: [-1, 0, 0], output: [1, 0, 0], network: [0, 0, 1] },
|
|
220
|
-
create({ parameters }) {
|
|
234
|
+
id: "robot",
|
|
235
|
+
canonicalSize: [2.4, 2.4, .5],
|
|
236
|
+
resource: "robot",
|
|
237
|
+
create({ resources }) {
|
|
221
238
|
return { parts: [
|
|
222
|
-
{ shape: "box", size: [
|
|
223
|
-
{ shape: "plane", size: [.
|
|
224
|
-
color: "
|
|
225
|
-
|
|
239
|
+
{ shape: "box", size: [.92, .92, .12], color: "backplate", radius: .16 },
|
|
240
|
+
{ shape: "plane", size: [.84, .84, 1], position: [0, 0, .07],
|
|
241
|
+
color: "image", image: resources.robot.url, imageFit: "contain",
|
|
242
|
+
transparent: true, edges: false }
|
|
226
243
|
] };
|
|
227
244
|
}
|
|
228
245
|
}]
|
|
@@ -233,17 +250,45 @@ El modelo configura cada instancia sin conocer la implementación del paquete:
|
|
|
233
250
|
|
|
234
251
|
```json
|
|
235
252
|
{
|
|
236
|
-
"geometry": "
|
|
237
|
-
"
|
|
238
|
-
"geometryPalette": { "accent": "#ffd166" }
|
|
253
|
+
"geometry": "example.robot",
|
|
254
|
+
"geometryPalette": { "backplate": "#284b63" }
|
|
239
255
|
}
|
|
240
256
|
```
|
|
241
257
|
|
|
242
258
|
Cada definición puede declarar parámetros tipados, una paleta local,
|
|
243
|
-
proporciones canónicas y anchors.
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
259
|
+
proporciones canónicas y anchors. Los recursos declarados por el pack se
|
|
260
|
+
entregan a `create({ resources })` indexados por `id`; pueden estar
|
|
261
|
+
empaquetados mediante `new URL("./assets/...", import.meta.url)`, ser data URIs
|
|
262
|
+
o apuntar a un recurso remoto. `sources` permite atribuir una colección de
|
|
263
|
+
terceros una sola vez y cada recurso puede sobrescribir `authors` o `license`.
|
|
264
|
+
|
|
265
|
+
Las piezas declarativas admiten primitivas, posición, rotación, escala,
|
|
266
|
+
materiales e imágenes por URL/data URI; los SVG también pueden proporcionarse
|
|
267
|
+
inline. Para planos con imagen, `imageFit` admite `cover`, `contain` y
|
|
268
|
+
`stretch`. Desde `0.1.40`, `shape: "svg-extrude"` convierte rutas SVG en una
|
|
269
|
+
malla con profundidad real, por lo que una marca puede formar parte del volumen
|
|
270
|
+
sin convertirse en texto ni en una textura plana:
|
|
271
|
+
|
|
272
|
+
```js
|
|
273
|
+
{
|
|
274
|
+
shape: "svg-extrude",
|
|
275
|
+
svg: resources.postgresql.content,
|
|
276
|
+
size: [.24, .24, .05],
|
|
277
|
+
position: [.2, -.04, .44],
|
|
278
|
+
color: "#4169e1",
|
|
279
|
+
emissive: "#4169e1",
|
|
280
|
+
emissiveIntensity: .4,
|
|
281
|
+
bevel: .04,
|
|
282
|
+
curveSegments: 6,
|
|
283
|
+
edges: false
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
`emissive` y `emissiveIntensity` permiten conservar colores vivos bajo la
|
|
288
|
+
iluminación 3D sin eliminar el relieve ni las sombras. El helper exportado
|
|
289
|
+
`createSvgExtrudeGeometry(svg, options)` admite rutas con
|
|
290
|
+
líneas, curvas cuadráticas y cúbicas, arcos elípticos y subtrazados. El renderer
|
|
291
|
+
mantiene Three.js encapsulado para evitar que los packs
|
|
247
292
|
dependan de su versión interna. Las relaciones parten por defecto de la
|
|
248
293
|
superficie orientada hacia el otro extremo. `anchor: center` conserva el
|
|
249
294
|
comportamiento centrado cuando sea necesario, y `fromAnchor` y `toAnchor`
|
|
@@ -319,12 +364,18 @@ Una vez publicado, los consumidores podrán instalarlo con `npm install @liquidc
|
|
|
319
364
|
Para probar el paquete sin publicarlo, basta con instalar el tarball generado:
|
|
320
365
|
|
|
321
366
|
```bash
|
|
322
|
-
npm install ./liquidcars-atlas-0.1.
|
|
367
|
+
npm install ./liquidcars-atlas-0.1.40.tgz
|
|
323
368
|
```
|
|
324
369
|
|
|
325
370
|
## Estado
|
|
326
371
|
|
|
327
|
-
`0.1.
|
|
372
|
+
`0.1.40` añade SVG extruido nativo para que los geometry packs puedan construir
|
|
373
|
+
marcas volumétricas a partir de recursos vectoriales sin recurrir a campos de
|
|
374
|
+
texto. `0.1.39` incorpora metadatos normalizados de autoría, licencia,
|
|
375
|
+
procedencia y recursos para los geometry packs, añade
|
|
376
|
+
`getGeometryPackCatalog()` y entrega los recursos declarados a
|
|
377
|
+
`create({ resources })`. Se mantiene intacto `getGeometryCatalog()` para
|
|
378
|
+
conservar la compatibilidad. `0.1.28` rasteriza explícitamente los SVG sobre un canvas antes de subirlos a
|
|
328
379
|
WebGL y emite diagnósticos cuando falla la carga o la conversión. `0.1.27` añade carga automática de imágenes SVG remotas, SVG mediante data URI
|
|
329
380
|
y SVG inline, manteniendo las mismas opciones de cara y ajuste que las imágenes
|
|
330
381
|
raster. `0.1.26` mantiene el centro como anclaje implícito de toda relación y utiliza
|
|
@@ -332,7 +383,7 @@ los puertos de geometrías externas únicamente cuando el modelo los solicita.
|
|
|
332
383
|
También evita recorrer los materiales de geometrías compuestas en cada frame,
|
|
333
384
|
refuerza la liberación de recursos y expone `getRenderStats()`.
|
|
334
385
|
`0.1.24` incorporó geometry packs independientes, namespaces, parámetros
|
|
335
|
-
personalizados, paletas locales, anchors e imágenes
|
|
386
|
+
personalizados, paletas locales, anchors e imágenes declarativas. La
|
|
336
387
|
versión `0.1.23` añadió desplazamiento lateral de cámara mediante ratón, teclado
|
|
337
388
|
modificador y gestos táctiles, además de la API pública `panBy()` y `panTo()`.
|
|
338
389
|
Se conserva la selección contextual de relaciones introducida en `0.1.22`: el usuario puede
|