KonstantinKondratenko / Pybullet_Texture

pybullet texture adding manual

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Добавление текстуры в симуляцию

Добавление текстуры при помощи ChangeVisualShape в коде симуляции

c = p.loadURDF('cube.urdf',

					[-.1, 0, .1],
					
					p.getQuaternionFromEuler([0, 0, 0]),
					
					globalScaling=1,
					
					physicsClientId=PYB_CLIENT
					
					)

x = p.loadTexture('tag.png')

p.changeVisualShape(c, -1, textureUniqueId=x)

# -1 value is "link index"

#(link index has something to do with "joints", of which the cube apparently has none)

Данный способ работает не со всеми изображениями, причина такого поведения пока неизвестна

При таком способе добавления текстуры изображение будет добавлено на все стороны куба

Cube_with_texture_ChangeVisualShape

Добавление текстуры при помощи связки URDF+OBJ+MTL

  1. В блендере нужно открыть вкладку материалов Opening_materials_tab

  2. Нажать New чтобы создать новый материал

  3. Нажать на кружок рядом с Base color и выбрать texture image Choosing_image_texture

  4. При помощи open открыть нужное изображение Open_button_on_screenshot

  5. Убедиться, что Display mode выставлен на Material Preview (иначе текстуру не будет видно, по умолчанию отображаются лишь геометрические формы)

    Checking_display_mode

  6. Кликнув на левый верхний угол и задерживая кнопку мыши, тянуть вправо чтобы раздвоить экран.

  7. Сменить editor type в левом верхнем углу на UV editor Opening_UV_editor

  8. Выбрать добавленное изображение в UV editor Opening_image_in_UV_editor UV_editor_opened_with_image

  9. В 3д редакторе выделить куб и нажать Tab, в результате слева должно появиться разделение изображения на области, которые будут видны на гранях куба.

    Если граней не видно, см п.9 Cube_face_selector

  10. Убедиться, что включена синхронизация и режим выбора граней Enabling_face_selector

  11. Расположить желаемую часть изображение на одной из граней (Связи между областями можно разорвать при помощи Rip region).

    Image_on_face_adjusted

    Обратите внимание на ориентацию куба на следующем скриншоте Correct_face_example

    Обратите внимание на ориентацию куба в пространстве в правом верхнем углу, (верхняя грань в блендере не будет являться верхней гранью куба в симуляции).

    Нужно изменять текстуру на грани, нормалью которой будет вектор -oY, именно эта грань будет верхней гранью в симуляции

  12. Экспортировать в качестве obj файла (убедитесь, что выбрано Export Materials) Exporting_obj

  13. В urdf файле в mesh filename указать имя obj файла, в Material указать такое же имя материала как в Блендере, в texture filename указать имя изображения

    Urdf файл загружен в репозиторий Changing_urdf

  14. В симуляции загрузить созданный urdf file

c = p.loadURDF('cube_copy.urdf',

					[-.1, 0, .1],
					
					p.getQuaternionFromEuler([0, 0, 0]),
					
					globalScaling=1,
					
					physicsClientId=PYB_CLIENT
					
					)

About

pybullet texture adding manual