首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blender API (bpy)和socket服务器

Blender API (bpy)和socket服务器
EN

Stack Overflow用户
提问于 2020-03-24 20:51:40
回答 2查看 594关注 0票数 0

我通过shell运行blender,就像我的python文件中的这个./blender visualizer.blend -P Visualizer.py。我有一个socket服务器,它接收列表并循环列表,从而创建相应的网格。现在的问题是,我必须使用threading,这样搅拌机就不会冻结,否则搅拌机的窗口甚至不会显示。但从套接字线程,因为它看起来我不能创建网格,因为它崩溃我的搅拌机没有抛出任何异常。我也尝试过multiprocessing,它冻结了搅拌机。现在谁知道如何让socket服务器在不冻结搅拌器的情况下接收数据并创建网格?

代码语言:javascript
复制
def socket_server(*args):
    HOST = '127.0.0.1'
    PORT = 12345
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    s.bind((HOST, PORT))
    s.listen(5)
    conn, addr = s.accept()
    while 1:
        data = conn.recv(16384)
        if not data:
            break
        //creates mesh here
        conn.send(b'ok')
        time.sleep(1.0)

    conn.close()



if __name__ == '__main__':
    try:
        t = Thread(None, socket_server)#crashes
        t.start()

        # socket_server() #freezes

        # worker = mp.Process(target=socket_server()) #freezes
        # worker.daemon = True
        # worker.start()


    except Exception as e:
        print (e)
EN

回答 2

Stack Overflow用户

发布于 2020-06-03 23:55:59

在blender API文档中,它清楚地警告你不要使用线程。

您可以创建运算符,并使用计时器事件运行它。使用定时器事件,您可以从套接字轮询网络消息并执行任何操作。

票数 1
EN

Stack Overflow用户

发布于 2020-03-25 03:00:28

我开始意识到,搅拌器需要时间来完成绘制一个对象,然后要求它绘制另一个对象。所以我所要做的就是把time.sleep(1)放在我的循环中来创建对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60831429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档