Как изменить позу тела модели в модели SMPL-XPython

Программы на Python
Ответить
Anonymous
 Как изменить позу тела модели в модели SMPL-X

Сообщение Anonymous »

Я новичок в моделировании и цифровых 3D-аватарах. Я хочу взять пользовательское видео и создать на его основе 3D-модель. Я начал с простого понимания основ SMPL-X, поэтому с помощью следующего кода я пытаюсь понять, как можно изменить позу тела. Насколько я понимаю, SMPL-X использует кинематическую цепь, поэтому вы не можете манипулировать одним суставом тела независимо от другого, но я очень не понимаю, как использовать эту информацию.

Код: Выделить всё

import torch
import smplx
import os
import trimesh
from main import MODELS_FOLDER

def setup_modelling(model_folder):
if torch.cuda.is_available():
print("Using CUDA")
device = torch.device("cuda")
else:
device = torch.device("cpu")
# Sets up the SMPLX model
model = smplx.create(
model_path = model_folder,
ext='npz',
model_type = "smplx",
gender = "neutral",
# PCA is Principal Component Analysis
# A way of combining multiple factors into fewer ones whilst maintaining a fair representation of the data
# Not needed in our case as we want more accuracy over the body parts
use_pca = False,
batch_size = 1,
).to(device=device)

print("Model set up successfully")

# shape parameters
betas = torch.zeros([1, 10], device=device)
# 21 * 3, as 21 is no. of hand joints and 3 possible rotation axis - x, y, z
body_pose = torch.zeros([1, 63], device=device)
# 3 possible rotations of the body - x, y, z
global_orient = torch.zeros([1, 3], device=device)
left_hand = torch.zeros([1, 45], device=device)
right_hand = torch.zeros([1, 45], device=device)
# face rotations
expressions = torch.zeros([1, 10], device=device)

lift_angle = 50.0
radians = torch.pi / 180

left_shoulder_rotation = torch.tensor([0.0, 0.0, lift_angle * radians], device=device)
right_shoulder_rotation = torch.tensor([0.0, 0.0, -lift_angle * radians], device=device)

body_pose[0, 48:51] = left_shoulder_rotation
body_pose[0, 51:54] = right_shoulder_rotation

# Creates the output model with the parameters using SMPLX
output_model = model(
betas = betas,
body_pose = body_pose,
global_orient = global_orient,
left_hand_pose = left_hand,
right_hand_pose = right_hand,
expression = expressions
)
Это создает следующую тримешную модель:
Изображение

Я исследовал всю статью SMPL-X, но до сих пор не понимаю, почему, когда мы редактируем плечевые суставы, правый локоть начинает сгибаться? Это похоже на метод проб и ошибок, что не идеально, поэтому буду очень признателен за любую помощь.
Мне действительно хочется узнать больше о том, как все это работает, поэтому любые ссылки на полезные ресурсы были бы полезны.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/798 ... pl-x-model
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»