Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: Haddd en 20 de Septiembre de 2004, 01:15:45 PM

Título: Motor Común En C#:atributos
Publicado por: Haddd en 20 de Septiembre de 2004, 01:15:45 PM
 Bien, este el post para discutir el tema de los atributos. Como sabreis un mesh se compone de vértices, índices y atributos. Estos atributos están formados por materiales y texturas, actualmente.

Las clases del motor por ahora son las siguientes:

Malla -> Mesh -> mesh de D3DX.

Yo planteo utilizar una clase nueva llamada AtributosMalla(si alguien se le ocurre un nombre mejor...):


class AtributosMalla {
int NumAtributos;
Material[] materiales;
Textura[] texturas;
}


este objeto colgaría directamente de Malla, para que un mismo mesh pueda tener diferentes atributos. Aunque también he pensado que cuelgue también de Mesh, de forma que "por defecto" este objeto tenga estos atributos...

El problema está por ejemplo, en los meshes con información per pixel. Estos meshes necesitan un canal más de texturas(el mapa de normales). Podría resolverse modificando un poco:


class AtributosMalla {
int NumAtributos;
Material[] materiales;
Textura[] diffuse;
Textura[] normales;
}


Bien, esa es una aproximación, pero hay muchas. Es el momento de exponer y comentar.

Gracias a todos... (ole)  
Título: Motor Común En C#:atributos
Publicado por: Vicente en 20 de Septiembre de 2004, 04:14:19 PM
 Hola,

estoy en el curro esta noche miro tu rar con mas calma y te paso una cosa. Una duda así al vuelo: porque no usas colecciones tipadas en vez de arrays? Un saludo,

Vicente
Título: Motor Común En C#:atributos
Publicado por: CoLSoN2 en 20 de Septiembre de 2004, 07:14:50 PM
 Haddd no es por molestar pero, ¿vas a crear un thread cada dos días para algún aspecto del motor? ¿no es mejor ponerlo todo en uno? O ya directamente que os creen un foro.
Título: Motor Común En C#:atributos
Publicado por: Grugnorr en 20 de Septiembre de 2004, 08:17:23 PM
 Si no vas a cambiar los elementos en ejecución, mejor un array. Si vas a leer por ejemplo de un fichero la cantidad de elementos que añadir, creas el array de ese tamaño.

Como no ando muy fresco en las meshes de D3DX, no tengo muy claro qué representa NumAtributos, si es la longitud de los arrays que tienes de Materiales y Texturas... ahorraría espacio con una propiedad que retornara la longitud de unos de esos arrays. Si no es eso...pues no sé

Volviendo a C#....aparte de mejor si lo llamas numAtributos, sabes que has declarado los 3 campos como internal?(modificador de acceso por defecto). Puede tener su sentido, por otro lado, si son públicos dentro del assembly(dll de rendering por ejemplo)y privados fuera, pero no sé.

PD: Para lo bueno y lo malo... un Atributo en C# es muy distinto que un atributo en POO y muy distinto de los atributos de las meshes  :P

PD: Si te piensas un poco el diseño, seguramente puedas tener una clase de Atributos de malla con información por pixel y otros que no, aunque en realidad sólo malgastas 32bits en una referencia nula si tratas todos como por pixel.