Browsed by
Category: Programming

Balancing a bouncing ball

Balancing a bouncing ball

Electron Dust shows off a nifty machine that can bounce a ping pong ball, while keeping it balanced and centered on its moving platform. It uses combination of open-source image processing software and Arduino-controlled stepper motors to work its magic.

It is an arduino project with 120 FPS OpenCV image processing and smooth stepper motor moves. The machine calculates the ball’s 3D position from the image processing data and uses this information to control the orange ping pong ball.

Uses an e-con Systems superb See3CAM_CU135 camera. Find out more about the camera here: https://www.e-consystems.com/4k-usb-c…

This machine requires the following things to work:

  • 1x Teensy 4.0 Microcontroller
  • 4x StepperOnline DM442S stepper motor drivers
  • 4x Nema 17 Stepper Motors with 5:1 planetary gearbox
  • 1x 48V 8A power supply
  • 1x e-con Systems See3CAM_CU135 camera
  • 1x Windows Computer with OpenCV installed on it –

All the parts defined the Fusion360 project – Custom Windows Application (made with Unity). Read more here: https://electrondust.com/2020/03/02/t… Complete code and Fusion360 data on Github: https://github.com/T-Kuhn/HighPrecisi…

Nightmare fuel

Nightmare fuel

Image result for faith game

While a relatively short game, the indie horror game FAITH has gotten great accolades. It’s available for free on itch.io if you want to give it a try.

One of the more frightening elements of the game are the voices of the encountered creatures. The voices for at least one of the creepy characters was generated using a text-to-speech program called SAM (Software Automatic Mouth) written in 1982 for the Commodore 64.

The C source code is available on github, or you can give some of your own phrases a try here via a clever web interface.

Unreal Engine resource viewer

Unreal Engine resource viewer

This is a really cool tool (UE Viewer/uModel). I have used this several times to explore and export models and resources from various games. You just need to know what version of Unreal the game was developed with.

For example, I extracted a model from Dead by Daylight by pointing this tool at the pak file directory (…\Steam\steamapps\common\Dead by Daylight\DeadByDaylight\Content\Paks) and indicated the game was ‘Unreal Engine 4 version 4.21’.

C# App hangs when BitmapDecoder.CreateAsync is called

C# App hangs when BitmapDecoder.CreateAsync is called

Calling ASync functions from UI event handling routines/the main UI thread in C# turns out to require some basic knowledge to avoid getting into deadlocks. I sort of jumped in without doing much learning, so here were some of my learning resources as I made the inevitable mistakes:

https://stackoverflow.com/questions/12507749/winrt-app-hangs-when-bitmapdecoder-createasyncstream-is-called

https://social.msdn.microsoft.com/Forums/en-US/8bed034e-a8f6-4322-a801-79f014815dd9/bitmapencodercreateasync-never-returns?forum=winappswithcsharp

https://stackoverflow.com/questions/12235085/winrt-loading-static-data-with-getfilefromapplicationuriasync

Debugging tips:

https://medium.com/bynder-tech/c-why-you-should-use-configureawait-false-in-your-library-code-d7837dce3d7f

https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task-1.result?view=netframework-4.8

C# and Universal Windows App file handling:

https://docs.microsoft.com/en-us/windows/uwp/get-started/fileio-learning-track

https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

The details of fighting game logic

The details of fighting game logic

Making a button-mashing fighting game like Street Fighter has some surprisingly sophisticated logic when it comes to frame-perfect animation hits and combos. Strange Wire does an awesome job describing the difficulties and some ways to solve them.

What are those difficulties? Problems like checking hit and hurt boxes at the right parts of animation frames. Attaching events at the right parts of the animations can be tricky – especially if animators are still tweaking them. And the ever-present issue of keep the code clean.

Definitely worth a read whether you’re doing 2D to 3D fighters.

https://strangewire.blogspot.com/2019/09/frame-specific-attacks-in-unity.html

This is how graphics used to be done kids

This is how graphics used to be done kids

Back in the day when I was learning, there wasn’t much (or any) hardware acceleration for graphics. Programming graphics back then, on 8088/286/386 processors was much like this. Bisqwit gives it a shot.

In this tool-assisted education video I create a simple FPS style walking and jumping scene for OpenGL, with DJGPP, in DOS. In a 256 colors 320×200 VGA mode. This is my first OpenGL exercise. Apologies about some little mistakes in the program (such as reloading the textures on every frame). I noticed them when this video was already late in production, and it would take several days before the new version would be available if I were to fix them, and I’m itching to get this video out and into making the next video already, and none of the mistakes actually prevent the content being understood, so I’ll leave them be. Most people don’t even notice. Twitter: https://twitter.com/RealBisqwit Patreon: https://patreon.com/Bisqwit (alternatives at https://iki.fi/bisqwit/donate.html) Twitch: https://twitch.tv/RealBisqwit Homepage: https://iki.fi/bisqwit/ I wrote a FAQ after this video was picked up on Reddit the first time in 2012. Here it is: https://bisqwit.iki.fi/jutut/kuvat/pr… Source code and prebuilt lightmaps: (Compiles and runs on Linux): https://bisqwit.iki.fi/jutut/kuvat/pr… (includes also a superior ellipsoid-based collision testing, and a buggy WIP for portal rendering: I’m not good with the math.)

Google hand tracking now open source

Google hand tracking now open source

Google has made its hand detection and tracking tech open-source, giving developers the opportunity to poke around in the tech’s code and see what makes it tick.

“We hope that providing this hand perception functionality to the wider research and development community will result in an emergence of creative use cases, stimulating new applications and new research avenues,” reads a blog post from the team.

That post over on the Google AI Blog dives into exactly how the tech works, and devs interested in getting a closer look at it can find the project over on Google’s Github repository.

MacOS 10.14 Mojave in VMWare

MacOS 10.14 Mojave in VMWare

Developing a iOS app used to require buying a Macbook or Mac mini. With VMWare, it is no longer necessary. I used VMWare Workstation 15.0 Pro and was able to develop an app and debug it on real iPad/iPhone hardware. Setup instructions are here:
https://techsviewer.com/install-macos-mojave-vmware-windows/

Here’s the latest VMWare Mojave 10.14.4, 18E226 (March 25, 2019) image:

Further tips after the above setup

Eulerian Motion Magnification

Eulerian Motion Magnification

Back in the ‘early’ days (2012) of video processing, before we had AI algorithms, we often just pursued straight video processing techniques to tease out interesting information.

Enter MIT’s work on Eulerian Video Magnification. The underlying concept is to take small per-pixel differences from frame to frame, then magnify the changes, to detect things not ordinarily visible to the human eye.

One of the most powerful effects is the ability to accurately detect the pulse of someone, or the vibration of objects by sound – with just normal video footage. Check it out in their original demonstration video below:

In 2014 they did a Ted talk that shows some further interesting applications – including re-generating the sound going on in a room from the vibrations of the objects in it.

So, since 2014, you can even recover sound from a discarded bag of chips behind soundproof glass.