javascript - 使用 Socket.io 设置 Python 脚本以更改 Three.js 动画
问题描述
我用 Three.js 制作了一个小型环境,它可以加载 3D 模型并能够随机更改所述模型的动画。现在我需要将这个环境与一个 Python 脚本连接起来,该脚本将更改在我的 JavaScript 中调用某个函数的动画,为此我正在尝试使用Socket.io创建一个套接字并尝试在我的 JS 中调用这个函数代码。可悲的是,我无法连接这两个程序,因为我不确定如何执行我的计划。
Python 服务器代码(在 connect 内部发出跳转只是为了测试它是否工作,它不是。)
from aiohttp import web
import socketio
sio = socketio.AsyncServer(async_mode='aiohttp')
app = web.Application()
sio.attach(app)
@sio.on('connect')
def connect(sid, environ):
print("connect ", sid)
print("Sending command to js")
sio.emit('jump', data)
if __name__ == '__main__':
web.run_app(app)
Javascript 代码(删除了大部分函数的内部结构以使其更短)
(function main() {
init();
function init() {
scene = new THREE.Scene();
...
var socket = io.connect('http://0.0.0.0:8080');
}
function update() {
renderer.render(scene, camera);
requestAnimationFrame(update);
}
update();
socket.on('jump', function(data) {
playAnimation();
});
function playAnimation() {
...
}
})();
我的问题是:
- 如何使用socket.io在Python中创建一个最小的套接字连接来调用JS函数playAnimation?
- 如果我想根据我的 Python 控制台输入调用不同的函数,我应该怎么做呢?
- 如果 update() 永久循环,我应该在哪里放置事件检测?
- Socket.io 是否过大了,我应该改用其他库还是包含的 Python 套接字?
谢谢你。
解决方案
推荐阅读
- java - Spring Boot Admin 重启后未检测到服务
- search - Google Analytics 中的 IP 过滤器不适用于内部网站搜索
- java - 插入数据并在休眠中立即获取时出错
- vb.net - 通过 WebBrowser 下载鼠标指针下的图像
- php - 如何在 Symfony 中使用自定义类型正确使用 FormBuilderInterface
- actor - 如何为 Scalafx 编写保存 GUI-Aktor?
- powerbi - PowerBi 创建一个具有两个不同日期和位置之间差异的列
- php - $_POST 不起作用不给出从 ajax 传递的数据
- ramda.js - 使用 Ramda 更新 mapStateToProps
- tensorflow - 1D 中的 Convnet 提供 50% 的准确度:我不知道为什么