4

Blender から TCP 接続を介して Pure Data に情報を送信するためのコードを理解するのに助けが必要です。ボールが転がっているサーフェスがあり、ボールの速度とその衝突を取得して、データを手続き型オーディオに変換するために TCP 経由で Pd に送信する必要があります。

私はこれを行うための可能な方法を検討してきましたが、これまで (まだ始まったばかり) の Python とコーディングについての理解が非常に限られているため、何が起こっているのかを理解するのが非常に難しいと感じています。

今ここに私の質問があります:

これをブレンダーで書くことで、単純なコードの文字列を送信できることを知っています。

import socket
host ='127.0.0.1'
port = 50007
msg = '345;'
s = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
try:
     s.connect((host,port))
     s.send(msg.encode())

そして、私はこのコードを作成して、たとえばオブジェクトから座標を取得できることを知っています:

import bge

def main():

   cont = bge.logic.getCurrentController()
   owner = cont.owner
   vel = owner.getVelocity()
   x = (vel [0])
   y = (vel [1])
   z = (vel [2])
   print (x+y+z)

main()

私が理解する必要があるのは、その情報を my.send に挿入して、Pure Data で受信できるようにする方法です。これを機能させる方法についてウェブサイトを見てきましたが、必要なものが見つかりませんでした。これに関係する良い情報源を誰かが持っているかどうか、または私の owner.getVelocity() を tcp メッセージに統合する方法を誰かが知っているかどうか疑問に思っていますか?

4

1 に答える 1

5

編集:

私は自分で解決したと思います。現在、PDでデータフローを取得しています。

誰かが興味を持っているなら、これはコードです:

import bge
import socket




cont = bge.logic.getCurrentController()
owner = cont.owner
vel = owner.getVelocity()

x = (vel [0])
y = (vel [1])
z = (vel [2])

added = x+y+z
print (added)

tsr = str(added)     
tsr += ';'
host = '127.0.0.1'
port = 50007
msg = '123456;'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((host, port))

s.send(tsr.encode())

s.shutdown(0)

s.close()

御時間ありがとうございます!

アンドレアス

于 2012-11-28T23:43:16.993 に答える