background preloader

Physics / Lights engines

Facebook Twitter

Custom 2D Physics Engine: The Basics. There are many reasons you might want to create a custom physics engine: first, learning and honing your skills in mathematics, physics and programming are great reasons to attempt such a project; second, a custom physics engine can tackle any sort of technical effect the creator has the skill to create.

Custom 2D Physics Engine: The Basics

In this article I would like to provide a solid introduction on how to create a custom physics engine entirely from scratch. Physics provides a wonderful means for allowing a player to immerse themselves within a game. It makes sense that a mastery of a physics engine would be a powerful asset for any programmer to have at their disposal. Optimizations and specializations can be made at any time due to a deep understanding of the inner workings of the physics engine. By the end of this tutorial the following topics will have been covered, in two dimensions: Simple collision detectionSimple manifold generationImpulse resolution Here's a quick demo: Collision normalPenetration depth Equation 1. 2D Dynamic Light Mapping.

Last year I made called “Light The Way” for Ludum Dare 20.

2D Dynamic Light Mapping

It featured a neat looking dynamic lighting system which I hacked together for the competition. It worked by firing 256 raycasts in a circle around the light, and using that to build a shadow mask. This is a very expensive way to do shadows, but I love the unique look it has. After several weeks of very hard work I’m excited to show the lighting system I’ve developed that takes it to the next level. When I started working this problem I found a few articles that got thinking. I set up a little test area with a single point light to demonstrate the technique. Shadow objects map The first step in the process is to set up a camera centered around the light and render the shadow casters to another texture. Extruded shadow map After we have the shadow objects rendered we can extrude the shadows by rendering the texture on top of itself and scaling it slightly each time.

Softened shadow map Final light map overlay. Game Physics Simulation. We have been making a lot of progress in higher quality physics simulation for robotics, games and visual effects.

Game Physics Simulation

To make our physics simulation easier to use, especially for roboticist and machine learning experts, we created Python bindings, see examples/pybullet. In addition, we added Virtual Reality support for HTC Vive and Oculus Rift using the openvr sdk. See attached youtube movie. Updated documentation will be added soon, as well as possible show-stopper bug-fixes, so the actual release tag may bump up to 2.85.x. Download the release from github here. The new Bullet Physics SDK 2.83 is available from github. Also, our proposal for a course on Bullet got accepted for the upcoming SIGGRAPH 2015 conference in Los Angeles. Tuesday, 11 August 3:45 pm - 5:15 pm, Los Angeles Convention Center, Room 404AB UPDATE: here are the slide decks: 3:45-4.15 pmIntroduction to rigid body pipeline, collision detection 4:15-4:45 pmAdvances in constraint solving, Featherstone Articulated Body Algorithm.

Box2D tutorials. Last edited: April 07 2014 Chinese version -> 中文 Introduction Box2D is the world's most ubiquitous 2D physics engine.

Box2D tutorials

It's light, robust, efficient and highly portable. It has been battle-proven in many applications on many platforms, and it's open-source and free. Check out the Box2D website at A physics engine simulates the physics of objects to give them believable real-life movement. Box2D is written in C++, but has been ported to many different languages by the user community. Game Physics. Integration Basics Integration is used to determine the motion of an object over time.

Game Physics

In this article I show how to correctly integrate the equations of motion using an RK4 integrator instead of starting off on the wrong foot with a stupid Euler integrator. Fix Your Timestep! Even an RK4 integrator is sensitive to the amount of time you step when integrating. Decouple your physics timestep from the display framerate so that your simulation behaves exactly the same way each time it is run. Physics in 3D Leap ahead from integrating single values to integrating the entire physics state for a cube in three dimensions.