Прикрепите оружие к руке персонажаC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Прикрепите оружие к руке персонажа

Сообщение Anonymous »

Мой «движок» во многом основан на этой статье:
https://learnopengl.com/Guest-Articles/ ... -Animation
Общий вопрос:
Как прикрепить оружие к «руке персонажа»?
Хотя анимация работает для всех персонажей и анимаций на веб-сайте mixamorg, включая несколько анимаций, мне сложнее всего время пытаюсь взять отдельную модель и прикрепить ее к РУКЕ/Руке персонажа.

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

void ArmedAnimatedModel::attachHand(const glm::vec3& playerPosition) {
std::string boneName = "mixamorig_RightHand";
std::string parentBoneName = "mixamorig_RightForeArm";

Bone* bone = GetBoneByName(boneName);
Bone* parentBone = GetBoneByName(parentBoneName);

glm::mat4 childfinalBoneMatrix = GetFinalBoneMatrixByID(bone->GetBoneID());
glm::mat4 parentfinalBoneMatrix = GetFinalBoneMatrixByID(parentBone->GetBoneID());

// Combine the parent and child bone transformations maybe?
glm::mat4 finalBoneMatrix = childfinalBoneMatrix;

glm::mat4 weaponModelMatrix = glm::mat4(1.0f);

weaponModelMatrix = glm::scale(weaponModelMatrix, glm::vec3(0.01f));

weaponModelMatrix = glm::translate(weaponModelMatrix, glm::vec3(X,Y,Z));
LogMatrix(weaponModelMatrix, "final Weapon Model matrix");
weaponModel->GetShader()->use();

LogMatrix(finalBoneMatrix, "finalBoneMatrix");

auto transforms = finalBoneMatrix;
weaponModel->GetShader()->setMat4("finalBoneMatrix", transforms);
GLint uniformLocation = glGetUniformLocation(weaponModel->GetShader()->ID,
"finalBoneMatrix");

glUniformMatrix4fv(uniformLocation, 1, GL_FALSE,&transforms[0][0]);
GLuint modelLoc = glGetUniformLocation(weaponModel->GetShader()->ID, "model");
glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(weaponModelMatrix));
weaponModel->Draw();
}

#version 330 core

layout(location = 0) in vec3 aPos;       // Vertex position
layout(location = 1) in vec3 aNormal;    // Vertex normal
layout(location = 2) in vec2 aTexCoord;   // Texture coordinates

out vec2 TexCoord;
out vec3 Normal;
out vec3 FragPos;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;
uniform mat4 finalBoneMatrix;

void main()
{
vec4 totalPosition = vec4(0.0f);
Normal = mat3(transpose(inverse(model))) * aNormal; // Correct normal transformat
ion
TexCoord = aTexCoord;

vec4 localPosition = finalBoneMatrix * vec4(aPos,1.0f);
totalPosition += localPosition;
mat4 viewModel = view * model;
gl_Position = projection * viewModel * totalPosition; // Final position in clip s
pace
}

Я знаю, что здесь кажется, что я не передаю представление и проекцию, но я делаю это где-то еще, чтобы не засорять слишком большим количеством кода, ниже мой вершинный шейдер:
ЛЮБАЯ помощь приветствуется! Я занимаюсь этим дольше, чем хотелось бы признать!
Я пробовал много альтернативных подходов, включая умножение родительских матриц на дочерние, но мне так и не удалось найти правильное расположение руки в МИРОВОМ пространстве или модели. Пространство.
Я знаю, что кости правильные, потому что они правильные относительно друг друга И анимация работает без сбоев...

Подробнее здесь: https://stackoverflow.com/questions/790 ... acter-hand
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Контроллер персонажа от третьего лица (Unity) с использованием Кинематического контроллера персонажа. Когда я нажимаю кн
    Anonymous » » в форуме C#
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Карта инъекции ошибок в кинжале/пропущенных счетов с пользовательскими ключами в руке ViewModel
    Anonymous » » в форуме Android
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Эмулятор Android на руке: образы системы
    Anonymous » » в форуме Android
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Я функционирую в тусклой руке
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Эмулятор Android на руке: образы системы
    Anonymous » » в форуме Android
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous

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