Ir al contenido

publicidad
publicidad

Foto

Editor escenario 3D. Dudas


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
5 respuestas en este tema

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#1

Escrito 02 junio 2011 - 21:31

Buenas,

Me preguntaba como hacéis vosotros para diseñar un entorno 3D, si utilizáis alguna herramienta específica o como lo hacéis.

¿Podría usarse Blender, 3DStudio, etc para diseñar por completo la geometría de un mundo 3D?

Cualquier información será bienvenida.

Saludos.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#2

Escrito 02 junio 2011 - 23:00

Buenas, uso blender, todo objeto 3d de un juego se puede hacer con uno de los programas que mencionas ;)

Para diseñar el entorno ve de menos a mas.

Primero tenlo todo bien diseñado en lapiz y papel que ahi los errores se corrigen en segundos.

Luego haz distintos elementos del escenario que se vayan a repetir (piedras, palmeras, vehiculos, etc...) , hazlos primero porque aunque la etapa te salga mal, podrás reutilizarlos en otros proyectos. Luego cosas que se repitan menos, como edificios, y similares.

Termina haciendo la geometría del escenario. Si es una isla aprobecha distintas funciones de los editores 3d (como la de hacer terreno del 3d max, edición proporcional para montañas, el uso de hightmaps ,etc...) y rellenalo con lo que has hecho antes.

Un saludo.

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#3

Escrito 03 junio 2011 - 22:25

Buenas Ellolo,

Yo más bien me refería si os programabaís alguna herramienta o algo para el diseño.
Por ejemplo, en vuestro juego White entiendo que usais un editor de niveles o algo, ya que sino sería una "locura" generar el fichero del mapeado a mano.

O más fácil aún, es como la imagen que ha puesto The Hans en la entrada de su nuevo juego.

Por eso preguntaba si se puede usar como "editor" el propio Blender por ejemplo.

Espero que ahora haya quedado mas claro ;)

Saludos

  • The_Hans

  • Ultima

  • vida restante: 100%
  • Registrado: 27 ene 2004
  • Mensajes: 7.490
#4

Escrito 03 junio 2011 - 22:42

Yo siempre sigo un sistema similar, tanto en 2D como en 3D. Uso un editor (por ejemplo Max, Blender o el editor que uso para 2D, Gleed) exporto la posición de los objetos y su tamaño desde el editor añadiendo algunos campos clave (por ejemplo información específica del objeto), todo a un xml. Luego leo el xml y recorro todos los objetos por código para definir cada nivel en base a prefabs que yo mismo he construído anteriormente. Digamos que en el editor sólo coloco representaciones de los prefabs.

No sé si me he explicado. En la imagen del editor que he puesto se ven varios objetos abajo, las representaciones de los prefabs (por ejemplo un tipo de enemigo con un tipo de comportamiento). A la hora de hacer el nivel basta con arrastrar el prefab al editor, posicionarlo donde quiero y escalarlo o rotarlo a conveniencia.

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#5

Escrito 04 junio 2011 - 14:33

Vale, creo que ya he pillado la idea, corregidme si me equivoco.

Supongamos que por ejemplo quiero construir una "ciudad". En Blender tengo algo como esto:

Imagen Enviada

En esa escena sólo hay 3 tipos de "edificios":
* 6 edificios que tienen la misma mesh y textura (b1.fbx)
* 1 edificio que tiene un tanque de agua en el tejado (b2.fbx)
* 1 edificio que en forma de "pirámide" (b3.fbx)

El tema es exportar cada una de esos objetos a ficheros independiente (b1.fbx, b2.fbx y b3.fbx por ejemplo)

La idea es guardar toda la escena en un formato (XML tal y como indicas por ejemplo) para obtener las coordenadas X,Y,Z y la mesh en concreto, algo por ejemplo de este estilo:
[code:1]


b1.fbx

23
172
0




b1.fbx

133
272
0



....
....
....

b2.fbx

633
972
0




b3.fbx

133
272
0




[/code]

En el XML se podrían poner cierta información específica: no sólo la posición y objeto a usar dentro del mundo sino comportamientos u otras cosas que necesitemos.

Luego en XNA, se "parsearía" dicho XML y en lugar de representar toda la escena se irían cargado los objetos (que tenemos en archivos *.fbx independientes) y posicionandolos en las coordenadas correspondientes.
Los "edificios" serían objetos con entidad propia, de esta forma, por ejemplo para calcular las colisiones mediante boundingbox o spherebox sería más fácil.

¿Es más o menos la idea que comentabas?

Saludos.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#6

Escrito 08 junio 2011 - 22:33

Por algo en los grandes estudios primero hacen las herramientas (o las adquieren) y luego sobre esas herramientas hacen el juego ;)

En mi caso he adquirido dos herramientas, una centrada en 2d y otra en 3d, aunque tambien he programado mi propio motorcete (bueno, el esqueleto y un par de clases) para poder adaptar lo que haga con la herramienta 2d a XNA

A la hora de desarrollar las herramientas lo que se hace es un programa que lea el contenido de una carpeta, lo "cargue" en un escenario para modificarlo (las herramientas que he adquirido lo permiten en plan drag'ndrop, el motorcito que me he hecho no), permita en mi caso varias capas, mover y colocar y todo eso. El objetivo es con este programa generar un archivo xml adaptado al programa que uso.

Luego el juego lo parsea para generarlo todo como tu dices. En mi caso mi experiencia con el 2d es: Una capa especial para poner rectangulos que harán de colision, se parsea esa capa como las dimensiones de los rectangulos y ya se encargará el motor de gestionarlas. En el resto de las capas van arrays indicando que "tile" usar en segun que caso, si tu 3d es modular puedes hacer algo similar, y luego una serie de props.

Básicamente los ficheros que genero tienen el siguiente aspecto:

[numero indicando capas];

numero de rectangulos de colision en la etapa;
//logica de guardado de colisiones
<\capa1>

//array bidimensional de ints indicando el indice del elemento gráfico a cargar en esas coordenadas
<\capa2>
...

numero de elementos de la etapa;
//logica de los props/enemigos/etc....
<\capafinal>

La lógica que comento aunque en el fondo es la misma suele variar según el juego o el como sea el constructor.

Básicamente identificas la etiqueta tratando el string del archivo y según el primer numero acabado en ";" crea un array de esas capas - 2, porque la primera es un array de rectangulos de colisiones y la ultima es un array de elementos del escenario.

En la primera se rellena el array que se inicializa con el numero de rectangulos y según va leyendo los va creando.

En el segundo pasa el valor a la matriz creada que representa a esa capa, ya se encargará el motor al llamar a la funcion de dibujado de recorrersela y dibujar según la posicion del protagonista.

Y asi sucesivamente.

En la ultima se usa un patrón fábrica para que te genere los objetos y los controlas mediante un array de objetos.

Espero que te sirva ;)


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad