Gracias Gracias:  25
Página 11 de 45 PrimerPrimer ... 78910111213141521 ... ÚltimoÚltimo
Resultados 151 al 165 de 669

Tema: BlitzBasic 3D

  1. #151
    A-team Avatar de Cibertronic
    Fecha de ingreso
    May 2008
    Ubicación
    Peru
    Mensajes
    197

    Unhappy Re: BlitzBasic 3D

    Aquí les dejo el código enviado por JuanYang, reducido hasta donde pude... para tratar de explicarlo...pero esta un jeroglifico para mi sobre todo el grupo dentro del while...

    Haber si uds pueden comentarlo y explicar que sucede en esa parte del codigo
    Miniaturas adjuntadas Miniaturas adjuntadas BlitzBasic 3D-dibujo.jpg  
    Archivos adjuntados Archivos adjuntados

    Gracias en especial a Ti, que vales muuuho mas que los 30 000
    www.cibertronic.hyperphp.com

  2. #152
    My Member
    Fecha de ingreso
    Jan 2008
    Ubicación
    Pamplona
    Mensajes
    348

    Re: BlitzBasic 3D

    yo ni idea haber si se pasa JuanYang y nos explica, la verdad es que la cámara se mueve fina fina, yo creo que realmete para hacer algo con mucha calidad hace falta tirar de funciones, aunque no se igual se podría convertir a código más entendible.

  3. #153
    Miembro Nuevo
    Fecha de ingreso
    May 2008
    Mensajes
    9

    Re: BlitzBasic 3D

    Lo cierto es que soy muy mal profesor, todo el basic que se lo he aprendido por mi cuenta, con mucho tiempo, paciencia y empeño. Tanto el Visual Basic Net (que es a lo que dedico todo mi tiempo, haciendo porgramas a medida para empresas) como el blitz ( que casi más de 8 meses que no lo uso, pero me habéis vuelto a picar), lo puedo explicar a lo bruto ( tal y como yo lo entiendo) que seguramente no sea la forma más correcta.
    Pero sobre todo, QUE NADIE SE QUEDE ATRAS.

    1º discrepar sobre las faltas ortográficas, y aunque si que creo que hay que poner mucha atención en como se escriben las cosas ( mucho mejor si se hace bien) a mi personalmente me da igual un "ahora" que un "ahora", sabiendo que el primero se entiende mejor que el segundo. En mis 35 años que ya tengo, he conocido grandes matematicos, informaticos y físicos que no tienen ni idea de escribir bien. Lo cierto es que a la hora de programar da igual:
    Dim datatable as new datatable
    que
    Dim DT as new datatable
    siempre y cuando el programador sepa que esta haciendo.
    Como último comentario, decir que prefiero las faltas a que se escriba como en un móvil y tener que descifrar lo que pone. Sin entrar en polémica con nadie, ya he dicho que mejor escribir bien, esto no deja de ser un foro para que la gente pregunte de la mejor manera que lo sepa hacer.

    2º EL CÓDIGO SIN TYPE.

    Código:
    Graphics3D 640,480,16,2
    AmbientLight 250,250,250
    
    Global Cámara=CreateCamera ()
    
    Global Personaje=LoadMesh("tea.b3d")
    Global Pivote=CreatePivot (Personaje)
    	MoveEntity Pivote,0,25,-30
    
    Suelo=LoadMesh ("suelo.b3d")
    	
    período=33 
    tiempo = MilliSecs()-período
    SeedRnd (MilliSecs())
    
    SetBuffer BackBuffer()
    
    While Not KeyHit(1)
    	Repeat
    		TiempoTranscurrido = MilliSecs() - tiempo
    	Until TiempoTranscurrido
    	ticks = TiempoTranscurrido/período
    	captura# = Float(TiempoTranscurrido Mod período) / Float(período)
    	For k=1 To ticks
    		tiempo = tiempo+período
    		If que = ticks Then CaptureWorld
     movimientos_personaje() 
     movimientos_camara() 
    		UpdateWorld	
    	Next
    	RenderWorld(captura#)
    	Flip 
    Wend
    End
    
    Function Movimientos_Personaje()
    	If KeyDown(203) Then TurnEntity Personaje,0,1,0
    	If KeyDown(205) Then TurnEntity Personaje,0,-1,0
    	If KeyDown(200)=True Then z#=0.5
    	If KeyDown(208)=True Then z#=-0.5
    		MoveEntity Personaje,0,0,z#
    End Function
    
    Function Movimientos_Camara()
    	dx#=EntityX( Pivote,True )-EntityX( Cámara )
    	dy#=EntityY( Pivote,True )-EntityY( Cámara )
    	dz#=EntityZ( Pivote,True )-EntityZ( Cámara )
    		TranslateEntity Cámara,dx# * .015,dy# * .015,dz# * .015
    		PointEntity Cámara,Personaje
    End Function
    3º UNA PEQUEÑA EXPLICACION
    Para que la cámara vaya lentamente detrás del personaje, el truco esta en la instruccion translateentity Cámara. Lo único que estas haciendo es mover la cámara a una velocidad inferior a la que mueves la "z#" del personaje y por supuesto también menor a la velocidad de rotación del mismo. No ovides nunca que esto:
    TranslateEntity Cámara,dx# * .015,dy# * .015,dz# * .015
    es lo mismo que esto:
    TranslateEntity Cámara,dx# * 0.015,dy# * 0.015,dz# * 0.015
    y claro esta, que cuanto menor sea el número que pongamos, más tiempo tardará la cámara en llegar al punto donde la hemos puesto en la instrucción pointentity.Por lo tanto con: 0.001 tardará mucho más que con 0.1.

    - Los frames por segundo:
    Digamos que las imágenes que vemos se componen de dos estados. Un fondo negro, una imagen, un fondo negro, una imagen etc. Esto pasado muy rápidamente hace que nuestro ojo sólo vea imágenes, siempre y cuando metamos más de 25 imágenes en un segundo. Menor que eso veremos un parpadeo. Por lo tanto entendiendo lo anterior, no es difícil comprender que en un Pentium II tardará más en ejecutar el bucle While / Wend que en una AMD phenom de 4 núcleos y que para que nuestro juego funcione a la misma velocidad en uno que en otro, pues habrá que controlar los frames (o capturas de imágenes que queremos volcar). Tu en tu caso le has puesto 33, que es un buen número para blitz, y para que vaya constante a 33 y no a tope de tu computadora pues lo has controlado en esta parte de código:

    Repeat
    TiempoTranscurrido = MilliSecs() - tiempo
    Until TiempoTranscurrido
    ticks = TiempoTranscurrido/período
    captura# = Float(TiempoTranscurrido Mod período) / Float(período)
    For k=1 To ticks
    tiempo = tiempo+período
    If que = ticks Then CaptureWorld

    todo lo que pongas dentro del bucle for lo hará 33 veces por segundo.
    Todo esto es mucho más largo, número de polígonos que renderiza nuestra cámara en un determinado momento y un largo etc en el cual no voy a entrar, pero si entender que si tu personaje gira sobre un eje, por ejemplo y en una determinada posición metes un árbol con 40.000 polígonos, pues si no controlases los frames he intentases volcar todas las capturas, verias que en ese punto se relentiza. Esto sucede porque pasar de vacio 12 polígonos a 400 frames,por ejemplo, a 40.000 polígonos 45 frames pues es un cambio muy grande que nuestro ojo aprecia y claro, no es lo mismo capturar el vacio que 40.000 polígonos para blitz y para tener que capturar las máximas imágenes que pueda pues tendrá que tardar más en recorrer el bucle, reduciendo así los frames. De ahí la importancia de controlarlos.
    Compiladores como el C++ dan mucho más frames que blitz, pero eso si que es otro tema.

    Ya que este mensaje empieza a ser demasiado largo dejaré el tema de los types para otro. Un saludo a todos.
    Archivos adjuntados Archivos adjuntados

  4. #154
    My Member
    Fecha de ingreso
    Jan 2008
    Ubicación
    Pamplona
    Mensajes
    348

    Re: BlitzBasic 3D

    A vale eso es para asignarle los frames/segundo para que sea a tu gusto y la animacin sea lo más fluida posible. Bien, bien...

  5. #155
    Miembro Nuevo
    Fecha de ingreso
    May 2008
    Mensajes
    9

    Re: BlitzBasic 3D

    yuhu, uno que lo ha entendido, a ver cuantos más. Pero Rompecabezas, no es a tu gusto, es una manera de controlar que tu juego funcione a la misma velocidad tanto para un pentium I como para un pentium IV. Ya que todo influye: la velocidad del micro, la tarjeta gráfica etc., por lo tanto lo que controlas es para que ordenador quieres que fuciones tu juego. De esto deducimos, que perfectamente puedes crear un juego donde en un momento determinado tu cámara recoja un millón de polígonos, por supuesto ningún compilador podrá con ello, pero quizad dentro de 5 años si que exista el pentium VI con una tarjeta gráfica de 4 gigas que te lo pueda leer.
    Por lo tanto, y si todo el mundo entiende todo lo anterior, pasaremos a la siguiente parte, que es ni más ni menos que todo tiene un límite. La memoria gráfica y los polígonos que podemos renderizar se acaban y hace que los frames bajen. Aunque en un principio parece que todo lo que tenemos es infinito, y nunca se nos va acabar, esto no es así, y pronto nos damos cuenta que nuestro juego va lento y poco después a saltos.
    Por ello la importancia de los Arrays y los Types, con los cuales podemos borrar y eliminar todos los objetos que ya no se utilicen en nuestro juego (imágenes jpg,bmp, árboles, sillas, coches, enemigos, etc).
    Por poner un pequeño ejemplo como pregunta: ¿ De que nos vale una bala que disparamos y no ha colisionado con nada? ¿ Esa bala, una vez que ha alcanzado una determinada distancia y ya no la vemos se sigue renderizando, por que no la hemos eliminado?, ¿ No seria mejor eliminarla y que no ocupara ni polígonos, ni texturasí y por último ¿ De alguna manera tendremos que controlar cada bala que disparamos y que tenemos que eliminar ( tanto si colisiona como si esta muy lejos de donde fué disparada)?
    Todo eso son los Types ( Blitz basic lo hereda del "C") o las Structures ( Que se llamarian en visual basic net), y por la importancia que tienen ( ya que de ello depende nuestro juego en blitz, y sin ello no hay juego), dedicaré todo mi tiempo hasta que todo el mundo que sigue este hilo diga que lo entiende, aunque para ello se me tengan que ocurrir mil y un ejemplo.

    Por último decir, que espero estar por aquí más tiempo y escribir mucho más, aunque todo depende de mis hijos, mujer y trabajo. Se que lo entendeis.

    Hasta la siguiente vez, que será insertar una imagen 2d en el mundo 3d, antes de pasar a los types.
    Última edición por juanyang; 04-06-2008 a las 01:28

  6. #156
    Miembro Nuevo
    Fecha de ingreso
    Nov 2007
    Ubicación
    Argentina
    Mensajes
    29

    Re: BlitzBasic 3D

    Perdon por el poco tiempo que les dedico.

    Bueno, les adjunto como siempre el código un poco más simple con aclaraciones para lograr el mismo efecto.

    En cuanto a mantener el ratio de frame hay una sentencia mucho más simple.
    Ej.

    ratio=CreateTimer(60)

    luego en el cuerpo del bucle

    WaitTimer(ratio)

    Adjunto el código con nuestro ejemplo del auto.

    Saludos
    Archivos adjuntados Archivos adjuntados

  7. #157
    A-team Avatar de Cibertronic
    Fecha de ingreso
    May 2008
    Ubicación
    Peru
    Mensajes
    197

    Smile Re: BlitzBasic 3D

    Que clase....(como diría viscosillo, no si si alguno de ud lo abra conocido, era el personaje de una revista de anaya multimedia justamente sobre Basic. hace muchoo tiempo.mi primer maestro )

    Sinceramente aun estoy recuperandome de tan dulce empapada de conocimiento, mis más grandes muestras de admiración y respeto para todos uds.en especial a JuanYang y Estilo_sur

    Si bien aun estoy en eso de entender al 100% el codigo, ya casi....

    aquí una modificada al código de para incluir una animación

    Nuevamente gracias

    Ni bien lo entienda al 100% lo pongo en la revista(ha desde luego anotando sus respectivos créditos) para los que lleguen después de nosotros.

    Más bien si desearian darme sus correos, para ponerlos en la revista, mi ilucion es que la revista circule por la red, fuera de este foro incluso, y así de ese modo alguien que lea la revista y no sea de este foro y tenga la oportunidad de comunicarse con ud. lo pueda hacer


    Nuevamtne Gracias Maestros.
    Yo de grande quiero ser como ustedes
    Miniaturas adjuntadas Miniaturas adjuntadas BlitzBasic 3D-camina.jpg  
    Archivos adjuntados Archivos adjuntados
    Última edición por Cibertronic; 04-06-2008 a las 08:53

    Gracias en especial a Ti, que vales muuuho mas que los 30 000
    www.cibertronic.hyperphp.com

  8. #158
    My Member
    Fecha de ingreso
    Jan 2008
    Ubicación
    Pamplona
    Mensajes
    348

    Re: BlitzBasic 3D

    Muy bueno estilo sur esta genial tu adaptacion del código de juanyang a el estilo que estamos siguiendo.

    De paso os subo este mini tutorial para ver si podemos hacer un modelo implementando unas ruedas que giren como en este ejemplo:
    Archivos adjuntados Archivos adjuntados

  9. #159
    A-team Avatar de Cibertronic
    Fecha de ingreso
    May 2008
    Ubicación
    Peru
    Mensajes
    197

    Blitz 3D

    Cuanto por aprender y tan poco tiempo para hacerlo.

    Gracias Estilo_sur y Juan Yang, sus codigos están faciiles de enternder, pero mejor hacerlo los boy leyendo con calma para matar cualquier duda mia

    Bueno para contitnuar otra página más añadida a la revista
    Miniaturas adjuntadas Miniaturas adjuntadas BlitzBasic 3D-dibujo.jpg  
    Archivos adjuntados Archivos adjuntados
    Última edición por Cibertronic; 04-06-2008 a las 18:46

    Gracias en especial a Ti, que vales muuuho mas que los 30 000
    www.cibertronic.hyperphp.com

  10. #160
    Miembro Nuevo
    Fecha de ingreso
    Nov 2007
    Ubicación
    Argentina
    Mensajes
    29

    Re: BlitzBasic 3D

    Siguiendo el aporte de rompecabezas les adjunto el auto con las ruedas puestas en su lugar y girando.

    Me tome el atrevimiento de quitarle las ruedas originales a la maya del auto.

    Saludos a todos.

    P.D. la próxima les paso como hacer que el auto siga la inclinación del terreno.
    Archivos adjuntados Archivos adjuntados

  11. #161
    Miembro Nuevo
    Fecha de ingreso
    Nov 2007
    Ubicación
    Argentina
    Mensajes
    29

    Re: BlitzBasic 3D

    Les envío el código para hacer que las ruedas sigan al terreno.
    No pretende ser un gran terreno solo es para probar el programa.

    Comentario para entenderlo mejor

    1----2
    I I
    I I
    I I
    3 --- 4

    Lo que hace la rutina es comparar la diferencia de las x,y,z entre las ruedas 2 y 4 (derecha) y las ruedas 1 y 3 (Izquierda) entonces inclina hacia un costado según ese resultado

    Luego en la segunda parte compara las ruedas 1 y 2 (adelante) y las 3 y 4 (atras) e inclina hacia adelante o atrás según el resultado.

    Recuerden que en la sentencia AlignToVector car,zx,zy,zz,1 pondremos en el último lugar, donde esta el número uno el eje hacia donde queremos que haga la alineación. (1 eje x, 2 eje y, 3 eje z)

    El resto es lo mismo que el anterior solo que un poco más prolijo.

    Saludos.
    Archivos adjuntados Archivos adjuntados

  12. #162
    A-team Avatar de Cibertronic
    Fecha de ingreso
    May 2008
    Ubicación
    Peru
    Mensajes
    197

    Talking Re: BlitzBasic 3D

    Sencillamente Formidable

    Gracias en especial a Ti, que vales muuuho mas que los 30 000
    www.cibertronic.hyperphp.com

  13. #163
    Miembro Nuevo
    Fecha de ingreso
    Nov 2007
    Ubicación
    Argentina
    Mensajes
    29

    Re: BlitzBasic 3D

    Quería comentarles que hay un error de código en el bucle:

    cnt=1
    For z#=1.5 To -2 Step -3.5
    For x#=-1.5 To 1.5 Step 3
    ResetEntity wheels[cnt]
    PositionEntity wheels[cnt],x,-.5,z
    cnt=cnt+1
    Next
    Next

    Deben quitar "ResetEntity wheels[cnt]" ya que al resetear las ruedas y reubicarlas en ocasiones las dejaba por debajo de la maya del terreno ocasionando que le vehículo quedará virtualmente metido en la maya.
    De esta dorma al no resetear no solo evita que traspase la maya sino que, hace un pequeño efecto amortiguador sobre el auto.

    Saludos.

  14. #164
    Miembro Nuevo
    Fecha de ingreso
    May 2008
    Mensajes
    9

    Re: BlitzBasic 3D

    Joes que coche más chulo te esta quedando estilo_sur. Bueno, he intentado mejorarlo girando las ruedas delanteras, pero no me ha gustado del todo como me ha quedado. Ahora me tengo que marchar a currar, pero esta noche intentaré mejorarlo un poquito mas.

    De todas formas os cuelgo el archivo por si alguien le da por mejorarlo y esta noche me encuentro la sorpresa.

    Hasta otro ratillo.
    Archivos adjuntados Archivos adjuntados

  15. #165
    My Member
    Fecha de ingreso
    Jan 2008
    Ubicación
    Pamplona
    Mensajes
    348

    Re: BlitzBasic 3D

    El def.bmp para que es?
    Cuando giras a la izquierda y sueltas la tecla de girar y mantienes la de acelerar el coche no vuelve a su posición original (solo girando a la izquierda).

    Al principio cuando gira y aceleras desde cero pega un tiron un tanto extraño.

    Ahora voy a echarle un vistazo más detallado al codigo.

Página 11 de 45 PrimerPrimer ... 78910111213141521 ... ÚltimoÚltimo

Temas similares

  1. Proyecto BlitzBasic: Conquest Online
    Por KiusteR en el foro Videojuegos
    Respuestas: 93
    Último mensaje: 16-12-2009, 09:40

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •