Mostrando entradas con la etiqueta GLScene. Mostrar todas las entradas
Mostrando entradas con la etiqueta GLScene. Mostrar todas las entradas

Simulación del movimiento de los electrones en un campo electrico


Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico.

Como muestra la imagen se ven los electrones saliendo en tiempo real de la placa de color gris hacia la placa de color rojo acelerándose cuando atraviesan el campo eléctrico.

El escenario se puede girar o rotar en todas direcciones para apreciar mejor el movimiento.


Autor:
Email: systemhalt@nm.ru
www.systemhalt.nm.ru


Codigo fuente



Delphi 3d engine













Os presento a continuación CAST II, un game engine open source gratuito para Delphi y Free Pascal.



Características:

Editor wysiwyg.



Compatibilidad - Bajos requerimientos de sistema, utilizando todo tipo de hardware.



Cross platform, multi API - en la versión actual utiliza DirectX 8.1 para hacer el render, pero el motor gráfico está preparado para utilizar también OpenGL o DX 9. 



Performance - El motor gráfico está diseñado para conseguir el máximo rendimiento.



Para hacer un juego con CAST II se tiene que escribir alguna clase que implemente la lógica del juego, crear artwork y construir niveles en el editor.



Incluye varios subsistemas:

-Editor de escenas

-Mensajería

-Rendering

-Audio

-Física (detector de colisiones y motor físico de terceras partes)

-Gestión de inputs

-Timer

-Gestión de red

-Gui



Tiene dos tipos de licencia:

Mozilla Public License  http://www.mozilla.org/MPL/MPL-1.1.html

o GNU Lesser General Public License 2.1  http://www.opensource.org/licenses/lgpl-license.php



Página del fabricante



Página de descarga del programa







EJEMPLOS



Vegetación
















Paisajes









Editor de partículas









Escena de un lago





 Editor CAST II

 






















Editor de paisajes

 





































































































Juego FPS (First Person Shooter)

 


Este es un juego desarrollado con Firemonkey del tipo FPS (First Person Shooter) cuyo objetivo es destruir unas esferas, que según el autor representan al COVID19

El autor del juego es Grégory Bersegeay (MVP Embarcadero Francia), que es un gran especialista en el desarrollo de videojuegos para Delphi, en su web tienen una buena muestra de ello.

Para compilar y ejecutar el juego antes hay que instalar la suite de componentes GBE3D, para ello la descargamos de github,
Abrimos Delphi y desde el menú File - Open abrimos el archivo
GBE3D.dproj y pulsamos con el botón derecho del ratón sobre GBE3D.bpl y
activamos secuencialmente el menú "Compile", después "Build" y por
último "Install"


Si la instalación ha sido exitosa en la paleta de componentes vermos unos cuantos nuevos:
TGBEHeightmap, TGBEGrass, TGBECubemap, TGBEViewport, TGBEClouds, etc...
 
Luego hay que añadir la ruta donde esté la librería GBE3D al entorno Delphi.
 
Desde
el menú TOOLS - OPTIONS - Delphi - Library y según el entorno donde
queramos ejecutar el programa (Win32, Win64, Android, IOS) le decimos
que añada una nueva ruta:


Este proyecto se puede compilar con la edición gratuita de Delphi.

Incorpora pantallas de ayuda y hace una estadística de los mejores jugadores:






Página de descarga del juego:


Para descargarlo pulsar el botón CODE y en el menú emergente seleccionar "Download.zip"

 

Página personal de Grégory Bersegeay








 

 

Mundos virtuales en 3D


Les presento un proyecto llamado FMXIsland realizado por Grégory Bersegeay (MVP Embarcadero Delphi Francia) que recrea un mundo virtual en 3D realizado con Firemonkey.

Grégory es todo un especialista en el desarrollo de videojuegos y tiene una gran cantidad de ejemplos y demos en su github

Incorpora un mapa que indica el punto en el que te encuentras, lo que es muy útil para orientarte dentro del mundo 3D. Me ha llamado la atención la simulación del movimiento de las olas del mar, que lo hace marcando la propiedad "ActiveWave" del componente tGBEPlaneExtended, también la gestión de colisiones con los objetos del mapa que está correctamente implementada.

Grégory ha realizado una suite de componentes llamada GBE3D, que deriva de los componentes originales de FMX que incorpora Delphi y que permite hacer una abstracción de la complejidad que siempre conlleva realizar el diseño de los paisajes y de los objetos que lo componen.

La suite de componentes GBE3D es necesario instalarla previamente para que se pueda compilar el programa, para ello la descargamos de github, Abrimos Delphi y desde el menú File - Open abrimos el archivo GBE3D.dproj y pulsamos con el botón derecho del ratón sobre GBE3D.bpl y activamos secuencialmente el menú "Compile", después "Build" y por último "Install"


Si la instalación ha sido exitosa en la paleta de componentes vermos unos cuantos nuevos:
TGBEHeightmap, TGBEGrass, TGBECubemap, TGBEViewport, TGBEClouds, etc...
 
Luego hay que añadir la ruta donde esté la librería GBE3D al entorno Delphi.
 
Desde el menú TOOLS - OPTIONS - Delphi - Library y según el entorno donde queramos ejecutar el programa (Win32, Win64, Android, IOS) le decimos que añada una nueva ruta:


Este proyecto se puede compilar con la edición gratuita de Delphi.

En las pruebas que he realizado el movimiento de la imagen es fluido y responde perfectamente a las pulsaciones del teclado.

- Flecha arriba: aumenta la velocidad

- Flecha abajo: disminuye la velocidad

- Escape: detiene el movimiento

- Flecha derecha: rota la imagen hacia la derecha

- Flecha izquierda: rota la imagen hacia la izquierda

 El proyecto muestra:

- cómo usar un mapa de alturas;
- ciclo día / noche;
- el usuario puede moverse y orientarse libremente;
- simulación de nubes;
- tomar captura de pantalla de TViewport3D;
- usar un mapa;
- ciudades iluminadas por la noche;
- detección de colisiones con obstáculos;
- sigue las asperezas del suelo;
- utilizar animaciones de Firemonkey;
- olas en el mar.

El juego no usa ningún módulo de Unity, está hecho desde cero íntegramente con Delphi. 

Estas son algunas de las pantallas del mundo en 3D


Página de github de FMXIsland

Para descargarlo pulsar el botón CODE y en el menú emergente seleccionar "Download.zip"

 

Página personal de Grégory Bersegeay

 


 


 


How to take a snapshot from the GLScene viewer

Sample code using GLSceneViewer1.Buffer.CreateSnapShot

procedure TForm1.TakeSnapShot;
var bm : TBitmap;
bmp32 : TGLBitmap32;
begin
bmp32:=GLSceneViewer1.Buffer.CreateSnapShot;
try
bm:=bmp32.Create32BitsBitmap;
try
SavePictureDialog1.DefaultExt := GraphicExtension(TBitmap);
SavePictureDialog1.Filter := GraphicFilter(TBitmap);
if SavePictureDialog1.Execute then
bm.SaveToFile(SavePictureDialog1.FileName);
finally
bm.Free;
end;
finally
bmp32.Free;
end;
end;

Theres also a demo in your GLScene folder...\Demos\rendering\tobitmap

Free textures

Check out this site for free textures:http://www.3dlinks.com/links.cfm?categoryid=10&subcategoryid=94



Turbosquid is a commercial site that sells textures but they also host free ones. You need to open a free account here.http://www.turbosquid.com/

Where to get free 3D models

For hundreds of free static models (eg an apple) http://www.3dcafe.com/



NTU 3D Model Database has a massive database of wavefront free models:http://3d.csie.ntu.edu.tw/~dynamic/database/index.html



Turbosquid is a commercial site that sells 3D models but they also host free ones. You need to open a free account here.http://www.turbosquid.com/



Also from the NTU 3D Model Database but with pictures and also only has the first 1000 models from the database:http://www.skinhat.com/freemodels



For actors (eg Quake, Half life models) - Currently down :http://www.planetquake.com/polycount/




LIBROS:





Cutting a hole in terrain

A question that pops up occasionally is 'How to do I cut a transparent hole into my terrain?'. The answer is to apply a superblack transparent texture to your terrain which has pure black where you want the hole. For your terrain texture set blendingmode to bmTransparent and set imageAlpha to tiaSuperblacktransparent. Remember jpegs arent lossless which means that where your image may be 100% black, when it saves it it may actually be saved as 99% black. When you view your terrain you could see an ugly black outline around the terrain hole. The solution is to use bmp, tga or jp2 files which are lossless.

How to get FPS in full screen

Most of the coders think that FPS procedures like FramesPerSecond and ResetPerformanceCounter are only the properties of TGLSceneViewer but actually they are the part of TGLSceneViewer.Buffer (TGLSceneBuffer class). As long as TGLFullScreenViewer has this class also, you can access FPS with the following code:

TGLFullScreenViewer.Buffer.FramesPerSecond
TGLFullScreenViewer.Buffer.ResetPerformanceMonitor

How to control the Camera without gimbal errors using Pitch and Turn





In the tutorial section there is a tutorial about using Pitch, Roll and turn on GLScene objects. This tutorial explains the problems with gimbal lock which occurs when you change more that one of the three angle axis (Turn, Pitch and roll).

A simple trick is to make use of dummy cubes to construct a tripot. We start with the base cube. This TDummyCube is used to position the camera in the scene. The base cube can also be used to turn the camera (Rotate about the green Y axis).
Now we add a child TDummyCube to the base cube. Lets call this the pitch cube. This Pitch cube is exclusivly used to only pitch the camera up and down. Finally you add the camera which will be a child to the Pitch cube.






Here the geen cube is the basecube to which position instructions and turn instructions are given. The Red cube is the pitch cube which is used only to change the pitch angle. The arrow in the image represents the camera pointing direction which is added for visualisation purposes.


Tip Note the light attached to the camera. This way it is always where you want it and pointing where the camera points. Make sure to use a position offset for the light to improve the surface shading contrast

To move the camera, turn it towards the subject and pitch it up you code this:

BaseCube.Position.X := BaseCube.Position.X + 1; BaseCube.TurnAngle := BaseCube.TurnAngle + 1; PitchCube.PitchAngle := PitchCube.PitchAngle + 1;

Author Eric Grange

Using multiple viewers

To use multiple viewers in the same application at the same time can be easily achieved. You just have to put your TGLCadencer to the cmManual mode and to use a timer to call the Progress() method of the cadencer in the timer event.

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...