Posts

Hand Tracking with MS Research and Kinect at Future Decoded 2015

Hand Tracking with MS Research and Kinect at Future Decoded 2015 A bit of a departure from RoomBuilder, which I haven't blogged about for a long time, but which is going VR... stay tuned. This post is about graphics and relates to something that's pretty cool - hand tracking using a Kinect sensor. I was lucky enough to attend Future Decoded last week. There was some great keynotes on the technical day. However, there was a bit of a surprise during the keynote from Chris Bishop at Microsoft Research. His main focus was on AI, machine learning and making use of deep learning to solve difficult problems. One of the applications that cropped up during the keynote was hand pose tracking using Kinect and an Xbox sensor. Now, this has come up before with Handpose . However, it was still a bit of a surprise to see a live demo - which I manage to capture a few seconds of once I realised what was happening. Whether there's been much progress since the original Handpose reveal ...

Extruding profiles along paths.

Image
Well, a quick update from me. I have now complete my extrusion code. This allows you to take a path and a profile, for example some bezier splines, and will generate a textured mesh of the result. This is a real building block for creating rooms, but has been rewritten completely since the original version. I've knocked up a simple WPF viewer to examine the results and to check that the texture mapping works ok - other than an axis flip, it looks pretty good. As the examples show, the code supports different smoothing angles for profiles and paths and will also seal the ends of the path using the triangulation, discussed in some earlier posts. Anyway, it's great progress. I stand at a bit of a divide now. To progress to start writing the WPF application, or to consider a tough cookie - creating a 3D CSG engine. I don't strictly need the latter and it could be a huge diversion, but the challenge is tempting. Well, back to it ...

Moving on ... Polygon Triangulation Progress

Image
I've finally moved on from the polygon expansion code, which works very well now.* My new challenge has been to create a polygon triangulation service. For those in the know, triangulation is a useful process for creating 3D meshes. Models tend to be built from triangular faces, so, in order to create 3D models for RoomBuilder, it is important to be able to move from the 2D to 3D world. The triangulation code does this. Essentially, it divides a polygon into non overlapping triangles to create a solid face. There are many different ways of approaching triangulation, most of which are concerned with either speed or mesh quality. It is possible to implement very efficient, scalable solutions for convex polygons, however, reflex verticies make the triangulation process more difficult. At the moment, I am not so concerned about speed. I would rather have a reasonably efficient, robust routine that can be easily debugged, than something more esoteric and potentially harder to maintain. ...

RoomBuilder V1

Image
Just to cheer myself up, I thought I'd post some screenshots of room models created in the original version of RoomBuilder, rendered in Cinema4D XL. These were done a few years ago. Time flies eh? A Georgian style door. A more modern look. A poor paint job! One final one, with a few plants and textures added (not from RoomBuilder).

Straight Skeleton Madness (a plea for help)

Image
After completing my work on boolean path operations, I have moved on to looking at algorithms for offsetting polygons. One of the ones that stands out is known as the 'straight skeleton' algorithm. This computes a set of connected paths which describe the position of verticies as the polygon offset size is altered. Unfortunately, it's only directly applicable to straight line paths (with mitre joins), but that's good enough for now. The algorithm is straightforward for convex polygons, but gets a little bit more complex when dealing with concave points, since this can lead to the creation of sub paths. In theory, while the straight skeleton is not directly applicable to offsetting, it produces a structure which can be used to calculate an offset path. As an aside, the straight skeleton of a polygon is ideal for determining its 'roof structure' - which will be of use elsewhere in my software. Progress on my .NET straight skeleton code has been slow but fairly dec...

Milestone: .Net Boolean Path Engine

Well, today I am celebrating bit of a milestone with regard to my graphics project. I finally have an operational 2D vector path engine which is capable of boolean operations. It supports union, intersection and subtraction of bezier and straight line paths with holes and seems to be working really well, at long last! One of the things that has really helped develop this engine is the vast suite of unit tests. It's amazing just how many tricky path operations you can devise that can really stress the engine. What may originally seem a relatively simple task reveals itself to have many complications with several degenerate or special cases. There have been a number of 'what if?' test cases I have thrown at the engine that have revealed areas that need to be improved. Particularly tricky problems include: subtraction of a subpath from a path, e.g. half a hexagon from a hexagon, union and subtraction operations on paths which include shared edges, paths that contain perfectly ...

Where to Blog

Ok, it's been quiet round here since my only previous blog post. A lot has happened in my life since then which has certainly got in the way of being productive. However, I'm please to say I'm back and have been coding on my personal projects for a few months. Since what I am working on is mainly graphics related and has a strong overlap with the 3D art community, it's difficult to know where to blog to reach the right people. Blogger is great for having a wide reach, but it's not particularly targetted so I also blog elsewhere on very similar topics. I intend to try to keep both ticking over. Fingers crossed on that front.

Welcome to my World

Hi and welcome to my world! This is my new blog, where I intend to chat about graphics. More specifically, the challenges of creating a new graphics product that can be used to automatically generate 3D models of rooms - the output of which is aimed at the graphics professional. I already have some experience at this, having written a tool I use myself to generate 3D models that look great - but it's now time for some improvements and to make it more useable. Join me for the ride, if you're interested. In this blog, I'll post some thoughts about graphics, software and usability and hopefully a few tasters and screenshots of what 'RoomBuilder2' can do. Perhaps I need a more catchy name, but so many are already taken ... Ok let's call it Xyecco. Thanks, Max