@liquidcars/atlas 0.1.37 → 0.1.39
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 +60 -33
- package/dist/liquidcars-atlas.js +447 -322
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +1 -1
- package/src/liquidcars-atlas.js +149 -21
package/README.md
CHANGED
|
@@ -187,37 +187,59 @@ 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.
|
|
201
|
+
|
|
202
|
+
El módulo exporta también `ATLAS_VERSION`, y la clase registrada expone la
|
|
203
|
+
misma versión mediante `customElements.get("liquidcars-atlas").version`. Esta
|
|
204
|
+
segunda forma identifica la implementación que el navegador utiliza realmente
|
|
205
|
+
si accidentalmente se cargan varias versiones del core.
|
|
196
206
|
|
|
197
207
|
```js
|
|
198
208
|
import { registerGeometryPack } from "@liquidcars/atlas";
|
|
199
209
|
|
|
210
|
+
const robotImage = new URL("./assets/robot.svg", import.meta.url).href;
|
|
211
|
+
|
|
200
212
|
registerGeometryPack({
|
|
201
|
-
namespace: "
|
|
202
|
-
name: "
|
|
213
|
+
namespace: "example",
|
|
214
|
+
name: "Example visual assets",
|
|
203
215
|
version: "0.1.0",
|
|
204
|
-
|
|
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" },
|
|
205
233
|
geometries: [{
|
|
206
|
-
id: "
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
units: { type: "number", min: 1, max: 8, default: 3 },
|
|
211
|
-
icon: { type: "icon", default: "⚙" },
|
|
212
|
-
image: { type: "image", default: "" }
|
|
213
|
-
},
|
|
214
|
-
anchors: { input: [-1, 0, 0], output: [1, 0, 0], network: [0, 0, 1] },
|
|
215
|
-
create({ parameters }) {
|
|
234
|
+
id: "robot",
|
|
235
|
+
canonicalSize: [2.4, 2.4, .5],
|
|
236
|
+
resource: "robot",
|
|
237
|
+
create({ resources }) {
|
|
216
238
|
return { parts: [
|
|
217
|
-
{ shape: "box", size: [
|
|
218
|
-
{ shape: "plane", size: [.
|
|
219
|
-
color: "
|
|
220
|
-
|
|
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 }
|
|
221
243
|
] };
|
|
222
244
|
}
|
|
223
245
|
}]
|
|
@@ -228,17 +250,22 @@ El modelo configura cada instancia sin conocer la implementación del paquete:
|
|
|
228
250
|
|
|
229
251
|
```json
|
|
230
252
|
{
|
|
231
|
-
"geometry": "
|
|
232
|
-
"
|
|
233
|
-
"geometryPalette": { "accent": "#ffd166" }
|
|
253
|
+
"geometry": "example.robot",
|
|
254
|
+
"geometryPalette": { "backplate": "#284b63" }
|
|
234
255
|
}
|
|
235
256
|
```
|
|
236
257
|
|
|
237
258
|
Cada definición puede declarar parámetros tipados, una paleta local,
|
|
238
|
-
proporciones canónicas y anchors.
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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`. El renderer mantiene Three.js encapsulado para evitar que los packs
|
|
242
269
|
dependan de su versión interna. Las relaciones parten por defecto de la
|
|
243
270
|
superficie orientada hacia el otro extremo. `anchor: center` conserva el
|
|
244
271
|
comportamiento centrado cuando sea necesario, y `fromAnchor` y `toAnchor`
|
|
@@ -314,12 +341,12 @@ Una vez publicado, los consumidores podrán instalarlo con `npm install @liquidc
|
|
|
314
341
|
Para probar el paquete sin publicarlo, basta con instalar el tarball generado:
|
|
315
342
|
|
|
316
343
|
```bash
|
|
317
|
-
npm install ./liquidcars-atlas-0.1.
|
|
344
|
+
npm install ./liquidcars-atlas-0.1.39.tgz
|
|
318
345
|
```
|
|
319
346
|
|
|
320
347
|
## Estado
|
|
321
348
|
|
|
322
|
-
`0.1.28` rasteriza explícitamente los SVG sobre un canvas antes de subirlos a
|
|
349
|
+
`0.1.39` incorpora metadatos normalizados de autoría, licencia, procedencia y recursos para los geometry packs, añade `getGeometryPackCatalog()` y entrega los recursos declarados a `create({ resources })`. Se mantiene intacto `getGeometryCatalog()` para conservar la compatibilidad. `0.1.28` rasteriza explícitamente los SVG sobre un canvas antes de subirlos a
|
|
323
350
|
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
|
|
324
351
|
y SVG inline, manteniendo las mismas opciones de cara y ajuste que las imágenes
|
|
325
352
|
raster. `0.1.26` mantiene el centro como anclaje implícito de toda relación y utiliza
|
|
@@ -327,7 +354,7 @@ los puertos de geometrías externas únicamente cuando el modelo los solicita.
|
|
|
327
354
|
También evita recorrer los materiales de geometrías compuestas en cada frame,
|
|
328
355
|
refuerza la liberación de recursos y expone `getRenderStats()`.
|
|
329
356
|
`0.1.24` incorporó geometry packs independientes, namespaces, parámetros
|
|
330
|
-
personalizados, paletas locales, anchors e imágenes
|
|
357
|
+
personalizados, paletas locales, anchors e imágenes declarativas. La
|
|
331
358
|
versión `0.1.23` añadió desplazamiento lateral de cámara mediante ratón, teclado
|
|
332
359
|
modificador y gestos táctiles, además de la API pública `panBy()` y `panTo()`.
|
|
333
360
|
Se conserva la selección contextual de relaciones introducida en `0.1.22`: el usuario puede
|