... у тебя где вся эта система установлена? в шаговой доступности? ...... можешь засунуть все данные в один массив и сказать как они связаны с углами костей? ...
readcom = cont.sensors["Read"] line = s.readline() # берем одну строку line2 = str(line) # переводим в строку для питона (иначе не запускает) sp = re.split('[^0-9.-]+', line2) # оставляем только цифпы, точки и тире, а все остальное - разделители
каждый датчик показывает изменение угловой скорости относительно своего состояния покоя.Если плечо идет вверх, а кисть останется в покое, тогда плечо в модели "улетит"
>> "sensor_number,gx,gy,gz,ax,ay,az\n"вот смотри, в модели есть кости:bones = ['upper_arm','forearm','hand','thumb.01','palm.01','palm.02','palm.03','palm.04']1) у тебя есть связь между sensor_number и идентификатором кости? то есть какой сенсор какой костью управляет?bone.rotation_euler = xyz_euler_angle2) у тебя есть для конкретной кости три угла xyz для установки euler_angle кости или тебе нужны другие углы?
Код readcom = cont.sensors["Read"] line = s.readline() # берем одну строку line2 = str(line) # переводим в строку для питона (иначе не запускает) sp = re.split('[^0-9.-]+', line2) # оставляем только цифпы, точки и тире, а все остальное - разделители... можешь показать что ходит по компорту? какие сырые данные? ...Цитироватькаждый датчик показывает изменение угловой скорости относительно своего состояния покоя.Если плечо идет вверх, а кисть останется в покое, тогда плечо в модели "улетит"... у тебя есть математическая модель которая связывает угловые скорости гироскопа с положением кости? мне кажется здесь будет провал ...
def rot_bone(name,bone_name,xyz_euler_angle): ob = bpy.data.objects[name] bone = ob.pose.bones[bone_name] bone.rotation_euler = xyz_euler_angledef rig_update(): bones = ['upper_arm','forearm','hand','thumb.01','palm.01','palm.02','palm.03','palm.04'] for bone in bones: for store in ['.L','.R']: rot_bone('metarig',bone+store,[random.random()/5,random.random()/5,random.random()/5])
Кодdef rot_bone(name,bone_name,xyz_euler_angle): ob = bpy.data.objects[name] bone = ob.pose.bones[bone_name] bone.rotation_euler = xyz_euler_angledef rig_update(): bones = ['upper_arm','forearm','hand','thumb.01','palm.01','palm.02','palm.03','palm.04'] for bone in bones: for store in ['.L','.R']: rot_bone('metarig',bone+store,[random.random()/5,random.random()/5,random.random()/5])... вставь в rig_update код по обработке компортов ...... если у тебя есть углы, попробуй вызывать rot_bone в этом обработчике для требуемого объекта, содержащего арматуру, заданной кости и углов ...rot_bone('имя_объекта' ,'имя_кости',[x,y,z])