morfeo 0.7.0 → 0.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/lib/config.mjs +2 -0
- package/package.json +1 -1
- package/remotion/kit/tres.tsx +4 -1
package/lib/config.mjs
CHANGED
|
@@ -247,6 +247,8 @@ function validarCapas(capas, donde, err, comps) {
|
|
|
247
247
|
}
|
|
248
248
|
if (c.tipo === 'dividida') for (const lado of ['izq', 'der', 'arriba', 'abajo']) if (c[lado]?.capas) validarCapas(c[lado].capas, `${d}, ${lado}`, err, comps);
|
|
249
249
|
if (c.tipo === 'linea' && (!Array.isArray(c.hitos) || !c.hitos.length)) err(`${d}: \`linea\` necesita \`hitos\`: [{anio: 1963, texto: '…', en: 'palabra'}]`);
|
|
250
|
+
// `tamano` es una escala del objeto dentro de su recuadro (1 = normal); el tamaño en pantalla es `ancho`
|
|
251
|
+
if ((c.tipo === 'modelo' || c.tipo === 'recurso') && Number(c.tamano) > 10) err(`${d}: \`tamano: ${c.tamano}\` es la escala del objeto (1 = normal, 2 = el doble): con eso la cámara queda dentro. Para el tamaño en pantalla usa \`ancho\` (en px).`);
|
|
250
252
|
if (c.tipo === 'cintillo' && !c.nombre) err(`${d}: \`cintillo\` necesita \`nombre\``);
|
|
251
253
|
if (c.tipo === 'llamada' && c.estado != null && !['entrante', 'curso', 'terminada'].includes(c.estado)) err(`${d}: estado "${c.estado}" no existe (entrante, curso o terminada)`);
|
|
252
254
|
if (c.tipo === 'tierra' && (!esNum(c.lat) || !esNum(c.lon))) err(`${d}: \`tierra\` necesita \`lat\` y \`lon\` (números)`);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "morfeo",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "Genera videos verticales animados (Remotion + Three.js) con voz, música y subtítulos, desde un guion en código o escrito por IA.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
package/remotion/kit/tres.tsx
CHANGED
|
@@ -270,7 +270,10 @@ const Post: React.FC<{post: Post3D; estado: Estado}> = ({post, estado}) => {
|
|
|
270
270
|
const dist = Math.hypot(estado.pos[0] - estado.mirar[0], estado.pos[1] - estado.mirar[1], estado.pos[2] - estado.mirar[2]);
|
|
271
271
|
const rango = typeof o.foco === 'number' ? o.foco : Math.max(1.2, dist * 0.55);
|
|
272
272
|
const efectos: React.ReactElement[] = [];
|
|
273
|
-
|
|
273
|
+
// `focusRange` se actualiza en vivo; `worldFocusRange` va en el useMemo de @react-three/postprocessing y, como la
|
|
274
|
+
// distancia cambia en cada cuadro, creaba un DepthOfFieldEffect nuevo por cuadro: en Windows (ANGLE) la GPU se
|
|
275
|
+
// quedaba sin recursos a los ~30 s de video (Shader Error en EffectMaterial y "reading 'alpha'" de null).
|
|
276
|
+
if (o.foco) efectos.push(<DepthOfField key="f" target={estado.mirar} focusRange={rango} bokehScale={4} resolutionScale={0.5} />);
|
|
274
277
|
if (o.miniatura) efectos.push(<TiltShift2 key="m" blur={0.12 * o.miniatura} taper={0.6} start={[0.5, 0.0]} end={[0.5, 1.0]} />);
|
|
275
278
|
if (o.brillo) efectos.push(<Bloom key="b" intensity={o.brillo} luminanceThreshold={0.85} luminanceSmoothing={0.2} mipmapBlur />);
|
|
276
279
|
if (o.vinieta) efectos.push(<Vignette key="v" offset={0.3} darkness={o.vinieta} />);
|