Prevención del error SHRT_MAX
3 participantes
Página 3 de 5.
Página 3 de 5. • 1, 2, 3, 4, 5
Re: Prevención del error SHRT_MAX
Creo que se está yendo la cabeza con este error

kubo10-  
- Mensajes : 7778
Fecha de inscripción : 28/01/2015
Re: Prevención del error SHRT_MAX
Una vez que empiezo con algo, me meto tanto tanto y tanto que hasta que no lo consiga resolver, no paro
, así es mi persistencia. Lo malo es que la locura es una secuela garantizada, pero creo que necesito estar en este estado para poder disfrutar de Nobody.
No me vas a creer, pero el Decimate, que tanto nos daba error, no me lo ha dado
porque he sabido resolverlo. Total, que aunque podamos meter modelos de 500.000 vértices en el juego y con muchas texturas (muchísimo peso), mi meta es conseguir una calidad decente y parecida al de alta calidad, pero en formato low-poly y textura unificada (bajo peso). Acabo de conseguir shortear el SHRTMAX a base de decimate
(Ya se me va la olla). Mañana más.

No me vas a creer, pero el Decimate, que tanto nos daba error, no me lo ha dado


DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Hay un truco mucho mejor, más ,fácil, más rápido, que mantiene la calidad a tope, y no da errores, es el regotruco jajajaja
Regolero- Alcaide
- Rol : Director
Mensajes : 10813
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
Lo de fácil y rápido no
, pero efectivo sí 
Tiene toda la pinta de que hay un límite de 65534 vértices, cosa que podría solucionarse editando en el script la estructura de los modelos, para que permita 16 bits y se amplíe. No obstante, el hecho de que se pueda prevenir el error mediante regotruco 2.0, evidencia que hay un límite de vértices por grupo, por lo que cuantos más grupos creemos, mejor permitirá exportar el modelo. Es simplemente que dentro de un solo MESH hay un límite de vértices que puede tener.
Por otro lado, puede ser que los 'Faces' sean contados como vértices, a su vez. O que en cierta manera el contador del Blender no sea preciso. He aquí tres sendos ejemplos:
Mod sin error:

Mod con error SHRT_MAX





Tiene toda la pinta de que hay un límite de 65534 vértices, cosa que podría solucionarse editando en el script la estructura de los modelos, para que permita 16 bits y se amplíe. No obstante, el hecho de que se pueda prevenir el error mediante regotruco 2.0, evidencia que hay un límite de vértices por grupo, por lo que cuantos más grupos creemos, mejor permitirá exportar el modelo. Es simplemente que dentro de un solo MESH hay un límite de vértices que puede tener.
Por otro lado, puede ser que los 'Faces' sean contados como vértices, a su vez. O que en cierta manera el contador del Blender no sea preciso. He aquí tres sendos ejemplos:
Mod sin error:

Mod con error SHRT_MAX



DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Respecto a la posibilidad de reducir vértices en lugar de crear más grupos, una ventaja que tiene o tenía el 'Decimate' es que disminuye el número de 'Faces'. Los faces son aquellos vértices mapeados en el modelo, cuya acumulación puede ser la responsable del error.
Aunque he conseguido aplicar el 'Decimate', si lo recordáis, nos daba un error en el que ponía algo así como "insuficientes faces". Me temo que este script lo que hace es borrar por completo el mapeado del modelo, por eso daba error al exportar, porque el modelo tiene 'faces' no mapeados cuando teóricamente un 'face' es una parte del modelo mapeada. Esta incongruencia provoca error, cosa que se puede evitar si mapeamos el modelo. El problema es que se borra el que tenía originalmente, y no existe manera de copiar y re-guardar el mapeado. De hecho, buscando por Internet la opción de reducir los 'faces' preservando el mapeado es posible en Blender 2.63. Y en estos sitios donde lo he buscado, indican que en nuestro Blender hay una opción de reducir vértices manteniendo el mapeado: Poly Reducer (que fue el mismo que os dije en otro tutorial)
Con lo cual, este método podría funcionar si, como bien leí, abriéramos el mod en el Blender 2.63, lo redujéramos de faces, lo reexportáramos a .obj y trabajáramos con él en Blender. Alguien podrá decir que es una tontería cuando con el regotruco se soluciona, y ciertamente lo veo tontería si nuestro modelo no es de excesiva calidad. Pero en el caso de modelos de 500.000 vértices (que solo el .obj puede ocupar unos 60 MB) con sus texturas y demás, podemos tener un mod que ocupe mucho espacio para ser descargado y que haga que nuestro juego vaya lento al rodar (por no decir si grabas en Fraps, el potente PC que tienes que tener para que no se trabe). Así que, solo en casos en los que verdaderamente haya demasiados vértices, lo propondría como solución.
En vista de que no es desacertado el vídeo al mencionar los vértices, lo mantendré, aunque con algunas peculiaridades que comento aquí:
En esta ocasión, en lugar de separar los vértices, vamos a separar los 'Faces'
1. Pon el objeto en modo edición.
2. Haz 'Ctrl + Tab' y selecciona 'Faces'. Esto hará que se vean los 'Faces' o los puntos mapeados del modelo.

3. Realiza la separación de vértices (Barra espaciadora - Vértices - Separate).
Intenta seleccionar por debajo de 60.000 Faces
Cuando hayas acabado, recuerda rehacer 'Ctrl + Tab' y poner 'Vértices' para recuperar el modo de edición original.
Ya sabemos que el contador de Blender puede ser impreciso y que los triángulos de los Faces pueden ser contados como vértices, por lo que es posible que teniendo 40.000 vértices y 68.000 faces, nos dé el SHRT_MAX. En teoría, debe haber más 'Faces' que vértices, por eso indico que hagáis la separación de vértices seleccionando los 'FACES' primero, que son más.
Del contador de 'Edges' todavía no he encontrado información que lo vincule a este error.
Aunque he conseguido aplicar el 'Decimate', si lo recordáis, nos daba un error en el que ponía algo así como "insuficientes faces". Me temo que este script lo que hace es borrar por completo el mapeado del modelo, por eso daba error al exportar, porque el modelo tiene 'faces' no mapeados cuando teóricamente un 'face' es una parte del modelo mapeada. Esta incongruencia provoca error, cosa que se puede evitar si mapeamos el modelo. El problema es que se borra el que tenía originalmente, y no existe manera de copiar y re-guardar el mapeado. De hecho, buscando por Internet la opción de reducir los 'faces' preservando el mapeado es posible en Blender 2.63. Y en estos sitios donde lo he buscado, indican que en nuestro Blender hay una opción de reducir vértices manteniendo el mapeado: Poly Reducer (que fue el mismo que os dije en otro tutorial)

Con lo cual, este método podría funcionar si, como bien leí, abriéramos el mod en el Blender 2.63, lo redujéramos de faces, lo reexportáramos a .obj y trabajáramos con él en Blender. Alguien podrá decir que es una tontería cuando con el regotruco se soluciona, y ciertamente lo veo tontería si nuestro modelo no es de excesiva calidad. Pero en el caso de modelos de 500.000 vértices (que solo el .obj puede ocupar unos 60 MB) con sus texturas y demás, podemos tener un mod que ocupe mucho espacio para ser descargado y que haga que nuestro juego vaya lento al rodar (por no decir si grabas en Fraps, el potente PC que tienes que tener para que no se trabe). Así que, solo en casos en los que verdaderamente haya demasiados vértices, lo propondría como solución.
En vista de que no es desacertado el vídeo al mencionar los vértices, lo mantendré, aunque con algunas peculiaridades que comento aquí:
En esta ocasión, en lugar de separar los vértices, vamos a separar los 'Faces'
1. Pon el objeto en modo edición.
2. Haz 'Ctrl + Tab' y selecciona 'Faces'. Esto hará que se vean los 'Faces' o los puntos mapeados del modelo.

3. Realiza la separación de vértices (Barra espaciadora - Vértices - Separate).
Intenta seleccionar por debajo de 60.000 Faces
Cuando hayas acabado, recuerda rehacer 'Ctrl + Tab' y poner 'Vértices' para recuperar el modo de edición original.
Ya sabemos que el contador de Blender puede ser impreciso y que los triángulos de los Faces pueden ser contados como vértices, por lo que es posible que teniendo 40.000 vértices y 68.000 faces, nos dé el SHRT_MAX. En teoría, debe haber más 'Faces' que vértices, por eso indico que hagáis la separación de vértices seleccionando los 'FACES' primero, que son más.
Del contador de 'Edges' todavía no he encontrado información que lo vincule a este error.
DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Ahora mismo estoy pegándome con un modelo con el struct.error, que nunca se habla de él, pero me da tantas veces como el shrt_max. Yo creo que están estrechamente relacionados porque hasta ahora, me parecía que las soluciones era comunes. Y digo hasta ahora, porque estos días he sorteado el struct.error haciendo varios grupos y emparentando, pero hoy, por más grupos que he hecho me ha seguido dando el error (y eso que he revisado vértices y ningún grupo tenían mas de 20 mil).
Así que estoy atento a este hilo por si tuviera que aplicarle alguna de las soluciones que has dado (de momento estoy probando consolidando en una única textura)
Así que estoy atento a este hilo por si tuviera que aplicarle alguna de las soluciones que has dado (de momento estoy probando consolidando en una única textura)
kubo10-  
- Rol : Director
Mensajes : 7778
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
Sube si quieres el modelo que te da error junto con el archivo .blend.
¿Qué mensaje de struct.error te ha salido?
¿Qué mensaje de struct.error te ha salido?
DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Tienes razón, el shrt_max es un tipo de struct.error, lo que pasa es que tanto llamarlo shrt, ya le he asignado ese nombre
Al que llamo struct.error es este:
stream.write(struct.pack("bbbb", i[0], i[1], i[2], i[3]))
struct.error: byte format requires -128 <= number <= 127
¿Subo un .blend con los grupos ya creados (tiene como 12) o antes de tocar nada?
Edito: Consolidando ha funcionado, pero ha perdido mucha calidad

Al que llamo struct.error es este:
stream.write(struct.pack("bbbb", i[0], i[1], i[2], i[3]))
struct.error: byte format requires -128 <= number <= 127
¿Subo un .blend con los grupos ya creados (tiene como 12) o antes de tocar nada?
Edito: Consolidando ha funcionado, pero ha perdido mucha calidad
kubo10-  
- Rol : Director
Mensajes : 7778
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
Aquí está, se me hace raro que con el truco de regolero de dividir en grupos dé un struct.error.
A lo mejor hay que seguir dividiendo. Aquí está el modelo sin tocar, salvo por el error de los 32 caracteres que ya está arreglado:
https://app.box.com/s/lse238bffpu8ban2hdralkf86mrd4z26
A lo mejor hay que seguir dividiendo. Aquí está el modelo sin tocar, salvo por el error de los 32 caracteres que ya está arreglado:
https://app.box.com/s/lse238bffpu8ban2hdralkf86mrd4z26
kubo10-  
- Rol : Director
Mensajes : 7778
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
El -128 a 127 te ha dado seguramente al querer hacerlo con la fusión a un mesh del juego. Si hubieras hecho empties, te habría dado el SHRT_MAX.
La fusión al .msh (regotruco 1.0) es una forma para convertir mods que te asegura que funcione después en el juego (no se estropee al cargar en el MED ni en el juego, y no haya texturas estiradas). Que genere un modelo seguro y funcionable al 100 % no significa que sea una conversión segura, pues está suscrita a las mismas normas que el resto de procedimientos. La conversión por empties (regotruco 2.0) es otra forma para convertir mods que es más rápida y te ahorra meter el .msh del juego, que aunque funcione, puede hacer que el modelo no se exporte al 100% a prueba de errores o peculiaridades. Es decir, es una forma más económica de convertir mods de muchos meshes, pero no tiene tanta garantía de que luego no de error.
En ambos casos, el modelo está suscrito a un grupo (el del .msh o el empty que hemos creado) y como tal el grupo está metido en un buffer de 16 bits (con límite en 65.534 unidades), algo que no se puede remediar. Significa que si se excede esta cantidad en dicho grupo, saltará un error de estructura porque los 16 bits que soporta Blender y la mayoría de las tarjetas gráficas en casos de modelos 'high-poly' son 65.534 vértices. Es una forma de impedir que montones de vértices queden compilados en un mismo mesh, lo que haría más enlentecido su rendimiento en videojuegos y plataformas 3D, además de que estropearían la gráfica. Por eso, es un límite que marca la diferencia y puedes sortear dividiendo un MESH en varios OBJETOS por debajo de 65.534 vértices, conservando su calidad pero haciendo más fluido y liviano el renderizado final.
El siguiente paso para pretender mayor fluidez es la reducción del número de vértices, no es necesario para sortear el struct.error, pero sigue siendo una forma.
Yo estoy recomendando el unificado de texturas para reducir el peso de los archivos, y permitiendo así aplicar el regotruco 1.0 para que el modelo funcione bien después.
Voy a echarle un ojo a tu mod.
La fusión al .msh (regotruco 1.0) es una forma para convertir mods que te asegura que funcione después en el juego (no se estropee al cargar en el MED ni en el juego, y no haya texturas estiradas). Que genere un modelo seguro y funcionable al 100 % no significa que sea una conversión segura, pues está suscrita a las mismas normas que el resto de procedimientos. La conversión por empties (regotruco 2.0) es otra forma para convertir mods que es más rápida y te ahorra meter el .msh del juego, que aunque funcione, puede hacer que el modelo no se exporte al 100% a prueba de errores o peculiaridades. Es decir, es una forma más económica de convertir mods de muchos meshes, pero no tiene tanta garantía de que luego no de error.
En ambos casos, el modelo está suscrito a un grupo (el del .msh o el empty que hemos creado) y como tal el grupo está metido en un buffer de 16 bits (con límite en 65.534 unidades), algo que no se puede remediar. Significa que si se excede esta cantidad en dicho grupo, saltará un error de estructura porque los 16 bits que soporta Blender y la mayoría de las tarjetas gráficas en casos de modelos 'high-poly' son 65.534 vértices. Es una forma de impedir que montones de vértices queden compilados en un mismo mesh, lo que haría más enlentecido su rendimiento en videojuegos y plataformas 3D, además de que estropearían la gráfica. Por eso, es un límite que marca la diferencia y puedes sortear dividiendo un MESH en varios OBJETOS por debajo de 65.534 vértices, conservando su calidad pero haciendo más fluido y liviano el renderizado final.
El siguiente paso para pretender mayor fluidez es la reducción del número de vértices, no es necesario para sortear el struct.error, pero sigue siendo una forma.
Yo estoy recomendando el unificado de texturas para reducir el peso de los archivos, y permitiendo así aplicar el regotruco 1.0 para que el modelo funcione bien después.
Voy a echarle un ojo a tu mod.
DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
El -128 a 127 te ha dado seguramente al querer hacerlo con la fusión a un mesh del juego
No, lo da desde el primer intento con un solo empty, el 00.00 antes de hacer ninguna fusión (y con varios emptys también)
Luego miro lo de reducción de vértices.
kubo10-  
- Rol : Director
Mensajes : 7778
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Página 3 de 5. • 1, 2, 3, 4, 5

» Error en el FLM
» error de importación de licuadora
» Error MED.
» Error 1604
» Error en indumentaria.
» error de importación de licuadora
» Error MED.
» Error 1604
» Error en indumentaria.
Página 3 de 5.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|