Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Unidades de medida para crear un modelo

Iniciado por technobroken, 19 de Diciembre de 2012, 11:20:41 PM

« anterior - próximo »

technobroken

Hola,

mi duda es que medida he de dar a mi modelo para integrarlos despues a la escena. Estoy usando milkshape3d. No se si se usa algun escalado fijo para el modelo y despues en la scena transformar con escalado al tamaño deseado o se puede crear el modelo directamente con el tamaño que se quiere en la escena.

gracias!

PIM

#1
Hola.

Bueno, es un tanto difícil contestar tu pregunta pero espero te sirva mi respuesta. Lo primero que necesitamos es saber si tu escena usa una proyección Ortogonal o en Perspectiva.

La proyección ortogonal por lo general se usa para juegos en 2D, ya que el tamaño en el que se ve el objeto no se ve afectado por el eje Z. El tamaño del viewport está definido por el ancho y el alto en píxeles de la resolución en la que abras tu ventana. Por ejemplo puede ir de 0 (izquierda) a por ejemplo 1024px (derecha) tomando como ancho de la ventana 1024 x 768.

En los programas de modelaje 3D, se toma como referencia la proyección en perspectiva para crear un modelo, sin embargo hablando de la proyección en perspectiva es un tanto más complejo.

En una proyección en perspectiva, independientemente del ancho y del alto de la ventana, siempre es (o debería ser):

-1 0 1

Es decir que el modelview va de -1 (izquierda) pasando por 0 (el centro) y llegando a 1 (la derecha) igual de arriba hacia abajo; -1 (abajo) cero (centro) y uno (arriba)

Cuando uno hace un modelo, lo hace por lo general usando estas unidades. Por ejemplo, un simple cubo por lo general tiene un tamaño de 1.0 ancho, 1.0 de alto y 1.0 de profundidad.  Si este cubo lo pasas a una proyección ortogonal, se verá (si esque se ve) sólo como un mísero píxel en pantalla, esto porque tiene un valor de 1.0, 1.0 y 1.0 pero como el viewport va de 0 a 1024, pues ye te imaginarás.

Sin embargo la cosa cambia cuando este mismo cubo lo pasas a una escena con una proyección en perspectiva, dado que el viewport va de -1 a 1 entónces el cubo dependiendo de qué tan cerca esté de la cámara (si su posición Z está cerca o lejos) se verá que ese mismo cubo ocupa toda la pantalla.

Y hablando de la posición Z, este también es un factor a tomar en cuenta en las proyecciones en perspectiva. Depende qué tan cerca tu personaje o la escena vaya a estar de la cámara para que se vea más pequeña o más grande.

Cuando hagas tus modelos, ten en cuenta que si por ejemplo lo hiciste a partir de un cubo que medía 10x10x10, entónces para que tu modelo se vea bien y no sólo como algo que cubre la cámara, tendrás que alejarlos al menos unas 15 unidades en el eje Z, es decir que su posición sea al menos -15.0. Claro que esto dependerá de tu modelo.

Pero entonces, ¿Cómo sabes de qué tamaño es tu modelo, si ya perdiste la cuenta del cubo del que empezaste y la tiene muchas cosas extra? La respuesta es simple: Observa por ejemplo la posición de alguno de los vértices más alejados del modelo, es decir los que están más al fondo y luego el que está más hacia a tí. Si por ejemplo tienes que la posición Z (ojo, las coordenadas varían entre programas de modelaje, 3d Studio Max y Blender 3D Definen que el Eje Z va de arriba hacia abajo y no del fondo hacia el frente como otros) es de por ejemplo -50.0 y el otro es 30. 0 sabrá que el objeto en el eje Z tiene un tamaño que va de 30.0 a -50.0, es decir de 80.0.

Si quisieras visualizar ese objeto completo en pantalla, tendrías que moverlo al menos unas 100 unidades hacia el fondo, claro que también dependerá del ancho y el alto de tu modelo para saber cuánto debes alejarlo (o escalarlo) para que quepa en tu escena.

Recuerda también tomar el cuenta que tu personaje tenga el tamaño adecuado según la escena que quieres mostrar, es decir no vayas a hacer un personaje enorme y bien detallado y una escena que tenga un tamaño de apenas la cabeza de tu personaje. Todo debes hacerlo  cuidando las proporciones. (Como en el mundo real)

Bueno pero entonces ¿Qué tamaño deben tener tus modelos? Bien las respuesta es muy subjetiva, lo mejor sería que hicieras modelos de por ejemplo unas 10, 20 o 30 unidades de alto. El ancho y la profundidad dependerán de la forma del modelo.

No te aconsejo que los hagas demasiado pequeños, esto porque luego trae problemas a la hora de computar posiciones, rotaciones, escalados, skinning, etc. Tampoco que los hagas enormes, ya que luego se vuelve muy engorroso trabajar con ellos en los programas de modelado, además que al final los vas a querer escalar para meterlos en la escena sin alejarlos mucho.

Conforme avances, tu mismo verás el tamaño que más te acomode esto en relación a su visualización en la escena.

Ojalá no haya sido muy liosa mi explicación  ^_^'

Saludos.
:D

technobroken

Gracias por la explicacion tan currada que te has pegado. Me ha quedado claro. Yo pensaba que a lo mejor habian unas pautas ya definidas y por eso preguntaba.

Entonces creo que lo que seria bueno es hacer por ejemplo el personaje y luego hacer el resto de los elementos del escenario proporcionales al personaje.

¿Y que pasa con las texturas? Influye las dimensiones del modelo con la calidad de la textura?

Kel

Por lo general, si usas un programa, pongamos, 3dsmax, en las instrucciones te pone que el grid de max equivale a 1 cuadro al nivel de zoom predeterminado es 1 metro, por ejemplo.

Si es blender, pues una blender unit (BU) 1 metro, etc... pero por lo general cuando le pasas un modelo pequeño al programador o diseñador del engine en cuestión ya te dirá en que eje debe estar rotado por defecto y si hace falta escalarlo ( a veces con resetear la escala a 1 los engines lo toman desde ahi).

Por otro lado, las texturas. Yo a todo el que empieza en 3d... tanto para modelaje, como para animación como para texturas siempre recomiendo el lowpoly... simple, pero te enseña absolutamente lo fundamental y una vez lo domines trabajar en highpoly o escultura para modelos complejos es mucho más facil.

Te explico lo de las texturas... por lo general antiguamente las texturas eran de 64x64 o 128x128 (n64 e incluso ps1). Eran texturas hiperpixeladas estilo ladrillaco. Pero después empezaron a sacar filtros como el antialias, mipmapping etc que lo que hacen es suavizar pero esos tochos siguen estando ahi... las texturas son como vectores las puedes escalar o rotar y no es eso lo que pixela sino su resolución.

A partir de 256x256 las texturas empiezan a no pixelar demasiado... ten en cuenta que esto es un tamaño pequeño hoy dia cuando las tarjetas soportan texturas de 4096 solo para personajes o objetos e incluso más.

Yo te recomiendo trabajar en 256x256 o 512x512 para objetos y personajes y según el engine pues ya se aumenta el tamaño si se va a ver muy cerca. Si es un proyecto indie, con una resolucion de 1024 de pantalla con 256 o 512 va sobrado. Por lo general el doble de resolución de pantalla con respecto a la textura no pixela... a no ser que te acerques un huevo.

Espero te haya aclarado algo, un saludo!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.