Página 11 de 45 PrimerPrimer ... 91011121321 ... ÚltimoÚltimo
Resultados 151 al 165 de 669

Tema: Blitz basic 3d

  1. #151
    Fecha de ingreso
    May 2008
    Mensajes
    197

    Unhappy Blitzbasic 3d

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

    A ver si ustedes pueden comentarlo y explicar que sucede en esa parte del código.
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: Dibujo.JPG 
Visitas: 117 
Tamaño: 26.8 KB 
ID: 74654  
    Archivos adjuntados Archivos adjuntados

  2. #152
    Fecha de ingreso
    Jan 2008
    Mensajes
    347

    Blitzbasic 3d

    Yo ni idea a ver si se pasa juanyang y nos explica, la verdad es que la cámara se mueve fina fina, yo creo que realmente 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
    Fecha de ingreso
    May 2008
    Mensajes
    9

    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 programas 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 atrás.
    1º discrepar sobre las faltas ortográficas y, aunque si que creo que hay que poner mucha atención en cómo se escriben las cosas (mucho mejor si se hace bien) a mí 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 matemáticos, informáticos 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 está 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) tmoveentity pivote,0,25,-30.
    
    Suelo=loadmesh (suelo, b3d) t.
    
    Período=33.
    
    Tiempo = millisecs()-período.
    
    Sedrnd (millisecs()).
    
    Setbuffer backbuffer().
    While not keyhit(1) trepeat tiempotranscurrido = millisecs() - Tiempo tuntil tiempotranscurrido tticks = tiempotranscurrido/período tcaptura# = float(tiempotranscurrido mod período) / float(período) tfor k=1 todo ticks tiempo = tiempo+período if que = ticks then captureworld.
    
    Movimientos_personaje ().
    
    Movimientos_camara () updateworld tnext trenderworld(captura#) tflip.
    Wend.
    
    End.
    
    Function movimientos_personaje () tif keydown(203) then Turn Entity personaje,0,1,0 tif keydown(205) then Turn Entity personaje,0,-1,0 tif keydown(200)=true then z#=0.5 tif keydown(20 =true then z#=-0.5 moveentity personaje,0,0, z#.
    
    End function.
    
    Function movimientos_camara () tdx#=entityx(pivote,true)-entityx(cámara) tdy#=entityy(pivote,true)-entityy(cámara) tdz#=entityz(pivote,true)-entityz(cámara) translateentity cámara, dx# *.015, dy# *.015, dz# *.015 Point Entity cámara,personaje.
    
    End function.
    3º una pequeña explicacion.

    Para que la cámara vaya lentamente detrás del personaje, el truco está en la instrucción translatentity cámara. Lo único que estás 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 está, 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 Point Entity. 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 I 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 ordenador pues lo has controlado en esta parte de código:
    Repeat tiempotranscurrido = millisecs() - Tiempo tuntil tiempotranscurrido tticks = tiempotranscurrido/período tcaptura# = float(tiempotranscurrido mod período) / float(período) tfor k=1 todo 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, verías que en ese punto se relentiza. Esto sucede porque pasar de vacío 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 vacío 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 sí 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
    Fecha de ingreso
    Jan 2008
    Mensajes
    347

    Blitzbasic 3d

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

  5. #155
    Fecha de ingreso
    May 2008
    Mensajes
    9

    Blitzbasic 3d

    Yuhu, uno que lo ha entendido, a ver cuántos más. Pero rompecabezas, no es a tu gusto, es una manera de controlar que tú 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 qué nos vale una bala que disparamos y no ha colisionado con nada? ¿esa bala, una vez que a alcanzado una determinada distancia y ya no la vemos se sigue renderizando, porque no la hemos eliminado? ¿no sería 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 está muy lejos de dónde fue disparada)?
    Todo eso son los types (Blitz basic lo hereda del c) o las structures (que se llamarían 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. Sé que lo entendéis.

    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 00:28

  6. #156
    Fecha de ingreso
    Nov 2007
    Mensajes
    29

    Blitzbasic 3d

    Perdón 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
    Fecha de ingreso
    May 2008
    Mensajes
    197

    Smile Blitzbasic 3d

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

    Sinceramente aún estoy recuperándome de tan dulce empapada de conocimiento, mis más grandes muestras de admiración y respeto para todos ustedes, en especial a juanyang y estilo_sur.

    Si bien aún estoy en eso de entender al 100% el código, 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 ilusión 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 usted, lo pueda hacer.

    Nuevamtne gracias maestros, yo de grande quiero ser como ustedes.
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: camina.JPG 
Visitas: 130 
Tamaño: 23.8 KB 
ID: 74810  
    Archivos adjuntados Archivos adjuntados
    Última edición por Cibertronic; 04-06-2008 a las 07:53

  8. #158
    Fecha de ingreso
    Jan 2008
    Mensajes
    347

    Blitzbasic 3d

    Muy bueno estilo sur está genial tu adaptación 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
    Fecha de ingreso
    May 2008
    Mensajes
    197

    Blitz 3d

    Cuanto por aprender y tan poco tiempo para hacerlo. Gracias estilo_sur y Juan yang, sus códigos están fáciles de enternder, pero mejor hacerlos boy leyendo con calma para matar cualquier duda mía.

    Bueno para contitnuar otra página más añadida a la revista.
    Miniaturas adjuntas Miniaturas adjuntas Clic en la imagen para ver su versión completa. 

Nombre: Dibujo.JPG 
Visitas: 425 
Tamaño: 36.7 KB 
ID: 74848  
    Archivos adjuntados Archivos adjuntados
    Última edición por Cibertronic; 04-06-2008 a las 17:46

  10. #160
    Fecha de ingreso
    Nov 2007
    Mensajes
    29

    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.

    Posdata: la próxima les paso cómo hacer que el auto siga la inclinación del terreno.
    Archivos adjuntados Archivos adjuntados

  11. #161
    Fecha de ingreso
    Nov 2007
    Mensajes
    29

    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 (atrás) 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, dónde está 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
    Fecha de ingreso
    May 2008
    Mensajes
    197

    Talking Blitzbasic 3d

    Sencillamente formidable.

  13. #163
    Fecha de ingreso
    Nov 2007
    Mensajes
    29

    Blitzbasic 3d

    Quería comentarles que hay un error de código en el bucle: Cnt=1 tfor z#=1.5 todo -2 step -3.5 tfor x#=-1.5 todo 1.5 step 3 resetentity whels[cnt] positionentity whels[cnt],x,-.5, z cnt=cnt+1 tnext tnext t.

    Deben quitar resetentity whels[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
    Fecha de ingreso
    May 2008
    Mensajes
    9

    Blitzbasic 3d

    Joes que coche más chulo te está quedando estilo_sur. Bueno, he intentado mejorarlo girando las ruedas delanteras, pero no me ha gustado del todo cómo me ha quedado. Ahora me tengo que marchar a trabajar, pero esta noche intentaré mejorarlo un poco más.

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

    Hasta otro ratio.
    Archivos adjuntados Archivos adjuntados

  15. #165
    Fecha de ingreso
    Jan 2008
    Mensajes
    347

    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 tirón un tanto extraño.

    Ahora voy a echarle un vistazo más detallado al código.

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

Temas similares

  1. Blitz basic colisiones
    Por aprendiz en el foro Videojuegos
    Respuestas: 32
    : 09-02-2018, 22:25
  2. Tutores para crear videojuejos con Blitz basic 3d
    Por Cibertronic en el foro Videojuegos
    Respuestas: 0
    : 25-09-2014, 05:20
  3. Exportador de Blender a Blitz basic 3d
    Por Sadyk en el foro Videojuegos
    Respuestas: 1
    : 14-03-2009, 23:10
  4. Problema con collisions en Blitz basic
    Por Alexs1888 en el foro Videojuegos
    Respuestas: 4
    : 23-08-2008, 20:40
  5. Plugin de 3ds Max 8 a Blitz 3d
    Por gersin en el foro Plugins
    Respuestas: 3
    : 25-01-2008, 13:21

Etiquetas para este tema