LoginSignup
1
1

BlenderでUDP通信すーる

Last updated at Posted at 2023-05-06

はじめに

BlenderでUDP通信してサーバーにCubeの色情報を送ってみましょう

開発環境

  • UDPクライアント
    • Windows 11 PC
    • Blender 3.5.0
  • UDPサーバー
    • Windows 10 PC
    • Python 3.9

導入

1.同一のWiFiに接続しておく

2.UDPサーバー側のプログラムを作成し、実行

サーバーを起動し、BlenderからのCubeの色情報を取得、コンソールに表示します

import socket

# ソケットを作成する
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# サーバーアドレスを設定する
server_address = ('192.168.0.212', 5005) # ipconfigでIPアドレスを確認
sock.bind(server_address)

# データを受信する
while True:
    data, address = sock.recvfrom(4096)
    if not data:
        break

    # 受信したデータをパースする
    data = data.decode()
    r, g, b = data.split(',')
    r = float(r)
    g = float(g)
    b = float(b)

    # パースしたデータを表示する
    print(f'Color: ({r}, {g}, {b})')

3.Blenderを開き、Scripting->Text->NewからUDPクライアント側のプログラムを作成

Cubeを生成し、色をランダムに変更、サーバーに色情報を送ります

import bpy
import socket
import random

# ソケットを作成する
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# サーバーアドレス
server_address = ('192.168.0.212', 5005)

# 立方体が既に存在するかどうかをチェックする
existing_cube = bpy.data.objects.get("Cube")

if existing_cube is not None:
    # 既存の立方体の色をランダムに変更する
    mat = existing_cube.data.materials[0]
    mat.diffuse_color = (random.uniform(0.0, 1.0), random.uniform(0.0, 1.0), random.uniform(0.0, 1.0), 1.0)

    # 変更された色をサーバーに送信する
    message = f'{mat.diffuse_color[0]},{mat.diffuse_color[1]},{mat.diffuse_color[2]}'
    sock.sendto(message.encode(), server_address)
else:
    # 新しい立方体を作成して青色にする
    bpy.ops.mesh.primitive_cube_add()
    obj = bpy.context.active_object
    mat = bpy.data.materials.new(name="Blue")
    mat.diffuse_color = (0.0, 0.0, 1.0, 1.0)

    if obj.data.materials:
        obj.data.materials[0] = mat
    else:
        obj.data.materials.append(mat)

    # 作成された青色の立方体の色をサーバーに送信する
    message = f'{mat.diffuse_color[0]},{mat.diffuse_color[1]},{mat.diffuse_color[2]}'
    sock.sendto(message.encode(), server_address)

image.png

4.Blenderで実行する(ALT+P)とサーバー側で色情報が表示されます
345273798_739565374572712_4568253749779903090_n.png

お疲れさまでした。

参考

うまく接続できない場合、ファイアウォールを無効にするか、受診の規則・送信の規則で新しい規則を作成し、ポートを開放するなど試してみてください。あとはルーター側でIPが分けられていて、同一ネットワークにいるように見えても接続できない場合も。
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1