Archive for November, 2011

ofxGrabCam

Thursday, November 10th, 2011

Updated video:

YouTube Preview Image

A simple camera for openFrameworks I threw together in transit. Name suggestions welcome!

ofxGrabCam is a camera for browsing your 3D scene. It ‘picks’ the xyz position under the cursor (using the depth buffer to get Z).
Rotations and zoom (left and right mouse drag) are then performed with respect to that xyz position
Inspired by Google SketchUp

P.s. this is probably not much use for point clouds / other sparse datasets where there’s nothing to ‘grab’ onto.

Update: now if it doesn’t find anything under the cursor, it automatically spirals outwards until it does find something, so sparse objects / inaccurate clicks are now more workable.

Available on github at http://github.com/elliotwoods/ofxGrabCam

You should also check out https://github.com/Flightphase/ofxGameCamera by the ever obvious jim.

ZOTAC DisplayPort to dual HDMI for multi-projector media installations

Wednesday, November 9th, 2011

I’ve had this sitting in my suitcase for a while, finally here’s the results of trying it out: (i hope to reword some of this later when I haven’t just got off of a 12 hour flight)

This adapter belongs in the same cupboard as a Matrox DualHead2Go (part of their GXM product line) but is made by Zotac who are new to this type of device. This device being: Take 1 video output socket on your computer, plug in one of these, and get 2 outputs (in our case for 2 projectors).

When you have everything connected, the 2 outputs appear to the computer as 1 large output (e.g. if you have 2 XGA projectors attached to the Zotac, then the computer will see a 2048*768 video head attached its output). This way, you can send separate signals to the 2 projectors (the left side goes to projector 1, the right side to projector 2).

At the moment I prefer to use HDMI because:

  • Sharp, consistent signal / ‘Lossless’ (We can use the terms HDMI and DVI interchangeably when discussing signal, they’re generally the same thing but with different ends on the cable. However, HDMI can support higher frequencies whilst DVI can support dual-channel)
  • Competitive market of HDMI products (repeaters, cables, adapters. Long DVI cables are expensive whilst generally offering the same performance)
  • Decent physical connector (I find D-Sub which is used for VGA/DVI clunky and easily damaged)

Test setup

Here’s an image of the test setup:

  • ZOTAC mini DisplayPort to dual HDMI (ZT-MDP2HD)
  • Shuttle X58 XPC
  • XFX ATI 6770 Eyefinity 5 Mini-DP single slot video card (5 outs on one card for under £100!)
  • 2 x Optoma EX539 projectors (native XGA, support 120Hz)
  • 2 x 15meter HDMI straight cable

Initialisation

When you plug everything together, nothing happens. It’s only when you switch the projectors on that the computer starts to recognise that there is a display attached. In fact, if you turn on 1 projector then you get an XGA output at the computer, only when both projectors are turned on does the 2*XGA output appear in the PC settings.

This is in contrast to the Matrox which offers you the relevant resolutions directly on connection of the Matrox to the computer (the connection state of the projectors isn’t generally reported to the computer’s graphics card). This is advantageous for reliability as the state of the system from the PC’s point of view remains constant.

The behaviour of the Zotac would generally require you to turn on the projectors before turning on the PC when running an installation which starts on boot.

Supported modes

The specification quotes 2*HD is supported (3840*1080), however it was not offered to me even though the projectors support it (I’ve tested and used 1920*1080 on these projectors before on 15meter signal length). Only the native resolution was offered to the PC for the dual modes (XGA). For single head modes more resolutions were offered.

The Zotac should be able to support 120Hz XGA (XGA@120Hz ~= HD@60Hz in terms of bandwidth), but this was not supported / offered.

Selecting XGA@120Hz resulted in the signal being passed through to 1 projector only, this gives the same behaviour as an ordinary Mini-DP to DVI adapter when used with this projector.

In fact, the adapter works perfectly well as a single HDMI signal adapter. This somewhat explains the strange initialisation (it seems to switch personalities between a single and dual head adapter). Since it’s only a few more £’s than getting an active Mini-DP>DVI>HDMI adapter chain, this becomes very attractive.

Conclusion

I like it!

Advantages over Matrox:

  • Cost
    • The Zotac is £40 vs the Matrox at £100 / £150 / £250 (VGA in VGA out / VGA in – DVI or VGA out / DVI in – DVI out)
    • You save on the cost of adapters (Apple computers and ATI EyeFinity graphics cards commonly have DisplayPort sockets, projectors commonly don’t, you need adapters. For EyeFinity, DVI/HDMI adapters generally must be of the more expensive ‘active’ type).
  • Elegant
    • One small tidy device splits the signal into 2 HDMI feeds
    • Doesn’t require USB bus power
  • Signal strength
    • I generally found that the Matrox’s (tested on TH2G-Digital) can’t push DVI signal over a 15meter cable, active Mini-DP to DVI adapters generally can, this Zotac dual adapter can (in my non-noisy environment).
Disadvantages:
  • HDMI only
    • Matrox offers VGA, DVI and DisplayPort outputs (depending on model)
  • Strange initialisation
    • Could be a problem with long term installations that need to be started up every day by different people
  • Less mature
    • The Matrox devices have lots of hours clocked up, a large user base + lots of software updates
  • Only the native dual mode listed
    • It is somewhat of an advantage that it looks up the native mode and offers that, but in some situations it’s vital to send non-native signals
  • No software interface
    • If you want it!
Unknowns:
  • Supported by EyeFinity span modes? (should be equal to Matrox)
  • Can connect more than 2 of these to 1 EyeFinity card without active/passive adapter issues (should be fine)
  • Long term performance / reliability
  • Latency / motion artefacts
  • Support for all resolutions (1400*1050, 1680*1050, 1280*800, 2048*1080)

Notes from Art&&Code : Calibrating Projectors and Cameras: Practical Tools

Thursday, November 3rd, 2011

Photo by Kyle McDonald

Overview

The Kinect device inputs a realtime 3D scan of a world scene.

A projector outputs a realtime 2D projection onto a 3D world scene.

Using OpenCV’s CalibrateCamera function, we are able to calculate the intrinsics (focal length, lens offset) and extrinsics (projector position, rotation) of a projector relative the 3D scan of the Kinect.

We project a 3D virtual world scene onto a 3D real world scene by presuming that they are geometrically consistent (thanks to the Kinect) and knowing the intrinsics and extrinsics of the projector.

We can think of this as either:

  • Calibrating a virtual camera inside the computer against the scanned 3D scene, such that the virtual camera exactly aligns with the real projector or
  • Calibrating a real projector in the real world against a real 3D scene using the Kinect to take measurements

Demo

YouTube Preview Image

Walkthrough

YouTube Preview Image

VVVV Patches

Patches and plugins are available at http://www.kimchiandchips.com/files/workshops/artandcode/ArtAndCode-CalibrateProjector.zip

(the old link went to github, but there seems to be some bugs with their download system at the moment https://github.com/elliotwoods/artandcode.Camera-and-projector-calibration/downloads)

Inside is a plugin which wraps EmguCV and OpenNI (you’ll need to have a recent version of OpenNI installed).

Also there are 2 patches:

  1. CalibrateCamera
  2. CalibrateProjector (WARNING : Renderer will open fullscreen on 'second' screen to right of main screen e.g. projector)

Wiki

Workshop notes are available here

Github

openFrameworks code here (will be adding / amending / breaking / creating in that repo. You might want to checkout the artandcode-end tag).