Prevención del error SHRT_MAX
3 participantes
Página 1 de 5.
Página 1 de 5. • 1, 2, 3, 4, 5
Prevención del error SHRT_MAX
#Cómo prevenir el error del SHRT_MAX en Blender
¡RECUERDA!, vértices y faces ≤ 65.534; edges ≤ 131.068
El error del USHRT_MAX forma parte de un grupo de errores conocido como "struct.error" o error de estructura, que casi con toda seguridad tiene que ver con el mapeado y los 'Faces' de un modelo. Conviene que aclaremos conceptos:
Nociones básicas en Blender
Diferencia entre vértice, edge y face
Cada uno de los puntos que tiene un modelo en modo edición se conocería como vértice. Cada uno de estos puntos está unido por una línea (edge), que delimita los lados (sides). Estos lados se conocen como edges. Por último, un "face" es aquella área del modelo delimitada por vértices. En Blender, corresponde al área que mapeamos (asignamos a una textura). Algunas de estas caras pueden tener una forma de triángulos (rodeadas por 3 vértices) o diferentes (rodeadas por 4 o más vértices).
En Blender, existe una opción de convertir todas las caras en triángulos (tecla CTR + T) en modo edición y con los vértices seleccionados.
Cuanto más calidad (y peso) tiene nuestro modelo en 3D, mayor cantidad de vértices puede tener; en consecuencia, mayores son los faces y los edges. Es decir, a mayor cantidad de vértices, mayor profundidad tiene el modelo, ya que permite mejorar la nitidez y calidad de un mod. Es aquí cuando la mayoría de tarjetas gráficas del mercado tienen puesto un límite de cuántos vértices debe tener un modelo, para que no se estropeen.
¿Qué es el error del SHRT_MAX?
Al exportar un modelo que contiene muchos 'faces', denominado high-poly model, es posible que nos salte el error que aparece en la imagen. Recuerda que cada MESH de un modelo contiene un número de vértices, edges y faces. En el caso de que dicho MESH contenga más de un límite de estas unidades, el Blender nos advertirá este error para que reduzcamos esta cantidad. Parece ser que este límite se traduce en 65.534 faces. Esto significa que cada vez que exportemos un empty (a formato .msh) cuyos MESHES o suma de vértices y faces supere esta cantidad, nos dará el error de límite SHRT_MAX. Ya en otros vídeos y tutoriales se explica cómo detectarlo y lo que es:
Vídeotutorial: https://www.youtube.com/watch?v=snd75v9UmCE
Coleccionado de errores Blender: https://www.themoviescinema.com/t1335-coleccionado-de-errores-y-soluciones-blender?highlight=coleccionado
VÍDEOTUTORIAL
Prevenir el SHRT_MAX de manera económica
EXPLICACIÓN
Cuando vayamos a exportar a .msh, si en nuestro empty tenemos una cantidad superior a 65.534 faces nos va a dar el error de SHRT_MAX con casi toda probabilidad. La solución está en crear tantos empties como sea necesario para no superar esta cantidad. Esto se hace de la siguiente manera:
- Explicación:
1. Recuenta- Pon el objeto en modo edición y haz el atajo de teclado Ctrl + Tab y selecciona 'Faces'. De esta manera, solo podrás seleccionar faces. En la franja superior del Blender te aparecerá la cantidad que señales.
- Si tienes más de un MESH, prueba a seleccionar todos los pertenecientes al mismo grupo/empty y haz Ctrl + J para fusionarlos, y repite el proceso de arriba para realizar el recuento. Luego haz Ctrl + Z para volver a tener los MESHES separados.
En el recuadro rojo se indica el número de vértices; a la derecha, el de edges y faces
2. Separa MESHES y distribúyelos en grupos- Pon el MESH en modo edición.
- Selecciona todos los faces (tecla "A")
- Presiona la tecla B y deselecciona una cantidad de faces.
- Fíjate en el contador de faces. Cuando tengas seleccionado un total de faces inferior a 65.534, separa el mesh (Barra espaciadora - Vértices - Separate).
Otra opción es darle a 'Select - Random' y seleccionar el porcentaje correspondiente a la proporción de 65.534 sobre el total de faces. Abre tu calculadora y aplica esta fórmula: 65.534 / (número total de faces del modelo) y te lo dividirá de manera precisa
Si tienes distintos MESHES - Selecciona el total de MESHES que está dentro de un grupo, y comprueba si en el contador excede la cantidad fijada (puedes fusionarlos en un mismo MESH para facilitar la exploración)
- Caso de que así sea, mueve el resto de MESHES a otro grupo, y repite el proceso tantas veces sea necesario.
- Pincha en Mesh -> Vertex -> Remove Double Vertex
Si tienes todo en un mismo MESH
Opción alternativa (puede perder calidad el modelo y tarda más tiempo, pero irá más fluido en el juego) Script Poly Reducer- Selecciona el objeto cuyos vértices quieras reducir.
- Despliega la pestaña de Scripts en el Outliner.
- Pincha en Scripts -> Mesh -> Poly Reducer
- Selecciona el ratio en que quieras reducir los vértices (recomiendo entre 0.5 y 0.4; a menor valor, más vértices eliminados; a mayor cantidad de vértices eliminados, menos calidad de modelo).
- Pon el objeto en modo edición y haz el atajo de teclado Ctrl + Tab y selecciona 'Faces'. De esta manera, solo podrás seleccionar faces. En la franja superior del Blender te aparecerá la cantidad que señales.
El Blender trabaja en un buffer de 16 bits, lo que significa que 2^16 = 65.534. Este es el límite de 'faces' o mapeado que un solo MESH puede tener, de lo contrario, saltará error. De esta manera, evitamos saturar en un solo MESH un número excesivo de vértices, que podría dañar nuestra tarjeta gráfica. Por eso, la solución está en dividir nuestro MESH en distintos OBJETOS (que tengan por debajo de 65.534 faces), y exportarlos mediante regotruco 1.5 o 2.0. Si lo hacemos bien, tardaremos en torno a unos 10 minutos por cada modelo high-poly de 500.000 vértices. No es una solución universal, pero parece que todos los MESHES tienen que tener en común:
Menos de 65.534 vértices y faces; menos de 131.068 edges
Cualquier duda respecto a este proceso, por favor, coméntala utilizando este hilo. Muchas gracias.
Última edición por Dibujante el Sáb 05 Mayo 2018, 15:16, editado 2 veces
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Ahora sí, hemos acertado. Ya podemos convertir modelos sin necesidad de reducir los vértices y sin esperar una larga cantidad de minutos para que nos salte el error. Solo queda recordar que este error del SHRT_MAX nos sucede con el script a .msh, es decir, que si este tipo de modelos los exportamos a otro formato, no tiene por qué dar el mismo error. Incluso en scripts para convertir a otros formatos para otros juegos, el error se sitúa en una cantidad todavía inferior de vértices.
Por lo general, si váis a convertir accesorios, costumes o pequeños props, no tenéis que preocuparos del error. Esto es más cuando se trata de un modelo de muchísima calidad o de una dimensión considerable como propsets. Recordad que una buena guía es poner el objeto en modo 'Textura' y comprobar si se ralentiza un poco el programa, en ese caso podrías sospechar que tiene muchos vértices y podría citarse el error.
Actualizo también este último vídeo y explicaciones al coleccionado de errores de Blender.
Por lo general, si váis a convertir accesorios, costumes o pequeños props, no tenéis que preocuparos del error. Esto es más cuando se trata de un modelo de muchísima calidad o de una dimensión considerable como propsets. Recordad que una buena guía es poner el objeto en modo 'Textura' y comprobar si se ralentiza un poco el programa, en ese caso podrías sospechar que tiene muchos vértices y podría citarse el error.

Actualizo también este último vídeo y explicaciones al coleccionado de errores de Blender.
DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
kubo10-  
- Rol : Director
Mensajes : 7497
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX



Regolero- Alcaide
- Rol : Director
Mensajes : 10755
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
El año que viene te busco otra idea de película para que no te retires

kubo10-  
- Rol : Director
Mensajes : 7497
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Prevención del error SHRT_MAX
jjjajaajaja, si con esta tengo para 7 años jajaja.
Regolero- Alcaide
- Rol : Director
Mensajes : 10755
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
Pues aquí tenéis un ejemplo de esta locura, con un mod HQ de 488.000 vértices:

Calculadora en mano, para 65534 vértices necesitaré 8 empties. El único problema es que esos 0,7 (del 7,3) grupos que necesito espero que compensen mi torpe habilidad para seleccionar el tope máximo de vértices por grupo, ya que al ser un proceso manual, no sé de qué manera podría decirle a Blender que me coja al azar esa cantidad de vértices
¿Habrá forma?

Calculadora en mano, para 65534 vértices necesitaré 8 empties. El único problema es que esos 0,7 (del 7,3) grupos que necesito espero que compensen mi torpe habilidad para seleccionar el tope máximo de vértices por grupo, ya que al ser un proceso manual, no sé de qué manera podría decirle a Blender que me coja al azar esa cantidad de vértices

DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Os váis a reir, pero he aquí una de estas formas.

En Seleccionar - Random (aleatorio), especifica un porcentaje que se va a seleccionar. Dado que el total de vértices es de 484.484 y necesito un máximo de 65.534..., ¿en qué porcentaje habrá de dividirse?
Si, eso digo yo, ¿cuánto? 
Lo siento, pero me toca poner el emoticono para seguir:
65.534 / 484.484 = 0,135 ~~ 13'5 %
Vamos a tolerar la sensibilidad del dato y pondremos un 13% que compensará el octavo grupo añadido:

Así de sencillo. Si hubiéramos hecho la operación inversa (484.484 vértices a dividir en grupos de 65.534) nos habría dado el resultado de 7'3 grupos o empties que necesitaríamos para completar la operación, que en la práctica, al ser solo números exactos, toca hacer creando un empty de más.
La verdad es que no está del todo mal, parece rápido de hacerse


En Seleccionar - Random (aleatorio), especifica un porcentaje que se va a seleccionar. Dado que el total de vértices es de 484.484 y necesito un máximo de 65.534..., ¿en qué porcentaje habrá de dividirse?


Lo siento, pero me toca poner el emoticono para seguir:

Vamos a tolerar la sensibilidad del dato y pondremos un 13% que compensará el octavo grupo añadido:

Así de sencillo. Si hubiéramos hecho la operación inversa (484.484 vértices a dividir en grupos de 65.534) nos habría dado el resultado de 7'3 grupos o empties que necesitaríamos para completar la operación, que en la práctica, al ser solo números exactos, toca hacer creando un empty de más.
La verdad es que no está del todo mal, parece rápido de hacerse

DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Prevención del error SHRT_MAX
Que cacao me estáis montando, no me entero de nada con tanta cosa nueva jajaja.
¿Ahora que hay que coger la calculadora para hacer props?
¿Ahora que hay que coger la calculadora para hacer props?


Regolero- Alcaide
- Rol : Director
Mensajes : 10755
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Prevención del error SHRT_MAX
Regolero escribió:¿Ahora que hay que coger la calculadora para hacer props?![]()
![]()




Solo a mí. A ti no te haría falta, los cálculos te salen automáticamente. Recuerda las clases que le diste a Sirlancelot en los tiempos de jueces de Águilas

DibujanteTM-  
- Rol : Director
Mensajes : 7888
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Página 1 de 5. • 1, 2, 3, 4, 5

» Error MED.
» Error en el FLM
» Error SM_ENGINE_NOT_START_LAST_TIME_YES_NO
» Error 1604
» Error en indumentaria.
» Error en el FLM
» Error SM_ENGINE_NOT_START_LAST_TIME_YES_NO
» Error 1604
» Error en indumentaria.
Página 1 de 5.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|