gpt4 book ai didi

python - blender 没有响应我的加速度计运动

转载 作者:行者123 更新时间:2023-12-01 06:14:50 26 4
gpt4 key购买 nike

我使用arduino将加速度计MMA7361L与blender2.49交互。使用python 2.62。我的arduino代码是:

void setup()
{
Serial.begin(9600);
}

void loop()
{
Serial.print(analogRead(0)/4, BYTE); //x-axis
Serial.print(analogRead(1)/4, BYTE); //y-axis
Serial.print(analogRead(2)/4, BYTE); //z-axis
delay(40);
}

我的Python代码是:

import Blender
import GameLogic
import serial

serialport = serial.Serial('COM4', 9600)
ob = Blender.Object.Get ('Cube')
cont=GameLogic.getCurrentController()
own = cont.owner
rotxx = move.dRot[0]
rotyy = move.dRot[1]
rotzz = move.dRot[2]
move = cont.actuators["move"]
Blender.Window.WaitCursor(1)
x=[0,0,0]
for i in range(1, 100):
x1[0] = serialport.read(size=1)
x1[1] = serialport.read(size=1)
x1[2] = serialport.read(size=1)

x2=[(((m - n)*1.65)/180) for m,n in zip(x,x1)]
rotxx = rotxx + x2[0]
rotyy = rotyy + x2[1]
rotzz = rotzz + x2[2]
move.dRot=(rotxx,rotyy,rotzz)
cont.activate(move)
x1=x

else:
serialport.close()
Blender.Window.WaitCursor(0)

已连接传感器执行器。实现中没有显示错误,但 blender 立方体没有显示移动。

最佳答案

在您的 python 代码中,您仅读取通过串行端口发送的传感器值 100 次,每次更新 40 毫秒,相当于 4 秒的传感器数据(根据您的处理代码)。您需要不断读取传感器值并更新场景方向,因此请使用如下 while 循环:

read_sensors = True
while(read_sensors):
# call serialport.read() to read current sensor values
# update scene

确保它至少每 40 毫秒运行一次,因为这是 arduino 板将加速度计值写入串行端口的频率。如果您不经常从串行端口读取数据,它会缓冲,导致serialport.read()中出现的值滞后于arduino板正在读取的当前加速度计值。这看起来互动性不太好。

关于python - blender 没有响应我的加速度计运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3884425/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com