PDF de programación - Integración en 3D Studio Max de elementos generados con aplicaciones externas

Imágen de pdf Integración en 3D Studio Max de elementos generados con aplicaciones externas

Integración en 3D Studio Max de elementos generados con aplicaciones externasgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.047 visualizaciones desde el 14 de Enero del 2017
297,6 KB
7 paginas
Creado hace 15a (26/09/2008)
Integración en 3D Studio Max de elementos

generados con aplicaciones externas

José Cortés Parejo, Marzo 2005

En el presente documento, al que se adjuntan varios ficheros, se pretende describir un
procedimiento sencillo para incorporar a 3D Studio Max elementos geométricos
(polígonos, poliedros, superficies 3D, curvas, etc.) generados por programa a través de
una aplicación externa que permita escribir los resultados numéricos en un fichero de
texto ASCII (texto plano sin formatear).
De esta forma podrá utilizarse, bien un lenguaje de programación estándar (C, C++,
Visual Basic, etc.), bien un programa de Cálculo Numérico (Matlab, Mapple, etc.) para
construir de manera precisa objetos por procedimiento –utilizando una formulación
matemática o un algoritmo constructivo- y curvas con una forma y parametrización
perfectamente estudiada, dejando a 3D Studio las tareas de especificación de cámaras,
luces, materiales y texturas y, en general, todo lo necesario para el diseño final de la
escena y su posterior Rendering.

En principio, parecería lógico utilizar para ello uno de los formatos propios de 3D Studio,
como son MAX o ASE. Sin embargo, esto no es en absoluto sencillo.

El formato .MAX es de tipo procedural; esto es, no especifica explícitamente los objetos
de una escena, sino que contiene instrucciones que deben seguir los diferentes plugins
para construirla. Al parecer, ni siquiera los programadores registrados y autorizados por
Discreet™ (desarrolladora de 3D Studio MAX) tienen acceso completo a todas las
especificaciones de este formato. Para un programador normal debe considerarse un
formato absolutamente inaccesible.

Por su parte, el formato .ASE es de texto plano (ASCII) y parecería ideal para la
descripción de objetos y escenas 3D procedentes de otros programas. Sin embargo es
enormemente engorroso y complicado. Por si alguien está interesado, he incluido en la
documentación una carpeta denominada “Formato ASE” donde aparece una breve
descripción y algunos ejemplos.
Desde luego, casi nadie utiliza este formato y la razón principal es su complejidad y, sobre
todo ... que hay formas más sencillas de acceder a 3D Studio.

El más directo competidor de 3D Studio (y según muchos, claramente superior) es Maya
de Alias WaveFront™. Posee un formato de tipo ASCII (texto), con extensión .OBJ, que
es muy sencillo de entender y por tanto de utilizar. De hecho, según he podido comprobar,
se ha convertido en un estándar para el intercambio de objetos, escenas, curvas,
superficies, etc. entre los diferentes programas de modelado, rendering y animación.

El resto del presente documento estará dedicado en consecuencia a describir sucintamente
los fundamentos del formato OBJ (en la documentación adjunta se incluye una
especificación completa del mismo), cómo crear este tipo de ficheros y, naturalmente,
cómo leerlos desde 3D Studio.

El formato .OBJ de Alias WaveFront

La carpeta adjunta “Formato OBJ” contiene, tanto en PDF como en texto, una detallada
explicación de este formato. No debe asustar la extensión del documento (78 páginas), pues
como es comprensible, un fichero OBJ debe poder especificar absolutamente todo lo relativo
a una escena sintética, para eso es un formato propio de un programa como Maya.
Sin embargo, nuestro interés principal es describir objetos 3D y curvas que han sido
generados por programa mediante una aplicación externa a 3D Studio controlada por
nosotros. No estamos interesados en “pasar” los datos necesarios para que Maya o 3D
Studio creen complejas superficies de Bezier o Nurbs (para lo que no están especialmente
bien preparados), ni mucho menos, incluir coordenadas de textura o atributos de Rendering.
En definitiva, deben bastar las escuetas explicaciones que se exponen a continuación y las
10 o 12 primeras páginas del documento mencionado para entender bien el formato OBJ.

Objetos poliédricos

Sabemos que un sólido poliédrico queda totalmente especificado mediante una relación
de coordenadas de sus vértices y una lista de sus caras, indicando para cada cara la
sucesión de vértices que la componen siguiendo siempre el sentido contrario al de las
agujas del reloj cuando la cara se “mira” desde fuera del objeto.
Por ejemplo, el Cubo de la figura puede definirse como:

Vértices: Caras:

1- 7 6 2 3
2- 8 7 3 4
3- 5 8 4 1
4- 6 5 1 2
5- 8 5 6 7
6- 3 2 1 4

1- (0,0,0)
2- (1,0,0)
3- (1,1,0)
4- (0,1,0)
5- (0,0,1)
6- (1,0,1)
7- (1,1,1)
8- (0,1,1)

0.0
1.0
1.0
0.0
0.0
1.0
1.0
0.0

0.0
0.0
0.0
0.0
1.0
1.0
1.0
1.0

Un fichero .OBJ describiendo este cubo sería un fichero de texto conteniendo lo siguiente:
donde la “v” indica que lo que sigue son coordenadas
de un vértice y la “f” (de face), que los datos a
continuación son punteros a la lista de vértices (el
vértice 1 es el que aparece en 1er lugar; etc.)
El único hecho a destacar es que el formato sólo
admite caras con 3 o 4 vértices, por lo que si una
cara está compuesta por más vértices, habrá que
triangularizarla.
Naturalmente, este ejemplo es muy sencillo y el
fichero .OBJ puede escribirse “a mano” utilizando un
editor de texto (bloc de notas, Word Pad, etc.). En
general, para objetos poliédricos más complejos
como un icosaedro, dodecaedro o con formas
arbitrarias, las coordenadas se generarían por
programa y el mismo programa debe escribir los
datos a un fichero de texto con extensión .OBJ

v
v
v
v
v
v
v
v

f
f
f
f
f
f

0.0
0.0
1.0
1.0
0.0
0.0
1.0
1.0

6
7
1
5
5
2

7
8
5
6
8
3

2
3
4
1
6
1

3
4
8
2
7
4

Superficies regulares

Una superficie regular es aquélla que aparece “curvada” y “sin aristas”. En términos
matemáticos, viene descrita mediante una ecuación de uno de los siguientes tipos:

zyxF
,(
0),
=
yxFz
)
,(
=
vuf
x
),(
=
vug
y
),(
=
vuhz
),(
=

Ecuación
Ecuación

Im
plícitaa
Explícita

Ecuación

Paramétric

a

donde en cualquier caso, las funciones que aparecen son continuas y diferenciables.
A los efectos de generar puntos sobre la superficie se utilizan la forma explícita y la
paramétrica, pero nótese que 3D Studio (igual que Maya) opera exclusivamente con
polígonos, dado que tiene implementado un algoritmo de visibilidad (z-Buffer) que está
diseñado sólo para polígonos. Para realizar un Rendering directo de la superficie
deberíamos implementar por nuestra cuenta un algoritmo tipo Ray Tracing que requeriría,
entre otras cosas, resolver para cada pixel de la imagen una ecuación no-lineal de
complejidad análoga a las ecuaciones que definen a la superficie. Esto está fuera de lugar.

Por tanto, partiremos de la base de que la
superficie se aproximará por una malla
poligonal con vértices en puntos elegidos
convenientemente, como en la figura adjunta
(nótese que para generar esta figura se ha
utilizado ya un algoritmo de visibilidad, que
oculta las zonas no visibles).

Lo más conveniente para obtener una malla
de este tipo es utilizar las ecuaciones
paramétricas (una ecuación explícita puede
siempre escibirse en paramétricas).
Para ello empleamos curvas isoparamétricas
de u = constante y v = constante, y un
esquema que, en Matlab sería:

i = 1;
for u = umin : hu : umax

j = 1;
for v = vmin : hv : vmax

x(i,j) = f(u,v);
y(i,j) = g(u,v);
z(i,j) = h(u,v);
j = j+1;

end
i=i+1;

end

donde umin y umax son los límites de
variación del parámetro u y vmin, vmax
lo análogo para v.
Por otra parte,
incrementos en
pasar de una curva a la siguiente.
las coordenadas x se
Nótese que
almacenan en una matriz y lo mismo
sucede, pero en matrices diferentes, con
las coordenadas y y z.

hu y hv son
los
los parámetros para






Por ejemplo, para la superficie de la figura anterior, su ecuación explícita es:

z

=

6

ey

2

(

x

+

2

y

)

por lo que en paramétricas tendremos:

ux
y
v

=
=

z

=

ev
6

2(
u

+

)2

v

y el código en Matlab para generar la malla quedaría:

i = 1;
for u = -2 : 0.1 : 2

j = 1;
for v = -2 : 0.1 : 2

x(i,j) = u;
y(i,j) = v;
z(i,j) = 6* v* exp(-u* u-v* v);
j = j+1;

end
i=i+1;

end

lo que crearía en las matrices x, y, z las coordenadas de los 1681 puntos correspondientes
a las intersecciones de las 41 curvas de u = constante y las 41 de v = constante que se han
considerado.

Una vez obtenidos los puntos (a partir de ahora ya son los vértices de un “objeto”
poliédrico) construimos las caras, pudiendo optar entre formar triángulos o cuadriláteros.
Por ejemplo, para cuadriláteros (que es a lo que más se presta este tipo de superficies), la
asociación de vértices para formar una cara queda recogida en el siguiente esquema:

v11

1

v21

n

v31

v12

v22

v32

v13 • • • • v1n

3

2

v23 • • • • v2n

n+1 n+2

v33 • • • • v3n

• • • • • • • • • • • • • •

vm1

vm2

vm3 • • • • vmn

donde vij representa el índice o puntero al vértice ij. En
total hay (n-1) • (m-1) caras (su numeración aparece en
azul), siendo n y m el número de curvas
isoparamétricas consideradas en u y v.
La construcción de las caras debe hacerse en un
programa aparte del que genera los vértices, dado que
dicha construcción es independiente de la superficie y
de hecho, sólo es necesario conocer los números n y
m. En efecto, para i=1,..., n-1 y para j=1,..., m-1 con los
índices (i,,j), (i,j+1,j), (i+1,j+1), (i+1,j) queda definida una
cara.

Un último detalle, ya a nivel de implementación: Aunque los vértices de la malla se han
calculado y almacenado en forma matricial (en 3 matrices x, y ,z), cuando se escriban en
  • Links de descarga
http://lwp-l.com/pdf874

Comentarios de: Integración en 3D Studio Max de elementos generados con aplicaciones externas (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad