Minimal Snippet

The image you see is the shape of the built-in model, not the minimal snippet.
Federgraph minmal vertex shader snippet

You guess what the shape will look like if you drop the minimal snippet.

I will provide a zip file for download, which contains some files to drop on the drop target, including some vertex shader snippets.

Phase 1) Play

You may want to start with adding a background image. Make the viewport transparent and load a background image behind it. How to do that will be subject to a blog post, it is quite easy. In the foreground you scale, rotate and translate one of the better-looking sample shapes, so that it will look as if it was part of the scene when the photo was taken.

First you find out how to rotate, scale and translate the mesh.

Then you try out the background image:

A minimum of useful tips:

Phase 2) Explore

To do work with the built-in model is also not difficult. You select one parameter at a time and change its value. It is key to know what parameters are available and how they are used to modify the mesh / shape or view. There are model parameters and view parameters.

Phase 3) Find a new, real use case

Using your own model is a little more involved, but if you study the built-in model as an example it will be greatly simplified.

I would like to hear from you if you have found a real use case for yourself.

A version 1.0 release note

The first internal version of the program was created in 2011 using Delphi XE2 (FMX).

The app in the Windows Store - published August 2017 - search for it - has been set to version 1. Make sure you test it out on your normal desktop computer which has a keyboard and a mouse. The mouse wheel works great on Windows. There is nothing better than a real mouse wheel on Windows. The app has been designed for it. It always worked well.

On my new Surface Pro, the one with m3 processor, the app is fast, it is fun to use. Touch screen in tablet mode is great. But the touchpad of the attached keyboard is no real replacement for the original mouse wheel. Keep that in mind. To make a judgement about how to control the app, you should use it as intended by the developer, on the real desktop.

A note about the Mac version, which I plan to publish later: The mouse wheel of the mouse attached to my Mac Mini does not work the same as the mouse works on Windows. I think this is a little bit of a problem. I tested the latest magic mouse. It is much better, but still different. It behaves more like a touchpad. It shows an animated behavior, very interesting. But what you don't get is the rasterized, snappy behavior like I take it for granted on Windows. I don't know if you like that better as a Mac user. Please try the app on Windows just to know what I am talking about.

So, for real 'work', use the desktop, Windows is good. The program has always been a Windows program. It is developed on a Windows destktop machine and tested there for much longer. For showing finished samples however, the touch screen devices are perfect.

Talking about using the app, and the importance of the mouse wheel, I also wanted to briefly say something about the size of the main app window. You should not run it full screen. You can, but then it must render a lot more of pixels or fragments. Also, don't resize the window too often, or minimize and restore it too often. Just leave it in background with the same size. The reason is that the render target buffer must be recreated when you resize. Yes, try it out, but then apply some sanity when using the app. And give me feedback on how it behaves on fast hardware with big screens. Make it full screen when you want to render the final image with as many pixels as possible. Then go back to the normal size for normal work.

While I am at it, the text in front of the mesh takes time to render. You will recognize that when you switch it off. It will be noticeable on a machine which is not the fastest of all.

Always valid

Once everything about the app has been explained you cannot discover it anymore. The most important aspect of the application is that it enables you to experiment! Whether you experiment with the model or the application itself, you need to experiment. If you cannot experiment efficiently, learn it by using the app.

If only the fun part of the thing catches on, Federgraph will be ok.

But what is it

Think about a static field in 3D space, a vector field or scalar field. The length of a vector is a scalar, the directional cosine of the vector direction is also a scalar. For every location in space there is a scalar value, a floating-point value. We render an image based on the floating-point values.

You have seen cubes with lots of little lines to show the distribution of the length and direction of a vector. Federgraph takes a different approach to visualize the vector field. You slice the field. Take a plane and cut through space with the plane. Any plane will do. Now you can show the floating-point values over the plane, like you can show floating-point values over a line.

The app is a simulation of a physical system which shows values over an area within the plane z = 0. You can always rotate and translate the whole system so that the sensor plane coincides with plane z = 0.

I worked with linear mechanical springs. Spring in English = Feder in German. Systems of springs are difficult to realize in a physical setup. It makes sense to run a simulation.

Imagine that you move a sensor through a field. The equipment will likely move the sensor within a plane: along a line, circle or specific path. It takes a long time to even scan a single slice. This also calls for a simulation.

You could work with nonlinear springs, with magnetic forces between bodies, with electrically charged discrete items or similar systems. I only used linear springs and spent my time developing the program itself.

When you experiment with a model or formula you are not computing solutions for a set of equations, instead you just plot the values to get a wider picture of how the system behaves when you change a parameter. You change a parameter and see the image change in real time. You cannot see everything at once, but you see more if you plot over a plane instead of plotting over a path. When I first tried to see something - in 1995, the whole process was tedious. I saw enough to remember it, I made screenshots, but not enough to understand it. The interpretation of what you see is a different topic, I will care only about the technical details of the visualization itself:

What is needed is a mix of execution speed, detail (the number of vertices in the mesh), and a convenient way to select a parameter and then change its value. The keyboard seems to be the best way to select a parameter. The mouse wheel seems to be the best way to change a parameter.