Hilo para tratar el Struct.error 127
3 participantes
Página 2 de 5.
Página 2 de 5. • 1, 2, 3, 4, 5
Re: Hilo para tratar el Struct.error 127
@Regolero, cuando tú creabas las ciudades gigantes para Egipto, recuerdo que te salía un error para exportarlas. Seguramente es este, que no se soluciona con hacer más groups o empties. Creo que nos contabas que exportabas la ciudad en varios .msh y luego los juntabas todos en el juego metiendo diferentes props. ¿Alguna vez has podido fusionar esos props en un único mesh?
DibujanteTM-  
- Mensajes : 7907
Fecha de inscripción : 13/02/2011
Re: Hilo para tratar el Struct.error 127
hace ya muchos años de eso dibu, no lo recuerdo, no se si era porque no sabía lo de dividir en grupos y lo hacía así por desconocimiento o por qu era.
Regolero- Alcaide
- Rol : Director
Mensajes : 10810
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Hilo para tratar el Struct.error 127
Gracias Regolero.
@Mistica ha apuntado con acierto a la causa de este error. Hemos podido encontrarle una explicación, pero la solución todavía sigue pendiente. No en vano, no será necesario descartar los mods que traten este error.
La explicación que le encontramos gira en torno al -128 <= number <= 127. Vamos a tomar el -128 como un valor absoluto |-128|. Cada vez que metemos en Blender un mod, aparece un contador en la consola que nos dice el número de materiales que tiene:

Si el número de materiales excede 128, nos dará error. Pongamos que ese es el límite de materiales que va a tener un MESH del juego. Si exportamos por debajo de esta cifra, no tendremos este error.
Una explicación técnica y detallada del proceso:
Para esquivar el error, y exportar por debajo de 128 materiales, aconsejo lo siguiente:
1) Fusionar todos los meshes con Ctrl+J y exportar a .obj separando por 'Grupos' y 'Material Groups' (con esto el contador equipara el número de materiales al de texturas, y puede reducir bastantes).
Si aun así tenemos más de 128 materiales:
a) Coger un conjunto de MESHES, o todos, y probar la textura unificada, siempre que las coja debidamente.
b) Borrar MESHES que no contribuyan a nada al modelo.
c) (menos recomendable) Separar el mod para exportarlo en 2 .msh distintos.
Lo malo de todo esto, es que tenemos soluciones que funcionan y sirven, pero no solucionan el problema. Dudo que podamos hacer un .msh por encima de 128 materiales o 65534 vértices. De todas formas, ya no debe ser motivo para descartar estos mods.
Mil gracias a Mistica que ha revisado el código del script y ha apuntado al 128 como la causa. De no ser por ella, probablemente habría tardado yo mucho más tiempo en caer en la cuenta, no después de hacer 1000 intentos ajenos a ese número. Una de mis frases era: "olvida el 128 que seguro que eso lo ponen y no tiene nada que ver con el error"

Confío en que, no obstante, con esta gran programadora un día nos encontremos con un nuevo script del .msh. Sería como exportar 4 props autoanimados a la vez
@Mistica ha apuntado con acierto a la causa de este error. Hemos podido encontrarle una explicación, pero la solución todavía sigue pendiente. No en vano, no será necesario descartar los mods que traten este error.
La explicación que le encontramos gira en torno al -128 <= number <= 127. Vamos a tomar el -128 como un valor absoluto |-128|. Cada vez que metemos en Blender un mod, aparece un contador en la consola que nos dice el número de materiales que tiene:

Si el número de materiales excede 128, nos dará error. Pongamos que ese es el límite de materiales que va a tener un MESH del juego. Si exportamos por debajo de esta cifra, no tendremos este error.
Una explicación técnica y detallada del proceso:
- Spoiler:
- El mod de la imagen se compone de: 255 materiales, 255 MESHES y 139 texturas. Para que nos hagamos una idea, cada MESH lleva consigo un material. Existe menor número de texturas porque es posible que varios MESHES lleven una misma textura conjunta. En el MED los materiales son los que aparecen en esta ventanita, que tiene el contador:
Así pues, un primer acercamiento consiste en que nuestro modelo tenga tantos MESHES (y en consecuencia materiales) como texturas necesita. Para eso, basta con hacer Ctrl + J sobre todos los MESHES y volver a exportar el modelo a .obj (haciendo click en separar por 'Grupos' y 'Material Groups').
Al hacer esto, nuestro modelo exportará tantos MESHES como texturas, y en consecuencia todas las cifras se equiparan. Explicado de una forma gráfica sería así:
El primer mod tiene 20 papeleras dispersas como la de la imagen. Cada una de estas papeleras es un MESH y un material. Tenemos entonces 20 MESHES y 20 materiales, pero solo UNA textura. Esto puede provocar que superemos ese número máximo de 128 materiales. Al hacer este proceso de reexportación (el equivalente a coger todas las papeleras y fusionarlas en un único MESH), conseguimos que tengamos un único MESH que engloba 20 papeleras, pero solo un material.
Esta es por tanto una forma de reducir materiales al número exacto de texturas. Otras formas son: 1) hacerlo manualmente (coger todos los MESHES que comparten la misma textura y fusionarlo, o 2) coger un conjunto de MESHES de diferente textura y fusionarlos para hacerles lo de textura unificada.
Para esquivar el error, y exportar por debajo de 128 materiales, aconsejo lo siguiente:
1) Fusionar todos los meshes con Ctrl+J y exportar a .obj separando por 'Grupos' y 'Material Groups' (con esto el contador equipara el número de materiales al de texturas, y puede reducir bastantes).
Si aun así tenemos más de 128 materiales:
a) Coger un conjunto de MESHES, o todos, y probar la textura unificada, siempre que las coja debidamente.
b) Borrar MESHES que no contribuyan a nada al modelo.
c) (menos recomendable) Separar el mod para exportarlo en 2 .msh distintos.
Lo malo de todo esto, es que tenemos soluciones que funcionan y sirven, pero no solucionan el problema. Dudo que podamos hacer un .msh por encima de 128 materiales o 65534 vértices. De todas formas, ya no debe ser motivo para descartar estos mods.
Mil gracias a Mistica que ha revisado el código del script y ha apuntado al 128 como la causa. De no ser por ella, probablemente habría tardado yo mucho más tiempo en caer en la cuenta, no después de hacer 1000 intentos ajenos a ese número. Una de mis frases era: "olvida el 128 que seguro que eso lo ponen y no tiene nada que ver con el error"


Confío en que, no obstante, con esta gran programadora un día nos encontremos con un nuevo script del .msh. Sería como exportar 4 props autoanimados a la vez



DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Hilo para tratar el Struct.error 127
Gran aporte para desentrañar este error
Hay una cosa que no tengo clara, dices que no se pueden exceder los 128 materiales, pero he tenido convertidos modelos que han pasado por el MED de más de 200 y hasta 300 materiales. Lo sé bien porque me he tenido que recorrer uno a uno para el maldito canal alfa
¿Como sería posible con esta teoría?

Hay una cosa que no tengo clara, dices que no se pueden exceder los 128 materiales, pero he tenido convertidos modelos que han pasado por el MED de más de 200 y hasta 300 materiales. Lo sé bien porque me he tenido que recorrer uno a uno para el maldito canal alfa

kubo10-  
- Rol : Director
Mensajes : 7770
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Hilo para tratar el Struct.error 127
exacto, como bien dice kubo, he descargado mods de un tio que empiezan sus mods por dtm_ y que no suele ponerle los alphas bien y demás, y he tenido que ir en el med por más de 200 texturas si no recuerdo mal una a una hasta dar con la que quería corregir.
Regolero- Alcaide
- Rol : Director
Mensajes : 10810
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Hilo para tratar el Struct.error 127
mods de un tio que empiezan sus mods por dtm_ y que no suele ponerle los alphas bien
ajajajjajaa


Creo que ese tío se sacó de la manga el método de la textura unificada (brutal aportación, por cierto), solo para evitarse el rollo de los alphas


kubo10-  
- Rol : Director
Mensajes : 7770
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Hilo para tratar el Struct.error 127
kubo10 escribió:Hay una cosa que no tengo clara, dices que no se pueden exceder los 128 materiales, pero he tenido convertidos modelos que han pasado por el MED de más de 200 y hasta 300 materiales. Lo sé bien porque me he tenido que recorrer uno a uno para el maldito canal alfa¿Como sería posible con esta teoría?
Ahí quería llegar yo..., por favor cuando te encuentres un mod así, envíame enlace para que lo estudie.
Mi "teoría" es que a veces lo que conocemos como 'texturas' se pueden importar como 'materiales' o como 'images' y por eso es posible que donde tienes 100 texturas te aparezcan 200 materiales o 100. A lo mejor esos 200 y 300 materiales del MED realmente se refieren a MESHES y no materiales, aun cuando se supone que tú activas el canal alfa en el material y no en el MESH, pues en la propia ventana pone que son Materials.
Lo sé, Rego. Me sonaban muchos mods que superan esa cifra, esperaba que uno de vosotros me llegara con un enlace para precisamente llegar a esta cuestión. No conozco a ningún mod dtm, pero los canales alfa..., ains, con lo fácil que se exportan directamente desde Blender todos sin necesidad de pasar por el MED..., pero en fin, cito una frase mítica: "si no lo arreglo para mí, no lo voy a hacer para los demás"


DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Hilo para tratar el Struct.error 127
Entiendo por donde vas. Tendría que mirar, pero hay un montón de modelos subidos de más de 128 materiales. Es cuestión de localizar uno.
kubo10-  
- Rol : Director
Mensajes : 7770
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Re: Hilo para tratar el Struct.error 127
DibujanteTM escribió:
frase mítica: "si no lo arreglo para mí, no lo voy a hacer para los demás"![]()
jajajaja de quien será

Regolero- Alcaide
- Rol : Director
Mensajes : 10810
Fecha de inscripción : 17/08/2010
Localización : Sevilla
. :. :
. :
Re: Hilo para tratar el Struct.error 127
Hace poco me peleé con un costume.
Tenía 9 pestañas de MED para materiales, y solo 4 texturas. Como exporté algún MESH sin asignarle material, se me quedaba en blanco esa parte, sin poder asignarle texturas después.
Si exportas un mod sin ninguna textura o material asociados, te dará error. Igual a exportar un costume sin ningún 'Mesh Elements'.
El límite de 126 se referirá al nº de materiales. No conocemos si también hay un límite por texturas.
Las cifras 200-300 que decimos, vamos a llamarlas "mesh_materials" o sea, materiales de cada mesh.
Un set que tiene en su interior 30 plantas probablemente va a usar la misma textura para todas ellas. Sin embargo, puede tener 30 material_mesh, que hace que tengas que ir de una en una para ponerles el canal alfa. Por el contrario, juntas todos los MESHES (Ctrl + J) y le puedes habilitar el canal Alfa a todas las plantas a la vez.
A lo mejor ese error del 255 se refiere al número de MESHES por cada Empty. No obstante, el error del nº de materiales no parece solucionarse con crearle más grupos.
Resuelta la confusión
Tenía 9 pestañas de MED para materiales, y solo 4 texturas. Como exporté algún MESH sin asignarle material, se me quedaba en blanco esa parte, sin poder asignarle texturas después.
Si exportas un mod sin ninguna textura o material asociados, te dará error. Igual a exportar un costume sin ningún 'Mesh Elements'.
El límite de 126 se referirá al nº de materiales. No conocemos si también hay un límite por texturas.
Las cifras 200-300 que decimos, vamos a llamarlas "mesh_materials" o sea, materiales de cada mesh.
Un set que tiene en su interior 30 plantas probablemente va a usar la misma textura para todas ellas. Sin embargo, puede tener 30 material_mesh, que hace que tengas que ir de una en una para ponerles el canal alfa. Por el contrario, juntas todos los MESHES (Ctrl + J) y le puedes habilitar el canal Alfa a todas las plantas a la vez.
A lo mejor ese error del 255 se refiere al número de MESHES por cada Empty. No obstante, el error del nº de materiales no parece solucionarse con crearle más grupos.
Resuelta la confusión

DibujanteTM-  
- Rol : Director
Mensajes : 7907
Fecha de inscripción : 13/02/2011
Localización : Escribiendo un privado a kubo10
. :
Re: Hilo para tratar el Struct.error 127
Aquí hay dos errores que yo estaba confundiendo, el struct.error 127 y el de entre 0 y 255. Ayer estaba con un modelo que me interesaba mucho (no es el que te dije por privado) que curiosamente no era pesado, pero tenía tres materiales y una burrada de MESHES, arrojando el infame error 127.
Como con textura unificada quedaba hecho un roscón de reyes, procedí a eliminar MESHES de forma selectiva para limpiarlo. Cada vez que exportaba daba error, pero veía como en la consola del blender se reducían el número de materiales y de imágenes:

Bien, pues aunque no me dí cuenta del momento exacto porque seguía dando error (y asumía que era el mismo), seguí hasta que reparé en que me daba un error diferente. Este punto de inflexión debió llegar cuando tenía menos de 127 "Imágenes" según lo llama Blender, no materiales (o eso creo).
El nuevo error ya dejó de ser el 127 (entiendo que había reducido suficientemente la "complejidad" del modelo) y ahora daba el error 0 - 255. Este error (yo no lo tenía claro), sí que se supera dividiendo en emptys. Y es distinto al SHRT_MAX, que es en función de los bordes/edge como me hiciste ver y de que no haya ningún MESH individual de más de 65 mil vértices. En este caso, aunque los MESHES son de poquitos vértices, necesita que no haya infinidad de ellos en un mismo empty y requiere subdividir. No obstante, como vemos el número de "group written", sabemos en cuál se corta el proceso y cuál debemos seguir subdividiendo.

Seguramente ya sabías todo esto, pero creo que por eso yo cometía el error de subdividir en varios emptys los MESHES aunque no superasen el número de vértices, porque lo he mezclado con este error.
Como con textura unificada quedaba hecho un roscón de reyes, procedí a eliminar MESHES de forma selectiva para limpiarlo. Cada vez que exportaba daba error, pero veía como en la consola del blender se reducían el número de materiales y de imágenes:

Bien, pues aunque no me dí cuenta del momento exacto porque seguía dando error (y asumía que era el mismo), seguí hasta que reparé en que me daba un error diferente. Este punto de inflexión debió llegar cuando tenía menos de 127 "Imágenes" según lo llama Blender, no materiales (o eso creo).
El nuevo error ya dejó de ser el 127 (entiendo que había reducido suficientemente la "complejidad" del modelo) y ahora daba el error 0 - 255. Este error (yo no lo tenía claro), sí que se supera dividiendo en emptys. Y es distinto al SHRT_MAX, que es en función de los bordes/edge como me hiciste ver y de que no haya ningún MESH individual de más de 65 mil vértices. En este caso, aunque los MESHES son de poquitos vértices, necesita que no haya infinidad de ellos en un mismo empty y requiere subdividir. No obstante, como vemos el número de "group written", sabemos en cuál se corta el proceso y cuál debemos seguir subdividiendo.

Seguramente ya sabías todo esto, pero creo que por eso yo cometía el error de subdividir en varios emptys los MESHES aunque no superasen el número de vértices, porque lo he mezclado con este error.
kubo10-  
- Rol : Director
Mensajes : 7770
Fecha de inscripción : 28/01/2015
Localización : Cantabria
. :
Página 2 de 5. • 1, 2, 3, 4, 5

» Hilo para la presentación de peliculas
» Hilo para la presentacion de trabajos
» Hilo para la presentación de peliculas
» Hilo para la presentacion de trabajos
» Hilo para presentar los trabajos a concurso
» Hilo para la presentacion de trabajos
» Hilo para la presentación de peliculas
» Hilo para la presentacion de trabajos
» Hilo para presentar los trabajos a concurso
Página 2 de 5.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|