Prevención del error SHRT_MAX
3 participantes
Página 4 de 5.
Página 4 de 5. • 1, 2, 3, 4, 5
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-  
- Mensajes : 7804
Fecha de inscripción : 28/01/2015
Re: Prevención del error SHRT_MAX
mucha información para mi, lo he leido así por encima solo.
Kubo hay modelos que les he tenido que hacer decenas de grupos jeje, depende los puntos vertices que tenga jeje.
Ahora me rio, cuando le decía a dibujante, los mods de Egipto pesan más de 100mb cada uno y me decía que era imposible jajaja, y estáis liados con super mods ahora jjajaja.
Kubo hay modelos que les he tenido que hacer decenas de grupos jeje, depende los puntos vertices que tenga jeje.
Ahora me rio, cuando le decía a dibujante, los mods de Egipto pesan más de 100mb cada uno y me decía que era imposible jajaja, y estáis liados con super mods ahora jjajaja.
Regolero- Alcaide
- Rol : Director
Mensajes : 10829
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
Bueno..., ahí va un decálogo de posibles herramientas (legible para quienes entiendan los términos).
Teniendo en cuenta que el SHRT_MAX es un struct.error que alude a 16 bits y un máximo de 65534 vértices por MESH, la solución es subdividir nuestro MESH en varios OBJETOS con tal de que no reúnan esa cantidad de vértices. Sin embargo, es posible que el contador de vértices que tiene Blender sea impreciso, y a los vértices tengamos que sumarles los 'Faces' o parte de los 'Faces'. Los 'faces' son todos los vértices del modelo que tienen UV (están mapeados). Por esta razón, modelos de 34.000 vértices y 60.000 faces podrían provocar el error del SHRT_MAX siempre que los 'Faces' compongan a su vez vértices.
Si no queremos reducir peso al modelo (no unificamos texturas ni reducimos polígonos)
Si queremos reducir peso al modelo (reduciendo polígonos o unificando texturas)
Con que alguien encuentre algo de cualquiera de los puntos expuestos, o descubra una forma alternativa, lo tendremos resuelto. De lo contrario, habrá que crear empties y empties hasta que no de error, pero ojalá pudiéramos descubrir en qué criterio agrupar los modelos
PD: Sí, Regolero, ya me acuerdo de que te decía que era imposible. Lo decía porque cuando yo intentaba meter un mod de no se cuantas megas, temía el 'Memory Error'. Y cuando no tenía ese error, me daba en el Blender al tener muchísimos vértices y ponerlo en modo edición. Pero ahora estoy viendo que sí, que tenías razón
, e intento dar con una metodología que permita no tirarnos horas exportando el modelo porque eso es una tortura
Teniendo en cuenta que el SHRT_MAX es un struct.error que alude a 16 bits y un máximo de 65534 vértices por MESH, la solución es subdividir nuestro MESH en varios OBJETOS con tal de que no reúnan esa cantidad de vértices. Sin embargo, es posible que el contador de vértices que tiene Blender sea impreciso, y a los vértices tengamos que sumarles los 'Faces' o parte de los 'Faces'. Los 'faces' son todos los vértices del modelo que tienen UV (están mapeados). Por esta razón, modelos de 34.000 vértices y 60.000 faces podrían provocar el error del SHRT_MAX siempre que los 'Faces' compongan a su vez vértices.
Si no queremos reducir peso al modelo (no unificamos texturas ni reducimos polígonos)
- La solución está en crear tantos empties como sean necesarios hasta que no nos salte el error del SHRT MAX. Esperaba que sabiendo el límite de 65.534 vértices, fuera más sencillo hacer esta división siguiendo un criterio lógico. Habida cuenta del tema de 'Faces' y 'Vértices' tenemos que buscar si el propio Blender incluye un script que cuente todos los vértices que tiene el MESH o el OBJETO, de esta manera sabremos si hay que seguir dividiendo o no.
- Una recomendación es que al hacer la separación de MESHES, pongamos el modo edición en 'Faces' (Pon el objeto en modo edición y haz Ctrl + Tab, selecciona Faces).
Si queremos reducir peso al modelo (reduciendo polígonos o unificando texturas)
- En primer lugar, siempre que no nos de problemas, tenemos que asumir que un modelo de alta calidad es aquel que sobrepasa en términos generales 100.000 vértices, luego las diferencias entre 500.000 y 100.000 vértices no tienen por qué ser demasiado evidentes para el juego (no hay más que ver que la mayoría de modelos del TM apenas exceden 30.000 vértices y pueden verse de muy buena calidad al exportar nuestras películas; además que cuantos menos vértices necesitemos, más fluido será el montaje de la escena en cuanto a mods).
- En segundo lugar, si unificamos textura, convendría ver si podemos editar ésta añadiéndole nitidez o incrementando la resolución total de la textura para que las posibles pérdidas de calidad no sean excesivas. Como digo, el resultado sigue siendo muy prometedor y compensa significativamente la pérdida de calidad por el peso y la economización del proceso.
- En tercer lugar y más importante, podemos reducir los vértices de nuestro modelo (Script Poly Reducer) pero este script puede tardar unos cuantos minutos en funcionar. Por otro lado, tenemos el 'Decimate' el cual, en lugar de reducir vértices, reduce los 'Faces', que supuestamente son los causantes del problema. El asunto es que al reducir los 'Faces' con el Decimate, se pierde completamente el mapeado del modelo, por lo que automáticamente perdemos la textura que llevaba puesta. Existe, sin embargo, la opción de que al reducir los 'Faces' se conserven los UV, pero esto es posible en versiones de Blender más modernas. Por lo tanto, si queremos ahorrarnos los 10 o más minutos del 'Poly Reducer', podemos reducir los 'Faces' en una versión de Blender más moderna, que tarda segundos en hacerse.
- Una forma equitativa de poder bajarle peso al archivo sin que se estropee en exceso el tamaño, está aún por ver. De todos modos, siempre está el Non-Manifold, el Remove Double Vertex y este tipo de cosas.
Con que alguien encuentre algo de cualquiera de los puntos expuestos, o descubra una forma alternativa, lo tendremos resuelto. De lo contrario, habrá que crear empties y empties hasta que no de error, pero ojalá pudiéramos descubrir en qué criterio agrupar los modelos

PD: Sí, Regolero, ya me acuerdo de que te decía que era imposible. Lo decía porque cuando yo intentaba meter un mod de no se cuantas megas, temía el 'Memory Error'. Y cuando no tenía ese error, me daba en el Blender al tener muchísimos vértices y ponerlo en modo edición. Pero ahora estoy viendo que sí, que tenías razón


DibujanteTM-  
- Rol : Director
Mensajes : 7910
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Bien, Regolero y kubo10, cuando podáis, me echáis una mano.
Nuestro Blender funciona a un buffer de 16 bits que es el equivalente a 2^^16 = 65536 unidades (esto lo vamos a traducir en triángulos por MESH).
He oído que el tal programa Unity (que permite crear videojuegos en 3D) advierte de un error cuando se mete un modelo que excede esta cantidad de vértices. Lo más asombroso es que te divide automáticamente el MESH en varias partes, sin exceder el límite. Este es el ejemplo con un modelo de 215.512 vértices, 640.521 edges y 424.944 faces. La explicación matemática la dejo en spoiler:
Mi idea es hallar la forma en que sepa cuántas partes o empties debo crear para exportar mi modelo (asumiendo que no le voy a reducir el número de vértices, faces ni nada). Dado que Unity parece hacerlo al instante, lo he instalado para ver de qué manera los divide, siendo este el resultado:

Como podéis ver, me ha dividido el mesh en 7 partes, siendo que seis de ellas tienen puesto 65.534 triángulos. Es decir, que el límite de 65.534 se aplica a los triángulos del modelo.
No estoy seguro de si Blender ofrece una forma de poder dividir los objetos automáticamente colocando esta ficha. Por otro lado, la versión de Blender que utilizamos tiene desplegado en el contador solo las cifras de Vertex, Edges y Faces, pero no de "triángulos". No va a ser suficiente con dividir el total de vértices entre tres para saber cuántos triángulos tenemos, pues aunque todos los triángulos están compuestos por vértices, no todos los vértices componen triángulos, o al revés.
Las versiones modernas de Blender permiten contar el número de triángulos. En nuestro caso, esto no es posible. Sin embargo, he encontrado un script de Python que supuestamente recuenta el número de triángulos, aquí lo dejo:
http://bebraw.googlepages.com/tricounter2.py
Hay que colocarlo en la carpeta .blender / scripts. Para ejecutarlo, tenemos que ir a la pestaña de Scripts en Blender y darle a Mesh - Tricounter 0.60. Cuando le damos, tenemos que fijarnos en la consola de Blender. Aparecerá un número, que supuestamente indica el número de triángulos:

Como podéis ver, tasa el mismo número que el que tenemos en Faces. El script indica el número de triángulos que tendría el modelo si sus caras fueran convertidas a triángulo, luego tal vez esta sea la explicación y el script no tenga ninguna utilidad.
Fuere como fuere, el caso es que Unity indica que necesitaría 7 grupos para poder exportar sin problemas este modelo, atendiendo en todo caso a 65.534 unidades de triángulos. Como en mi versión de Blender no tengo la posibilidad de saber a ciencia cierta cuántos triángulos tengo, he establecido una posible relación con los 'edges', sí, ese parámetro que parecía desconocido. Cada edge no es un triángulo (supuestamente), pero funciona exactamente igual.
Atendiendo a las anteriores capturas que subí, me he fijado de que 105.000 edges, siendo divisible entre dos, equivale a 52.500 (por debajo de 65.534). He exportado el modelo dividiendo por debajo de 65.534 edges (poniendo en modo edición el selector de Edges, mediante Ctrl + Alt - Seleccionar Edges). Puede que en los edges esté el problema.
Haced la prueba teniendo en cuenta este parámetro en vuestros modelos, o haced el favor de, por ejemplo, kubo en tu último mod que tuviste que separar por grupos, echarle un ojo al contador de 'edges' que tiene puesto en el momento en que no te dio ningún error.
Actualizaré la información cuando termine de exportar el modelo del unity a .obj para ver en qué ha quedado la cosa
Nuestro Blender funciona a un buffer de 16 bits que es el equivalente a 2^^16 = 65536 unidades (esto lo vamos a traducir en triángulos por MESH).
He oído que el tal programa Unity (que permite crear videojuegos en 3D) advierte de un error cuando se mete un modelo que excede esta cantidad de vértices. Lo más asombroso es que te divide automáticamente el MESH en varias partes, sin exceder el límite. Este es el ejemplo con un modelo de 215.512 vértices, 640.521 edges y 424.944 faces. La explicación matemática la dejo en spoiler:
- Matemáticas en Blender y ecuación de Euler:
Cada punto que vemos en 'Modo edición' de un mesh se llama vértice. Cada línea que una dos vértices, se llama edge (también llamado "lado" o side). Cada área delimitada por vértices se llama face, el cual puede ser de 4 (quads) o 3 (tris = triángulos). Teóricamente, cada face es el UV Map que tiene el modelo.
Hay una ecuación matemática que se conoce como ecuación de Euler, que indica que:
Nº vértices + Nº faces = Nº edges + 2
La cifra no coincide en mi modelo, aunque se aproxima
Supuestamente, cada 3 vértices se forma un 'triángulo', pero existe la opción de convertir las faces en triángulos. Los triángulos pueden equivaler al número de faces y edges en un modelo uniforme (que asume que cada face está compuesto por vértices, casi como decir que el doble de vértices equivale al número de faces). Otra relación asumible es que si dividimos el número de 'edges' entre 2, obtenemos el número de triángulos
Mi idea es hallar la forma en que sepa cuántas partes o empties debo crear para exportar mi modelo (asumiendo que no le voy a reducir el número de vértices, faces ni nada). Dado que Unity parece hacerlo al instante, lo he instalado para ver de qué manera los divide, siendo este el resultado:

Como podéis ver, me ha dividido el mesh en 7 partes, siendo que seis de ellas tienen puesto 65.534 triángulos. Es decir, que el límite de 65.534 se aplica a los triángulos del modelo.
No estoy seguro de si Blender ofrece una forma de poder dividir los objetos automáticamente colocando esta ficha. Por otro lado, la versión de Blender que utilizamos tiene desplegado en el contador solo las cifras de Vertex, Edges y Faces, pero no de "triángulos". No va a ser suficiente con dividir el total de vértices entre tres para saber cuántos triángulos tenemos, pues aunque todos los triángulos están compuestos por vértices, no todos los vértices componen triángulos, o al revés.
Las versiones modernas de Blender permiten contar el número de triángulos. En nuestro caso, esto no es posible. Sin embargo, he encontrado un script de Python que supuestamente recuenta el número de triángulos, aquí lo dejo:
http://bebraw.googlepages.com/tricounter2.py
Hay que colocarlo en la carpeta .blender / scripts. Para ejecutarlo, tenemos que ir a la pestaña de Scripts en Blender y darle a Mesh - Tricounter 0.60. Cuando le damos, tenemos que fijarnos en la consola de Blender. Aparecerá un número, que supuestamente indica el número de triángulos:

Como podéis ver, tasa el mismo número que el que tenemos en Faces. El script indica el número de triángulos que tendría el modelo si sus caras fueran convertidas a triángulo, luego tal vez esta sea la explicación y el script no tenga ninguna utilidad.
Fuere como fuere, el caso es que Unity indica que necesitaría 7 grupos para poder exportar sin problemas este modelo, atendiendo en todo caso a 65.534 unidades de triángulos. Como en mi versión de Blender no tengo la posibilidad de saber a ciencia cierta cuántos triángulos tengo, he establecido una posible relación con los 'edges', sí, ese parámetro que parecía desconocido. Cada edge no es un triángulo (supuestamente), pero funciona exactamente igual.
Atendiendo a las anteriores capturas que subí, me he fijado de que 105.000 edges, siendo divisible entre dos, equivale a 52.500 (por debajo de 65.534). He exportado el modelo dividiendo por debajo de 65.534 edges (poniendo en modo edición el selector de Edges, mediante Ctrl + Alt - Seleccionar Edges). Puede que en los edges esté el problema.
Haced la prueba teniendo en cuenta este parámetro en vuestros modelos, o haced el favor de, por ejemplo, kubo en tu último mod que tuviste que separar por grupos, echarle un ojo al contador de 'edges' que tiene puesto en el momento en que no te dio ningún error.

Actualizaré la información cuando termine de exportar el modelo del unity a .obj para ver en qué ha quedado la cosa

DibujanteTM-  
- Rol : Director
Mensajes : 7910
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Mañana a ver si puedo mirar, estoy en tantas cosas que no doy más de sí.
Y no es por desmoralizar, pero si un modelo se me resiste mucho, me voy a otro tan campante
Entiendo que el tema de los vértices ya es algo personal
Y no es por desmoralizar, pero si un modelo se me resiste mucho, me voy a otro tan campante

Entiendo que el tema de los vértices ya es algo personal

kubo10-  
- Rol : Director
Mensajes : 7804
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
Exactamente kubo, eso es lo que hemos hecho toda la vida. Incluso hay modelos que los he descartado de convertir al primer error. Pero si me entero de que la solución está a pocos clicks, no sé de cuántos modelos me arrepentiré de haber descartado.
El Unity me ha dividido el modelo por 65.534 triángulos, el equivalente a 'faces' en el blender. No quiere decir que todos los triángulos sean caras, sino que las caras podrían convertirse a triángulos... En fin, estoy exportando tal cual me ha dividido los meshes el Unity, esperando el error
El Unity me ha dividido el modelo por 65.534 triángulos, el equivalente a 'faces' en el blender. No quiere decir que todos los triángulos sean caras, sino que las caras podrían convertirse a triángulos... En fin, estoy exportando tal cual me ha dividido los meshes el Unity, esperando el error

DibujanteTM-  
- Rol : Director
Mensajes : 7910
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Alucinante, el proceso de exportación no ha dado error.
A un límite exacto de 65.534 FACES, no ha dado error. La subdivisión de meshes estaba hecha por Unity.

Con la debida cautela, vamos a ver qué más puede funcionar. Tienen en común que los vértices en conjunto apenas sobrepasan 50.000. Y los edges individualmente no sobrepasan 130.000 (que en división entre 2 equivale a 65.000). El caso es que ha funcionado.
Hay que ver qué conclusiones extraemos de esto para poder hacer la división manual de grupos y que funcione a la primera
A un límite exacto de 65.534 FACES, no ha dado error. La subdivisión de meshes estaba hecha por Unity.

Con la debida cautela, vamos a ver qué más puede funcionar. Tienen en común que los vértices en conjunto apenas sobrepasan 50.000. Y los edges individualmente no sobrepasan 130.000 (que en división entre 2 equivale a 65.000). El caso es que ha funcionado.
Hay que ver qué conclusiones extraemos de esto para poder hacer la división manual de grupos y que funcione a la primera

DibujanteTM-  
- Rol : Director
Mensajes : 7910
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Sólo puedo aplaudir el trabajo y el tiempo que te estás tomando con este acertijo matemático

kubo10-  
- Rol : Director
Mensajes : 7804
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
A mí esto me sobrepasa, yo con abrir blender y dar dos o tres atajos de teclado ya voy sobrado, si hubiera querido ya en su momento hubiera estudiado blender, ahora no es el momento, y así y todo tengo q aprenderlo pero para cosas nuevas, eso a mí ni se de que habláis, no tengo esos problemas
Regolero- Alcaide
- Rol : Director
Mensajes : 10829
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
Gracias kubo10. Rego, estoy cada vez más cerca de poder hacer que esto cueste dos atajos de teclado 
Necesito que os fijéis o echéis un pantallazo a los mods que convirtáis por regotruco 2.0 (empties), para ver si tienen en común lo de los faces y demás.

Necesito que os fijéis o echéis un pantallazo a los mods que convirtáis por regotruco 2.0 (empties), para ver si tienen en común lo de los faces y demás.
DibujanteTM-  
- Rol : Director
Mensajes : 7910
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Me lo tenías que haber pedido hace unos meses, ahora en corto plazo no tengo intención de convertir nada, o eso creo. Pasame si eso los que te den problemas o no o los que rozen el limite y pruebo en mi pc que es más malo si es cosa de gráfica o no.
Regolero- Alcaide
- Rol : Director
Mensajes : 10829
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Página 4 de 5. • 1, 2, 3, 4, 5

» Error en el FLM
» Coleccionado/Guía de errores y soluciones Blender
» Error MED.
» error de importación de licuadora
» Error al exportar
» Coleccionado/Guía de errores y soluciones Blender
» Error MED.
» error de importación de licuadora
» Error al exportar
Página 4 de 5.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|