一个可以让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()
相关推荐
Python私教1 天前
Blender模型导入Godot完整教程:GLB、BLEND与继承场景怎么选
运维·godot·blender
石臻臻的杂货铺5 天前
做 AI 视频,先让 Blender 把镜头演一遍
人工智能·音视频·blender
七牛云行业应用5 天前
用 Codex 操控 Blender 做 3D 场景:从安装 addon 到跑通第一条指令
人工智能·3d·ai编程·blender
renwen15796 天前
Blender简单的UV纹理绘制
blender·uv
麦田里的粮仓17 天前
Blender 建模练习 - 藤蔓
blender
王家视频教程图书馆18 天前
混元3d生成3d模型 blender使用Quad Remesher Bridge 1.3.2重拓扑 mixmo 或者autoRigPro骨骼绑定
blender·骨骼绑定·重拓扑
eggcode19 天前
Blender批量隐藏、显示物体
blender
3D小将19 天前
3D格式转换之Blender工程文件转换GLB格式技术文档
3d·blender·solidworks模型·ug模型·rhino模型·stl模型
renwen157921 天前
Blender材质基础(应用行业兼容模式快捷键)
blender·材质
成都渲染101云渲染66661 个月前
GPT Image 2 + Seedance 2.0制作AI动漫短片教程
ai·blender·maya