fffff
This commit is contained in:
1 parent
a3075433f0
commit
1bb131ecd2
6 files changed
+36493
-27
No files matched your search
+74
-19
@@ -183,6 +183,11 @@ namespace ZL
|
|||||||
{
|
{
|
||||||
bones[i].children.push_back(getIndexByValue(boneChildren[boneName][j], boneNames));
|
bones[i].children.push_back(getIndexByValue(boneChildren[boneName][j], boneNames));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*if (boneName == "Bone.020")
|
||||||
|
{
|
||||||
|
std::cout << i << std::endl;
|
||||||
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
startBones = bones;
|
startBones = bones;
|
||||||
@@ -299,8 +304,6 @@ namespace ZL
|
|||||||
localVerticesBoneWeight[i][j].weight = localVerticesBoneWeight[i][j].weight / sumWeights;
|
localVerticesBoneWeight[i][j].weight = localVerticesBoneWeight[i][j].weight / sumWeights;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::getline(f, tempLine);//=== Animation Keyframes ===
|
std::getline(f, tempLine);//=== Animation Keyframes ===
|
||||||
@@ -376,8 +379,9 @@ namespace ZL
|
|||||||
}
|
}
|
||||||
|
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0] = floatValues[0];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0] = floatValues[0];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0 + 1 * 3] = floatValues[1];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0 + 1 * 4] = floatValues[1];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0 + 2 * 3] = floatValues[2];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0 + 2 * 4] = floatValues[2];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[0 + 3 * 4] = floatValues[3];
|
||||||
|
|
||||||
|
|
||||||
std::getline(f, tempLine);
|
std::getline(f, tempLine);
|
||||||
@@ -390,8 +394,9 @@ namespace ZL
|
|||||||
}
|
}
|
||||||
|
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1] = floatValues[0];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1] = floatValues[0];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1 + 1 * 3] = floatValues[1];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1 + 1 * 4] = floatValues[1];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1 + 2 * 3] = floatValues[2];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1 + 2 * 4] = floatValues[2];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[1 + 3 * 4] = floatValues[3];
|
||||||
|
|
||||||
std::getline(f, tempLine);
|
std::getline(f, tempLine);
|
||||||
b = tempLine.cbegin();
|
b = tempLine.cbegin();
|
||||||
@@ -403,11 +408,26 @@ namespace ZL
|
|||||||
}
|
}
|
||||||
|
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2] = floatValues[0];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2] = floatValues[0];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2 + 1 * 3] = floatValues[1];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2 + 1 * 4] = floatValues[1];
|
||||||
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2 + 2 * 3] = floatValues[2];
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2 + 2 * 4] = floatValues[2];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[2 + 3 * 4] = floatValues[3];
|
||||||
|
|
||||||
|
|
||||||
std::getline(f, tempLine);// ignore last matrix line
|
std::getline(f, tempLine);
|
||||||
|
b = tempLine.cbegin();
|
||||||
|
e = tempLine.cend();
|
||||||
|
floatValues.clear();
|
||||||
|
while (std::regex_search(b, e, match, pattern_float)) {
|
||||||
|
floatValues.push_back(std::stof(match.str()));
|
||||||
|
b = match.suffix().first;
|
||||||
|
}
|
||||||
|
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[3] = floatValues[0];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[3 + 1 * 4] = floatValues[1];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[3 + 2 * 4] = floatValues[2];
|
||||||
|
animations[0].keyFrames[i].bones[boneNumber].boneMatrixWorld.m[3 + 3 * 4] = floatValues[3];
|
||||||
|
|
||||||
|
//std::getline(f, tempLine);// ignore last matrix line
|
||||||
|
|
||||||
//=============== Matrix end ==================
|
//=============== Matrix end ==================
|
||||||
|
|
||||||
@@ -471,19 +491,48 @@ namespace ZL
|
|||||||
currentBones[i].boneStartWorld.v[1] = oneFrameBones[i].boneStartWorld.v[1] + t * (nextFrameBones[i].boneStartWorld.v[1] - oneFrameBones[i].boneStartWorld.v[1]);
|
currentBones[i].boneStartWorld.v[1] = oneFrameBones[i].boneStartWorld.v[1] + t * (nextFrameBones[i].boneStartWorld.v[1] - oneFrameBones[i].boneStartWorld.v[1]);
|
||||||
currentBones[i].boneStartWorld.v[2] = oneFrameBones[i].boneStartWorld.v[2] + t * (nextFrameBones[i].boneStartWorld.v[2] - oneFrameBones[i].boneStartWorld.v[2]);
|
currentBones[i].boneStartWorld.v[2] = oneFrameBones[i].boneStartWorld.v[2] + t * (nextFrameBones[i].boneStartWorld.v[2] - oneFrameBones[i].boneStartWorld.v[2]);
|
||||||
|
|
||||||
Vector4f q1 = MatrixToQuat(oneFrameBones[i].boneMatrixWorld);
|
Matrix3f oneFrameBonesMatrix;
|
||||||
Vector4f q2 = MatrixToQuat(nextFrameBones[i].boneMatrixWorld);
|
|
||||||
|
oneFrameBonesMatrix.m[0] = oneFrameBones[i].boneMatrixWorld.m[0];
|
||||||
|
oneFrameBonesMatrix.m[1] = oneFrameBones[i].boneMatrixWorld.m[1];
|
||||||
|
oneFrameBonesMatrix.m[2] = oneFrameBones[i].boneMatrixWorld.m[2];
|
||||||
|
|
||||||
|
oneFrameBonesMatrix.m[3] = oneFrameBones[i].boneMatrixWorld.m[0 + 1*4];
|
||||||
|
oneFrameBonesMatrix.m[4] = oneFrameBones[i].boneMatrixWorld.m[1 + 1*4];
|
||||||
|
oneFrameBonesMatrix.m[5] = oneFrameBones[i].boneMatrixWorld.m[2 + 1*4];
|
||||||
|
|
||||||
|
oneFrameBonesMatrix.m[6] = oneFrameBones[i].boneMatrixWorld.m[0 + 2*4];
|
||||||
|
oneFrameBonesMatrix.m[7] = oneFrameBones[i].boneMatrixWorld.m[1 + 2*4];
|
||||||
|
oneFrameBonesMatrix.m[8] = oneFrameBones[i].boneMatrixWorld.m[2 + 2*4];
|
||||||
|
|
||||||
|
Matrix3f nextFrameBonesMatrix;
|
||||||
|
|
||||||
|
nextFrameBonesMatrix.m[0] = nextFrameBones[i].boneMatrixWorld.m[0];
|
||||||
|
nextFrameBonesMatrix.m[1] = nextFrameBones[i].boneMatrixWorld.m[1];
|
||||||
|
nextFrameBonesMatrix.m[2] = nextFrameBones[i].boneMatrixWorld.m[2];
|
||||||
|
|
||||||
|
nextFrameBonesMatrix.m[3] = nextFrameBones[i].boneMatrixWorld.m[0 + 1 * 4];
|
||||||
|
nextFrameBonesMatrix.m[4] = nextFrameBones[i].boneMatrixWorld.m[1 + 1 * 4];
|
||||||
|
nextFrameBonesMatrix.m[5] = nextFrameBones[i].boneMatrixWorld.m[2 + 1 * 4];
|
||||||
|
|
||||||
|
nextFrameBonesMatrix.m[6] = nextFrameBones[i].boneMatrixWorld.m[0 + 2 * 4];
|
||||||
|
nextFrameBonesMatrix.m[7] = nextFrameBones[i].boneMatrixWorld.m[1 + 2 * 4];
|
||||||
|
nextFrameBonesMatrix.m[8] = nextFrameBones[i].boneMatrixWorld.m[2 + 2 * 4];
|
||||||
|
|
||||||
|
Vector4f q1 = MatrixToQuat(oneFrameBonesMatrix);
|
||||||
|
Vector4f q2 = MatrixToQuat(nextFrameBonesMatrix);
|
||||||
Vector4f q1_norm = q1.normalized();
|
Vector4f q1_norm = q1.normalized();
|
||||||
Vector4f q2_norm = q2.normalized();
|
Vector4f q2_norm = q2.normalized();
|
||||||
|
|
||||||
Vector4f result = slerp(q1_norm, q2_norm, t);
|
Vector4f result = slerp(q1_norm, q2_norm, t);
|
||||||
|
|
||||||
currentBones[i].boneMatrixWorld = QuatToMatrix(result);
|
Matrix3f boneMatrixWorld3 = QuatToMatrix(result);
|
||||||
|
|
||||||
//skinningMatrixForEachBone[i] = MultMatrixMatrix(currentBones[i].boneMatrixWorld, InverseMatrix(animations[0].keyFrames[0].bones[i].boneMatrixWorld));
|
currentBones[i].boneMatrixWorld = MakeMatrix4x4(boneMatrixWorld3, currentBones[i].boneStartWorld);
|
||||||
|
|
||||||
Matrix4f currentBoneMatrixWorld4 = MakeMatrix4x4(currentBones[i].boneMatrixWorld, currentBones[i].boneStartWorld);
|
Matrix4f currentBoneMatrixWorld4 = currentBones[i].boneMatrixWorld;
|
||||||
Matrix4f startBoneMatrixWorld4 = MakeMatrix4x4(animations[0].keyFrames[0].bones[i].boneMatrixWorld, animations[0].keyFrames[0].bones[i].boneStartWorld);
|
Matrix4f startBoneMatrixWorld4 = animations[0].keyFrames[0].bones[i].boneMatrixWorld;
|
||||||
|
|
||||||
Matrix4f inverstedStartBoneMatrixWorld4 = InverseMatrix(startBoneMatrixWorld4);
|
Matrix4f inverstedStartBoneMatrixWorld4 = InverseMatrix(startBoneMatrixWorld4);
|
||||||
|
|
||||||
skinningMatrixForEachBone[i] = MultMatrixMatrix(currentBoneMatrixWorld4, inverstedStartBoneMatrixWorld4);
|
skinningMatrixForEachBone[i] = MultMatrixMatrix(currentBoneMatrixWorld4, inverstedStartBoneMatrixWorld4);
|
||||||
@@ -496,13 +545,19 @@ namespace ZL
|
|||||||
{
|
{
|
||||||
currentBones[i].boneStartWorld = oneFrameBones[i].boneStartWorld;
|
currentBones[i].boneStartWorld = oneFrameBones[i].boneStartWorld;
|
||||||
currentBones[i].boneMatrixWorld = oneFrameBones[i].boneMatrixWorld;
|
currentBones[i].boneMatrixWorld = oneFrameBones[i].boneMatrixWorld;
|
||||||
Matrix4f currentBoneMatrixWorld4 = MakeMatrix4x4(currentBones[i].boneMatrixWorld, currentBones[i].boneStartWorld);
|
//Matrix4f currentBoneMatrixWorld4 = MakeMatrix4x4(currentBones[i].boneMatrixWorld, currentBones[i].boneStartWorld);
|
||||||
Matrix4f startBoneMatrixWorld4 = MakeMatrix4x4(animations[0].keyFrames[0].bones[i].boneMatrixWorld, animations[0].keyFrames[0].bones[i].boneStartWorld);
|
//Matrix4f startBoneMatrixWorld4 = MakeMatrix4x4(animations[0].keyFrames[0].bones[i].boneMatrixWorld, animations[0].keyFrames[0].bones[i].boneStartWorld);
|
||||||
|
Matrix4f currentBoneMatrixWorld4 = currentBones[i].boneMatrixWorld;
|
||||||
|
Matrix4f startBoneMatrixWorld4 = animations[0].keyFrames[0].bones[i].boneMatrixWorld;
|
||||||
Matrix4f inverstedStartBoneMatrixWorld4 = InverseMatrix(startBoneMatrixWorld4);
|
Matrix4f inverstedStartBoneMatrixWorld4 = InverseMatrix(startBoneMatrixWorld4);
|
||||||
skinningMatrixForEachBone[i] = MultMatrixMatrix(currentBoneMatrixWorld4, inverstedStartBoneMatrixWorld4);
|
skinningMatrixForEachBone[i] = MultMatrixMatrix(currentBoneMatrixWorld4, inverstedStartBoneMatrixWorld4);
|
||||||
|
|
||||||
}
|
if (i == 10)
|
||||||
*/
|
{
|
||||||
|
std::cout << i << std::endl;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
|
||||||
for (int i = 0; i < mesh.PositionData.size(); i++)
|
for (int i = 0; i < mesh.PositionData.size(); i++)
|
||||||
{
|
{
|
||||||
Vector4f originalPos = {
|
Vector4f originalPos = {
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ namespace ZL
|
|||||||
{
|
{
|
||||||
Vector3f boneStartWorld;
|
Vector3f boneStartWorld;
|
||||||
float boneLength;
|
float boneLength;
|
||||||
Matrix3f boneMatrixWorld;
|
Matrix4f boneMatrixWorld;
|
||||||
// boneVector = boneLength * (0, 1, 0) â îñÿõ áëåíäåðà
|
// boneVector = boneLength * (0, 1, 0) â îñÿõ áëåíäåðà
|
||||||
// Then multiply by boneMatrixWorld è âû ïîëó÷èòå êîíå÷íóþ òî÷êó
|
// Then multiply by boneMatrixWorld è âû ïîëó÷èòå êîíå÷íóþ òî÷êó
|
||||||
|
|
||||||
|
|||||||
@@ -53,8 +53,10 @@ void GameObjectManager::initialize() {
|
|||||||
preloadedRoomMeshArr[0].Move(Vector3f{ 0, 93, 0 });
|
preloadedRoomMeshArr[0].Move(Vector3f{ 0, 93, 0 });
|
||||||
|
|
||||||
|
|
||||||
violaIdleModel.LoadFromFile("./idleviola001.txt");
|
//violaIdleModel.LoadFromFile("./idleviola001.txt");
|
||||||
violaWalkModel.LoadFromFile("./walkviolla001.txt");
|
violaIdleModel.LoadFromFile("./idleviola008.txt");
|
||||||
|
|
||||||
|
violaWalkModel.LoadFromFile("./walkviola008.txt");
|
||||||
sideThreadLoadingCompleted = true;
|
sideThreadLoadingCompleted = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -250,7 +252,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
case SDLK_LEFT:
|
case SDLK_LEFT:
|
||||||
case SDLK_a:
|
case SDLK_a:
|
||||||
Environment::leftPressed = true;
|
Environment::leftPressed = true;
|
||||||
audioPlayerAsync.playSoundAsync("Звук-Идут-по-земле.ogg"); // Заменено
|
audioPlayerAsync.playSoundAsync("walk.ogg"); // Заменено
|
||||||
if (Environment::violaCurrentAnimation == 0) {
|
if (Environment::violaCurrentAnimation == 0) {
|
||||||
Environment::violaCurrentAnimation = 1;
|
Environment::violaCurrentAnimation = 1;
|
||||||
Environment::violaLastWalkFrame = -1;
|
Environment::violaLastWalkFrame = -1;
|
||||||
@@ -259,7 +261,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
case SDLK_RIGHT:
|
case SDLK_RIGHT:
|
||||||
case SDLK_d:
|
case SDLK_d:
|
||||||
Environment::rightPressed = true;
|
Environment::rightPressed = true;
|
||||||
audioPlayerAsync.playSoundAsync("Звук-Идут-по-земле.ogg"); // Заменено
|
audioPlayerAsync.playSoundAsync("walk.ogg"); // Заменено
|
||||||
if (Environment::violaCurrentAnimation == 0) {
|
if (Environment::violaCurrentAnimation == 0) {
|
||||||
Environment::violaCurrentAnimation = 1;
|
Environment::violaCurrentAnimation = 1;
|
||||||
Environment::violaLastWalkFrame = -1;
|
Environment::violaLastWalkFrame = -1;
|
||||||
@@ -268,7 +270,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
case SDLK_UP:
|
case SDLK_UP:
|
||||||
case SDLK_w:
|
case SDLK_w:
|
||||||
Environment::upPressed = true;
|
Environment::upPressed = true;
|
||||||
audioPlayerAsync.playSoundAsync("Звук-Идут-по-земле.ogg"); // Заменено
|
audioPlayerAsync.playSoundAsync("walk.ogg"); // Заменено
|
||||||
if (Environment::violaCurrentAnimation == 0) {
|
if (Environment::violaCurrentAnimation == 0) {
|
||||||
Environment::violaCurrentAnimation = 1;
|
Environment::violaCurrentAnimation = 1;
|
||||||
Environment::violaLastWalkFrame = -1;
|
Environment::violaLastWalkFrame = -1;
|
||||||
@@ -277,7 +279,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
|
|||||||
case SDLK_DOWN:
|
case SDLK_DOWN:
|
||||||
case SDLK_s:
|
case SDLK_s:
|
||||||
Environment::downPressed = true;
|
Environment::downPressed = true;
|
||||||
audioPlayerAsync.playSoundAsync("Звук-Идут-по-земле.ogg"); // Заменено
|
audioPlayerAsync.playSoundAsync("walk.ogg"); // Заменено
|
||||||
if (Environment::violaCurrentAnimation == 0) {
|
if (Environment::violaCurrentAnimation == 0) {
|
||||||
Environment::violaCurrentAnimation = 1;
|
Environment::violaCurrentAnimation = 1;
|
||||||
Environment::violaLastWalkFrame = -1;
|
Environment::violaLastWalkFrame = -1;
|
||||||
@@ -451,6 +453,7 @@ void GameObjectManager::updateScene(size_t ms) {
|
|||||||
|
|
||||||
if (Environment::violaCurrentAnimation == 0) {
|
if (Environment::violaCurrentAnimation == 0) {
|
||||||
Environment::violaCurrentIdleFrame += ms / 24.f;
|
Environment::violaCurrentIdleFrame += ms / 24.f;
|
||||||
|
//Environment::violaCurrentIdleFrame = 0;
|
||||||
|
|
||||||
while (Environment::violaCurrentIdleFrame >= 40) {
|
while (Environment::violaCurrentIdleFrame >= 40) {
|
||||||
Environment::violaCurrentIdleFrame -= 40;
|
Environment::violaCurrentIdleFrame -= 40;
|
||||||
|
|||||||
+2
-1
@@ -61,7 +61,6 @@ void RenderSystem::drawViola(GameObjectManager& gameObjects)
|
|||||||
renderer.TranslateMatrix({ 0,0, -100 * Environment::zoom });
|
renderer.TranslateMatrix({ 0,0, -100 * Environment::zoom });
|
||||||
|
|
||||||
renderer.RotateMatrix(QuatFromRotateAroundX(Environment::cameraAlpha));
|
renderer.RotateMatrix(QuatFromRotateAroundX(Environment::cameraAlpha));
|
||||||
//renderer.RotateMatrix(QuatFromRotateAroundY(Environment::cameraPhi));
|
|
||||||
|
|
||||||
//Go a little bit up to make camera at the position of Viola
|
//Go a little bit up to make camera at the position of Viola
|
||||||
renderer.TranslateMatrix({ 0, Environment::cameraDefaultVerticalShift, 0 });
|
renderer.TranslateMatrix({ 0, Environment::cameraDefaultVerticalShift, 0 });
|
||||||
@@ -70,6 +69,7 @@ void RenderSystem::drawViola(GameObjectManager& gameObjects)
|
|||||||
//Viola stuff
|
//Viola stuff
|
||||||
renderer.ScaleMatrix(10);
|
renderer.ScaleMatrix(10);
|
||||||
renderer.RotateMatrix(QuatFromRotateAroundX(-M_PI / 2.0));
|
renderer.RotateMatrix(QuatFromRotateAroundX(-M_PI / 2.0));
|
||||||
|
renderer.RotateMatrix(QuatFromRotateAroundZ(M_PI));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -123,6 +123,7 @@ void RenderSystem::drawWorld(GameObjectManager& gameObjects) {
|
|||||||
|
|
||||||
drawViola(gameObjects);
|
drawViola(gameObjects);
|
||||||
|
|
||||||
|
|
||||||
renderer.shaderManager.PushShader(hideCamShaderName);
|
renderer.shaderManager.PushShader(hideCamShaderName);
|
||||||
renderer.RenderUniform1i(textureUniformName, 0);
|
renderer.RenderUniform1i(textureUniformName, 0);
|
||||||
|
|
||||||
|
|||||||
+17612
File diff suppressed because it is too large.
Load diff
+18795
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user