스킨 메쉬를 분실)! 그래서 여기은</p> <p>드디어 GPU에 MD5와 스킨 메쉬에서 작동하는 시간을 가지고, 내가 가지 잃었어요
내가 할 것입니다 :
이 빌드 바인드 포즈 메쉬
로드 MD5MESH 파일 (이 단계가 제대로되어 - 지오메트리가 올바른지)
이와 같이 bindpose와 inverse bindpose를 만듭니다 (접합 부분은로드 된 상태로 사용되며 부모에 의해 변형되지 않으므로 필요합니까?) :
(각 프레임 관절은 다음과 같이 계산된다) 0로드 MD5ANIM 파일 :
if(mAnimation->mJoints[i].mParent < 0) { mAnimation->mFrames[mFrameID][i].mPosition = _position; mAnimation->mFrames[mFrameID][i].mOrientation = _orientation; } else { MD5FrameJoint *mParent = &mAnimation->mFrames[mFrameID][mAnimation->mJoints[i].mParent]; float4 rpos = rotate(mParent->mOrientation, _position); mAnimation->mFrames[mFrameID][i].mPosition = rpos + mParent->mPosition; mAnimation->mFrames[mFrameID][i].mOrientation = mParent->mOrientation * _orientation; }
각각의 프레임으로 현재 문제의 원인이되지 않습니다 지금 4 개 무게의 (즉, 최대처럼 뼈 매트릭스를 구축 I 간단한 모자이크 쿼드에 현장에서 불과 3 뼈가 -) 잘못 회전 :
for(unsigned int i = 0; i < this->mJoints; i++) { const mat4 mTranslate = mat4( 1, 0, 0, this->mFramePositions[mFrame][i].x, 0, 1, 0, this->mFramePositions[mFrame][i].y, 0, 0, 1, this->mFramePositions[mFrame][i].z, 0, 0, 0, 1); const mat4 mRotate = mat4(this->mFrameOrientations[mFrame][i]); this->mOutput[i] = mTranslate * mRotate; }
을 그리고 (지금 CPU에 일을 같이 정점을 계산) GPU로 이동하고 싶습니다 :
,536,913을 63,210for(unsigned int j = 0; j < mSkinnedModel->mVertexCount[i]; j++) { float4 mResult = float4(0, 0, 0, 0); float4 mPosition = float4(mSkinnedModel->mVertices[i][j].mPosition[0], mSkinnedModel->mVertices[i][j].mPosition[1], mSkinnedModel->mVertices[i][j].mPosition[2], 1.0f); for(unsigned int k = 0; k < 4; k++) { mResult += (mAnimatedBones[mSkinnedModel->mVertices[i][j].mBoneIndices[k]] * mPosition) * mSkinnedModel->mVertices[i][j].mBoneWeights[k]; } mBuffer[j].mPosition[0] = mResult.x; mBuffer[j].mPosition[1] = mResult.y; mBuffer[j].mPosition[2] = mResult.z; mBuffer[j].mPosition[3] = 1.0f; }
메쉬 + ANIM 파일입니다 (을 수출 및 3D 모델링 소프트웨어를 수입, 작품!) 올바른
지금 내 수학 라이브러리가 좋아하고 지금까지 좋은 것 같다 여부를 테스트하고 있습니다 (행렬 반전도 좋다, 쿼터니언 곱셈도, 쿼터니언 테스트를 거친 행렬 ...)
그리고 제게 어떤 기사를 가리 키지 말아주세요. 행렬 + 소스 코드가있는 GPU에서 MD5 스키닝을 사용하는 사람들)이 열었고 잘못된 점을 알아 냈으므로 지금까지 코드는 거의 내 것과 흡사합니다. 그것은 작은 작은 진절머리 나는 약간의 세부 일 것이다.
누구나 전문가의 위치를 알 수 있습니까?
MD5는 가장 일반적인 해시 알고리즘입니다. 나는 그 태그를 제거했다. – rekire