Gracias Gracias:  1
Resultados 1 al 7 de 7

Tema: Sombras en Blitz3D

  1. #1
    Senior Member Avatar de Yue
    Fecha de ingreso
    May 2008
    Ubicación
    Bogotá
    Mensajes
    634

    Sombras en Blitz3D

    Uno de los tantos temas debatidos con Blitz3D es que carece de un sistema de sombras que sea fácil de implementar por parte del usuario Novel. Si bien es cierto que otros sistemas de desarrollo traen un botón o permiten el uso de funciones prefabricadas para alcanzar este objetivo, en Blitz3D es imposible hacer esto tratando de evadir el hecho que el sistema debe ser implementado desde cero mediante escritura de código.

    Claro esta que puede adquirir lib externas, pero la verdad lo que se trata es de que aprendamos a desarrollarlas nosotros mismos.

    Existen dos tipos de sombras, unas llamadas Volumetricas y otras llamadas cartográficas, yo por ahora explicare como hacer las cartográficas, iniciativa que tome debido a varios usuarios que me escribieron respecto a la duda.

    En teoría los elementos que intervienen en una sombra cartográfica son dos cámaras, una que visualiza el mundo desde la perspectiva del jugador y otra que hace de foco de Luz, la que hace de foco, el contenido que visualiza lo dibuja en buffer de la textura usada para proyectar esa sombra.

    Código:
    Graphics3D 800,600,32,0
    SetBuffer BackBuffer()
    Global Xscale#=1*(.8/3)
    
    Global Sombra = CreateTexture(256,256,16+32)
    ;===============================
    AmbientLight 64,64,64
    Global Cámara = CreateCamera()
    Global Terreno = CreateCube()
    Global Sol = CreateLight()
    
    PositionEntity Cámara, 0,6,-12
    ScaleEntity Terreno, 50,1,50
    RotateEntity Sol, 90,0,0
    
    Global Cubo = CreateCube()
    PositionEntity Cubo,0,4,0
    EntityColor Cubo,255,0,0
    
    ;==================================
    Global S_Camara = CreateCamera()
    CameraViewport S_Camara,0,0,256,256
    CameraProjMode S_Camara,2
    CameraZoom S_Camara,.3
    
    PositionEntity S_Camara,0,200,0
    HideEntity S_Camara
    
    EntityTexture Terreno,Sombra
    Repeat
    	TurnEntity Cubo,1,.1,0
    	PointEntity S_Camara,Cubo
    	Actualizar()
    	RenderWorld 
    	
    	
    	Flip
    	
    	
    Until KeyHit(1)
    End 
    
    Function Actualizar()
    	
    	SetBuffer TextureBuffer( Sombra) 
    	Color 255,255,255
    	Rect 0,0,TextureWidth(Sombra)+1,TextureHeight(Sombra)+1
    	SetBuffer BackBuffer()
    	
    	ShowEntity S_Camara
    	HideEntity Cámara
    	
    	EntityColor Cubo,64,64,64
    	EntityFX Cubo,1+8
    	
    	
    	
    	RenderWorld()
    	CopyRect 0,0,256,256,0,0,BackBuffer(),TextureBuffer(Sombra)
    	EntityColor Cubo,255,0,0
    	EntityFX Cubo,0
    	
    	
    	For s=1 To CountSurfaces(Terreno) 
    		surf=GetSurface(Terreno,s) 
    		For v=0 To CountVertices(surf)-1 
    			TFormPoint VertexX(surf,v),VertexY(surf,v),VertexZ(surf,v),Terreno,S_Camara
    			VertexTexCoords surf,v,(TFormedX()/Xscale#)/32+0.5,1-((TFormedY()/Xscale#)/32+.5) 
    		Next 
    	Next 
    	
    	
    	
    	
    	
    	
    	HideEntity S_Camara
    	ShowEntity Cámara
    	
    	
    	
    	
    End Function


    Espero esto sea de utilidad.

    Un saludo.
    Última edición por Yue; 28-01-2011 a las 02:53
    "No son ni estrellas ni ídolos, son solo gente común que quiere hacer historia"

  2. #2
    Expulsado
    Fecha de ingreso
    Dec 2010
    Ubicación
    En matrix
    Mensajes
    1,681

    Re: Sombras en Blitz3D

    jeje, como siempre blizt3d con otro de sus codigos que me acen romper la cabeza. Pero alabados sean, gracia a ellos aprendo mucho.Gracias

  3. #3
    Miembro Avatar de Jhonatan00_00
    Fecha de ingreso
    Oct 2016
    Mensajes
    98

    Re: Sombras en Blitz3D

    Buenas tardes, acabo de leer el código y lo encuentro muy interesante, pero poco práctico porque solo sirve para casos en los que no haya muchos focos de luz, ¿no hay forma de mostrar sombras de manera más sencilla?

    Imaginad un mundo completo, con sus casas, fuego, farolas, la luz que emite la magia de los ataques de los enemigos, etc, etc... ¿En serio tenemos que crear una cámara por cada luz que haya para que proyecte una sombra y programarla?. Me veo escribiendo el código en plan:

    ShowEntity S2058473_Camara
    HideEntity Cámara...

    Imposible.

  4. #4
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Re: Sombras en Blitz3D

    Imaginad un mundo completo, con sus casas, fuego, farolas, la luz que emite la magia de los ataques de los enemigos, etc, etc... ¿En serio tenemos que crear una cámara por cada luz que haya para que proyecte una sombra y programarla?
    He estado buscando soluciones a lo que necesitas, y no he encontrado nada medianamente cómodo. Ah, sí, espera. He encontrado una cosa.

    No usar un motor de hace 10 años
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  5. #5
    Miembro Avatar de Jhonatan00_00
    Fecha de ingreso
    Oct 2016
    Mensajes
    98

    Re: Sombras en Blitz3D

    Buenos días.

    Para el tema de las luces si es cierto que es bastante complicado, al igual que para algunas otras cosillas como las colisiones de objetos MD2, que no detectan los polígonos sino una caja o cilindro donde va metido el objeto y así las colisiones no son tan precisas, pero bueno, siempre puedes exportar tu objeto en 3DS (con sus limitaciones porque tampoco puedes animar una malla con huesos en ese formato) y asunto solucionado.

    Ayer estuve aprendiendo cosillas sobre Unity y no creas que no, que al final un día de estos me termino pasando a él. Lo que me echa para atrás es que usa 3 o 4 lenguajes de programación diferentes y debe de ser complicado aprender a programar desde cero, a parte que me parece una perdida de tiempo cuando ya conoces más o menos el Basic.

    Un saludo.

  6. #6
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Re: Sombras en Blitz3D

    Conocer lenguajes nuevos no es una pérdida de tiempo, hombre, porque no sustituyes lo que ya sabes, sino que lo amplías. Además, esos nuevos lenguajes no sólo te van a permitir hacer cosas nuevas que BASIC no, sino que además lo podrás hacer de manera mucho más rápida. Necesitas salir de tu zona de confort, porque aunque creas que eso alargará tu tiempo de desarrollo, será todo lo contrario: si te constriñes a tecnología anticuada, te vas a encontrar con un montón de callejones sin salida y vas a perder mucho tiempo para salir de ahí.

    Todo esto te lo digo para que te sea más fácil seguir con tu proyecto, ¿eh? Que yo no me llevo comisión de nada. Seguramente, para cualquier cosa que quieras hacer en tu juego, haya alguien que ya lo haya hecho, y además es probable que haya compartido ese código. Con el tiempo aprenderás a descifrar lo que hacen esas líneas, y con un poco más, a alterarlas para que hagan lo que tú quieras, y con más tiempo, a programar tú mismo lo que necesites.
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  7. #7
    Miembro Avatar de Jhonatan00_00
    Fecha de ingreso
    Oct 2016
    Mensajes
    98

    Re: Sombras en Blitz3D

    Buenos días, tienes toda la razón, al final me has convencido y he ido a instalar Unity, el problema está en que estoy usando un Netbook Acer Aspire One 532h-2Bb, con 1gb de RAM, una CPU a 1.66ghz y Windows XP y unity no es compatible con Windows XP, además de que pide demasiados requisitos.
    Con Blitz no ocurre eso. Puedes desarrollar tus videojuegos en cualquier PC, incluso en Netbook, en cualquier sistema operativo y consume muy pocos recursos, casi ninguno, por lo que puedes aprovechar toda la potencia de tu PC o Netbook para el videojuego.

    Volviendo al tema de las sombras, estoy creando luces en Blitz3D y aunque no estoy usando sombras aun, deberian de verse de alguna manera, me explico, aunque no se vea la sombra en sí, los objetos deberían de impedir que la luz los atravesase, de tal manera que el objeto que está detrás de otro se viese que está "a la sombra", porque tiene a otro delante que impide que la luz le de, pero no lo hace, los atraviesa y da a todos los objetos por igual, ¿por que?.

    El caso es que he creado una luz en 3DSMax para ver si me hacia lo mismo y si hace lo mismo, ¿pero por qué?, ¿sabeis como puedo solucionarlo?.

    Un saludo.

Temas similares

  1. Blitz3d
    Por maccafio en el foro Videojuegos
    Respuestas: 0
    Último mensaje: 04-08-2013, 18:27
  2. Blitz3d
    Por maccafio en el foro Videojuegos
    Respuestas: 3
    Último mensaje: 18-06-2011, 08:22
  3. Blitz3D
    Por pab0 en el foro Videojuegos
    Respuestas: 1
    Último mensaje: 07-06-2010, 04:53
  4. Blitz3d
    Por depredador en el foro Quien eres tu - Aqui puedes presentarte
    Respuestas: 1
    Último mensaje: 28-03-2009, 01:44
  5. Duda usando sombras con mapa de sombras
    Por J-J en el foro Render, Iluminación y Cámaras
    Respuestas: 3
    Último mensaje: 05-03-2003, 21:12

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.
  •