0

./blender visualizer.blend -P Visualizer.py 私は、リストを受け取り、それに応じてメッシュを作成するためにリストをループするソケットサーバーを持っている私のpythonファイルで、このようなシェルを介してpythonファイルでブレンダーを実行してい ます。問題はthreading、ブレンダーのウィンドウが表示されないため、ブレンダーがフリーズしないように使用する必要があることです。しかし、ソケットスレッドからは、例外をスローせずにブレンダーがクラッシュするため、メッシュを作成できません。私も試してみmultiprocessingましたが、ブレンダーがフリーズします。ソケットサーバーにデータを受信させ、ブレンダーをフリーズせずにメッシュを作成する方法を知っている人はいますか?

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)

4

2 に答える 2

0

Blender は、別のオブジェクトを描画するように要求する前に、オブジェクトの描画を完了する時間が必要であることに気付きました。だから私がしなければならなかったのはtime.sleep(1)、オブジェクトを作成するためのループに入れることだけでした.

于 2020-03-24T19:00:28.013 に答える