2013-01-22 52 views
1

我正在開發一個向Maya發送命令的應用程序,很像iOS應用程序CameraMan。但是,我正在尋找一種方法來創建此基於Web的應用程序,而不是構建本機應用程序。我相信這可以完成,但我堅持如何進行初始連接。 Maya創建一個可通過特定IP地址:端口號訪問的命令端口。例如,我可以從Eclipse發送命令,甚至可以發送短的Python腳本。我在本地應用程序中看到過這個動作,但是如何通過Javascript完成此操作?通過javascript連接到Maya

Maya確實提供了一個瀏覽器插件來完成此操作,但它當然是一個插件,不能在移動瀏覽器上運行,也不能針對我正在創建的確切應用程序進行定製。

作爲背景,我有Javascript,Python和MEL腳本的基本知識。

更新:我應該指定我不想通過互聯網控制Maya。相反,我正在尋找一種通過本地網絡進行連接的方式,在那裏我知道IP地址,就像我上面引用的CameraMan應用程序(而不是本地應用程序)。

更新2:不幸的是,這個項目在這一點上是一個不行。我沒有意識到的是,爲了啓用Maya「服務器」上的websockets,我需要實現一些第三方庫。對個人使用很好,但如果我想爲其他人發佈工具則不行。

+0

在本例中,Maya是運行在Web服務器上(一個集中位置),還是運行在正在瀏覽網頁的客戶端計算機上? –

+0

Maya在連接到本地無線網絡的桌面上運行。網絡應用程序也運行在同一無線網絡上的移動設備上。 – GeoffB

+0

Ergo Maya在服務器上運行,即使桌面也可以是服務器。但是,這要求它實際提供數據。在任何情況下,問題仍然與服務器一樣。 – joojaa

回答

1

一切都是可能的,可能不實際,或者在這種情況下,Autodesk的許可證可能是一個小問題。首先讓JavaScript更好地定義,請參閱JavaScript是一種編程語言,並且瀏覽器將嵌入JavaScript的Web瀏覽器綁定。它不是一般的JavaScript,並不是所有的JavaScript都在瀏覽器中運行。瀏覽器和瀏覽器的安全規則所綁定的Web瀏覽器內部的JavaScript通常無法與整個系統僅與網頁和服務器中的數據進行通信。所以爲了使瀏覽器中的java腳本能夠與Maya對話,你需要一個服務器連接。

包裝Maya作爲Web服務器是可能的,我已經在過去與mel做過。用python來做會更容易。你可以在CreativeCrash上找到現有的演示代碼,它比其他任何東西都更能體現概念證明。除了反思開放的場景外,你可以用演示做的事情不多。與某些帖子所說的代碼應該按原樣工作相反。它很難遠程調試人們的防火牆,因爲除非另有說明,否則大多數防火牆軟件都會阻止服務器,許多用戶使用覆蓋來阻止整個Maya從外部世界進入,因此請務必仔細檢查這些事情。

或者,您可以將現有的java腳本telnet工具和telnet連接到未經過濾的Maya命令端口,然後直接調用Maya中的mel/python。像anyterm這樣的東西將符合法案。在我的假期中,我已經成功使用Maya與電話ssh應用程序修復腳本錯誤。如果你需要編程訪問,這可能是一個更容易的攻擊媒介。

當你做這樣的事情時一定要明白,有一個大安全問題涉及此。 Maya擁有對系統的完全用戶訪問權限,通常可以完全訪問管理員。 Maya可以在用戶級別調用計算機上的所有內容,因此沒有什麼能夠阻止攻擊者遠程接管整個計算機。

PS:使用遠程桌面或VNC通過專用虛擬網絡很可能會更好的選擇是誠實的。

+0

這是一個非常有趣的想法。我很好奇,但如果有一種方法可以避免將Maya作爲Web服務器進行封裝​​。如果在本地工作時(如從Eclipse發送命令)或從同一本地網絡上的iOS設備(如CameraMan應用程序中)不需要這樣做,那麼是否可以通過簡單的Web -app?我也喜歡javascript telnet工具的想法,但我必須弄清楚如何使用我在網絡應用程序中收集的加速計數據自動執行。另外,我剛剛瞭解到Maya中的commandPort需要使用常規的UTF-8命令字符串。 – GeoffB

+0

不,從您的瀏覽器的任何通信形式瀏覽器始終是客戶端服務器連接。除了大多數maya腳本連接,只需通過套接字發送數據即可使用相同的技術。 Maya已經知道如何在Web上下文中提供不僅有意義的東西。當然,在本地機器上有更多的IPC選項。通過網絡你不會有任何其他的選擇,除了套接字。 – joojaa

+0

好的,剛剛有機會在過去的這個週末嘗試它,它基本上很棒。現在,有兩個新問題出現了。首先,我想使用websocket,所以我需要弄清楚如何設置Maya「服務器」來做到這一點。其次,我想用Python構建服務器,但不知道如何開始。 – GeoffB