2013-01-22 50 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