一个可以让blender自动建模的脚本

一、描述:

通过blender的脚本,接收socket请求,将socket请求的语句,描述成blender的建模语句,通过exec()函数执行。

二、问题:

运行脚本后,blender界面无法操作。

比如程序中每隔1S添加一个不同位置的棱角球。但是在实际运行过程中,一个小球都没有显示出来。当我想通过blender界面查看时,直接卡死在运行脚本前的界面。

解决方法其实也很简单,就是将脚本单开一个线程。

python 复制代码
thread  = threading.Thread(target=create_server)

thread.start()

三、最终代码:

python 复制代码
import bpy
import socket
import math
import threading

def create_server(host="127.0.0.1", port=55567):
    # 创建一个 socket 对象
    # AF_INET 表示使用 IPv4 地址
    # SOCK_STREAM 表示使用 TCP 协议
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # 绑定到指定的地址和端口
    server_socket.bind((host, port))
    
    # 开始监听客户端的连接请求
    # 参数 5 表示最大连接数(队列长度)
    server_socket.listen(1)
    print(f"Server is listening on {host}:{port}...")

    try:
        while True:
            # 等待客户端连接
            client_socket, client_address = server_socket.accept()
            print(f"Connection from {client_address}")
            client_socket.sendall(b"Hello from server!")
            client_socket.setblocking(False)
            while True:
                try:
                    # 接收客户端发送的数据
                    data = client_socket.recv(1024)  # 每次接收最多 1024 字节
                    if data:
                        str = data.decode('utf-8')
                        print(f"Received from client: {str}")
                        # 向客户端发送响应
                        exec(str)
                        
                    else:
                        print("No data received from client.")
                        break
                except BlockingIOError:
                    #print("BlockingIOError")
                    i = 0

               
            
            # 关闭客户端连接
            client_socket.close()
            print(f"Connection with {client_address} closed.")
    except KeyboardInterrupt:
        print("Server is shutting down.")
    finally:
        # 关闭服务器 socket
        server_socket.close()
        print("Server socket closed.")

if __name__ == "__main__":
    thread  = threading.Thread(target=create_server)
    thread.start()
    #create_server()
相关推荐
woshihedayu19 小时前
blender中使用rigify烘焙动画,并导出glb文件的方法
blender
成都渲染101云渲染66665 天前
C4D/Blender云渲染计费详解|5090显卡实测:速度对比+成本核算
3d·ue5·blender·maya·houdini
哎呦哥哥和巨炮叔叔6 天前
Blender 渲染设置优化速记_Cycles/Eevee 最佳配置_渲染 101 云渲染
blender·渲染农场·blender云渲染·blender 渲染优化·cycles 渲染·eevee 渲染·渲染 101
CG_MAGIC7 天前
Blender《废弃房屋》的制作过程
3d·blender·贴图·效果图·建模教程
hey202005287 天前
Houdini渲染农场哪个好用?
动画·blender·maya·3d渲染·houdini·cinema4d
CG_MAGIC13 天前
3D 软件文件格式详解:OBJ/FBX/USD 导出与导入规范
3d·blender·贴图·建模教程·渲云渲染
CG_MAGIC14 天前
V-Ray 光照贴图烘焙参数适配教程
3d·blender·贴图·效果图·建模教程·渲云渲染
XR101yqm122114 天前
Blender2026渲染引擎对决:Cycles和Eevee Next,如何做出正确选择?
blender·cycles·eevee
夕除14 天前
blender--01
blender
a11177614 天前
Rigify功能手动制作动画(blender)
blender