Max官網範例:和硬體互動-DMX, Part3

在DMX最後一篇文章中,我將示範如何建立如下圖影片的過程。

我們需要寫一個非常具體以硬體為中心的Max Patch。我的希望是,這些想法和技術能能幫助你探索關於如何建立屬於自己的DMX專案。

下載關於此篇教學的Patch檔案

關於第1篇

關於第2篇

Part 1 硬體部分

這個系統我所用到的裝備如下

1.LanBox LCX:LanBox 我的DMX 介面接口裝置。

2.American DJ Revo 4: 這是一個DMX 256控制通道的LED投影機。它可以輸出4網格16×16個LED的RGB和白色光線。

3.MicroSoft Kinect: Kinect是在3D空間的互動裝置。

Part 2 軟體部分

Max 6 – of course!這是這三篇文章的重點

一個關於LanBox的輔助公用套件和外部組件。您可以從Lanbox網站得到這些資源

如果您使用不同的DMX硬體組合,你也可以用你自己的系統來實做。

用於使用Kinect的資料,我用了由- Jean-Marc Pelletier開發的jit.freenect。這是一個易於與您的Kinect達成Max互動的方法。

(補充:由於Jean-Marc Pelletier的網站好像暫時連不上了,在此補上關於jit.freenect的範例說明)

我也決定用更多一些的Jean-Marc的軟體來管理從Kinect的影像資料。特別的是,為了越來越複雜的燈光控制,我下載了cv.jit(主要是用OpenCV來編寫的Jitter,讓使用者能不需要太多3D的知識來使用已寫好的功能)來產生必要的object。

(補充:由於Jean-Marc Pelletier的網站好像暫時連不上了,在此補上cv.jit的連結)

我下載了所有這些object,並放置在一個名為Cycling'74的文件夾中,同時移到我的Max應用程序文件夾裡。

Part 3 – 寫程式。

在這個系統中的基本思想是,我們在一個3維空間的一部分中選擇一個體,建立一個關於對於偵測到個體的影像,然後將轉換的2維空間資訊到1維的資訊,藉由DMX的封包來控制投影結果。

讓我們開始在Patch上,做出我們想要的改變。

在Patch中的Master Metro中編寫出所有需要呈現的元素。為了符合Lanbox的frame rate,它應該被設置為20fps。因為當使用DMX工作時,更新的速度不應該比系統的frame rate快。

Kinect的程式碼首先被引入這個範例。我們希望能夠打開Kinect作為Max輸入設備,也是調整Kinect到我們可以觀察的角度。最重要的是,我們希望建立一個範圍控制器,使我們可以“留意” Kinect在一定範圍內和設備的互動。透過kinect 的子patch ,你可以看到這一切是如何運作的。

Transient

不需要去討論太細節的部分,這個程式碼調整從Kinect的視圖,以“看”的部分,去延伸思考我們想捕捉的範圍,然後分析該影像的個體(圓點)的存在,然後,我們去對圓點做標籤,只選擇第1個圓點進行查看,然後只用第1個圓點為首來建立一個影像串流。

接下來,我們需要將二維影像數據轉換成一維的數據封包,是為了要控制LED投影機的顯示。這時jit.iter就派上用場了。在此之後的程式碼內會擴展成16×16的影像的坐標轉換為一維數組256個元素。

通過閱讀手冊,我想通如何使用Revo 4投影機,以及各種信息圍繞DMX的通道特定映射(歡迎來到DMX程式設計的世界!)

通道映射看起來是這樣的。

Transient

format_chans子Patch,你可以看到我是如何使用的*coll *object,為32個通道提供這種映射,這個映射可以重複一直到第256通道。

最後,我用另一個coll object來設置DMX資料封包,這將被送到DMX網路上。我使用的是不照順序的的輸入號碼與nsub訊息成雙地來更新每個通道的值。

該專案的master metro也轉儲存訊息給coll DMX_packet object,coll DMX packet object的功用是發送當前資料封包,到*udpsend *object,透過我們的LanBox特定的資料格式。

到此就完成了!我對Tom Hall和Janeva Zentz非常感謝,因為他們影像得以完成。

也感謝您支持Working with hardware 系列。如果你有其他類型的硬體你想看到,也請讓我們知道。

原文出處:http://cycling74.com/2012/11/05/working-with-hardware-dmx-part-3/