【问题标题】:Connecting to Maya through javascript通过 javascript 连接到 Maya
【发布时间】:2013-01-05 05:35:41
【问题描述】:

我正在开发一个用于向 Maya 发送命令的应用程序,类似于 iOS 应用程序 CameraMan。但是,我正在寻找一种方法来使这个基于网络,而不是构建一个原生应用程序。我相信这是可以做到的,但我被困在如何建立初始联系上。 Maya 创建一个可通过特定 IP 地址访问的命令端口:端口号。例如,我可以从 Eclipse 发送命令,甚至可以发送简短的 python 脚本。我已经在本机应用程序中看到了这一点,但是如何通过 Javascript 做到这一点?

Maya 确实提供了一个浏览器插件来执行此操作,但它当然是一个插件,不能在移动浏览器上运行,我也不能针对我正在尝试制作的确切应用程序自定义它。

作为背景,我具备 Javascript、Python 和 MEL 脚本的基本知识。

更新:我应该指定我不希望通过 Internet 控制 Maya。相反,我正在寻找一种通过本地网络建立连接的方法,我知道 IP 地址,就像我上面提到的 CameraMan 应用程序(只是不是作为本机应用程序)。

更新 2:不幸的是,这个项目目前有点不行。我没有意识到,为了在 Maya“服务器”上启用 websockets,我需要实现一些第三方库。适合个人使用,但如果我想为其他人发布工具则不行。

【问题讨论】:

  • 在此示例中,Maya 是在 Web 服务器(一个集中位置)上运行,还是在正在查看网页的客户端计算机上运行?
  • Maya 在连接到本地无线网络的桌面上运行。该网络应用程序正在同一无线网络上的移动设备上运行。
  • Ergo Maya 在服务器上运行,即使桌面也可以是服务器。但是,这需要它实际提供数据。无论如何,问题仍然与服务器相同。
  • 哦,顺便说一下,在这种情况下,本地网络等于互联网。世界上的服务器架构不会区分相同的管子,它们的限制是您的网络管理员的工作。对于应用程序程序员来说,这都是一样的,尤其是因为您的浏览器不能做任何其他事情。

标签: javascript python web-applications maya


【解决方案1】:

一切皆有可能,可能不切实际,或者在这种情况下,Autodesk 的许可可能是一个小问题。首先让我们更好地定义 JavaScript,看看 JavaScript 是一种编程语言,而 Web 浏览器嵌入的 JavaScript 是由浏览器绑定的。它不是关于 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 可能是更多更好的选择。

【讨论】:

  • 这是一个非常有趣的想法。我很好奇是否有办法避免将 Maya 包装为 Web 服务器。如果您在本地工作(如从 Eclipse 发送命令)或从同一本地网络上的 iOS 设备(如在 CameraMan 应用程序中)工作时不需要这样做,那么是否可以通过简单的网络来做同样的事情-应用程序?我也喜欢 javascript telnet 工具的想法,尽管我必须弄清楚如何自动使用我在网络应用程序中收集的加速度计数据。另外,我刚刚了解到 Maya 中的 commandPort 采用常规的 UTF-8 命令字符串。
  • 不,任何从您的浏览器形成的通信形式的浏览器始终是客户端服务器连接。除了大多数 Maya 脚本连接只是通过套接字发送数据,因此技术相同。 Maya 已经知道如何提供不仅在 Web 上下文中有意义的东西。当然在本地机器上有更多的 IPC 选项。但是通过网络,除了套接字之外,您没有任何其他选择。
  • 好的,上周末刚刚有机会尝试,它基本上很棒。现在,出现了两个新问题/问题。首先,我想使用 websockets,所以我需要弄清楚如何设置 Maya“服务器”来做到这一点。其次,我想用 Python 构建服务器,但不知道如何开始。
  • github.com/theodox/standaloneRPC 是一个基于 HTTP 的 Maya 服务器的简单示例,旨在远程控制 Maya(通常是独立的)。
猜你喜欢
  • 1970-01-01
  • 2013-10-25
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2021-09-30
相关资源
最近更新 更多