我从跳跃运动控制器发送位置数据,并在3d软件中设置该位置数据以移动对象。但是我需要对象记住它以前的位置并将它添加到由跳跃提供的数据中。
因此,如果第一个位置值是206.901,则第二个位置将是前一个位置加上196.799,依此类推
这是我的3dsoftware从leap控制器收到的udp位置数据:
received message: 206.901992798
received message: 196.799606323
received message: 218.851989746
received message: 206.74659729
received message: 217.411819458
这是用于设置对象位置的3d软件代码:
while(True):
try:
rightswipe_x = hou.session.sock.recv(1024)
rightswipe_x = float(rightswipe_x) #string to float
print "received message:", rightswipe_x
# x coordinate
effector = hou.node('/obj/geo1/transform1') # get object from scene
x2 = effector.parm('tx') # get value of current x position of effector
x2.set(rightswipe_x/500) #set tx parameter to value
x2 = effector.evalParm('tx') # re-evaluate parameter for x position
print 'x position:',x2
答案 0 :(得分:0)
是的,你肯定需要一个会增加的变量。 如果没有看到你的代码,很难给你一个例子,但它会是这样的:
position = 0
for i in range (*whatever the number of your positions will be*):
position += (*whatever your input is*)
print(position)
退出此循环后,所有位置将相加。 我希望它有所帮助
向我们提供更多信息以帮助您。
答案 1 :(得分:0)
所以也许我真的很厚,但它是我发送的飞跃传感器的实时数字流,所以我没有范围吗?
导入套接字
UDP_IP =' localhost' UDP_PORT = 7864
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind((UDP_IP,UDP_PORT))
而真实:
rightswipe_x,addr = sock.recvfrom(1024)
#print "received message:", rightswipe_x
rightswipe_x = float(rightswipe_x) #string to float
position = rightswipe_x
#for i in range(0,position):
# print i
# position = position + i
# print position
答案 2 :(得分:0)
好吧,你的加法应该在一些行动之后发生。在您提供的代码中,您有一个while循环操作。
所以,虽然如此:
rightswipe_x = float(rightswipe_x) #string to float
position += rightswipe_x
如果我正确地阅读您的代码:而不是现在增加我们案例中的“位置”:)您只需继续重新分配它。
相反,将其更改为+ =,可以将其转换为
position = position + rightswipe_x
我希望它能奏效。
此外,您发布的代码显示不正确,因此我不确定您的缩进是否正确。确保它形成如下:
while True:
rightswipe_x, addr = sock.recvfrom(1024)
#print "received message:", rightswipe_x
rightswipe_x = float(rightswipe_x) #string to float
position = rightswipe_x
return position