//---------------------------------------------------------------------------------- void SkeletonAnimation::ApplyToEntity(float timePos, BoneOffsetMatrixVector& boneOffsetMatrix) { Matrix4f transform; float timeInTicks = m_ticksPerSecond * timePos; float animationTime = fmodf(timeInTicks, m_ticks - 1); transform.InitIdentity(); _calcBoneOffsetHeirarchy(animationTime, mp_skeleton->GetRootBoneNode(), transform, boneOffsetMatrix); }
void DSDirectionalLightPass() { m_DSDirLightPassTech.Enable(); m_DSDirLightPassTech.SetEyeWorldPos(m_pGameCamera->GetPos()); Matrix4f WVP; WVP.InitIdentity(); m_DSDirLightPassTech.SetWVP(WVP); m_quad.Render(); }
void Mesh::BoneTransform(float TimeInSeconds, vector<Matrix4f>& Transforms) { Matrix4f Identity; Identity.InitIdentity(); float TicksPerSecond = (float)(m_pScene->mAnimations[0]->mTicksPerSecond != 0 ? m_pScene->mAnimations[0]->mTicksPerSecond : 25.0f); float TimeInTicks = TimeInSeconds * TicksPerSecond; float AnimationTime = fmod(TimeInTicks, (float)m_pScene->mAnimations[0]->mDuration); ReadNodeHeirarchy(AnimationTime, m_pScene->mRootNode, Identity); Transforms.resize(m_NumBones); for (uint i = 0 ; i < m_NumBones ; i++) { Transforms[i] = m_BoneInfo[i].FinalTransformation; } }
bool Init() { if (!m_gbuffer.Init(WINDOW_WIDTH, WINDOW_HEIGHT)) { return false; } m_pGameCamera = new Camera(WINDOW_WIDTH, WINDOW_HEIGHT); if (!m_DSGeomPassTech.Init()) { printf("Error initializing DSGeomPassTech\n"); return false; } m_DSGeomPassTech.Enable(); m_DSGeomPassTech.SetColorTextureUnit(COLOR_TEXTURE_UNIT_INDEX); if (!m_DSPointLightPassTech.Init()) { printf("Error initializing DSPointLightPassTech\n"); return false; } m_DSPointLightPassTech.Enable(); m_DSPointLightPassTech.SetPositionTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_POSITION); m_DSPointLightPassTech.SetColorTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_DIFFUSE); m_DSPointLightPassTech.SetNormalTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_NORMAL); m_DSPointLightPassTech.SetScreenSize(WINDOW_WIDTH, WINDOW_HEIGHT); if (!m_DSDirLightPassTech.Init()) { printf("Error initializing DSDirLightPassTech\n"); return false; } m_DSDirLightPassTech.Enable(); m_DSDirLightPassTech.SetPositionTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_POSITION); m_DSDirLightPassTech.SetColorTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_DIFFUSE); m_DSDirLightPassTech.SetNormalTextureUnit(GBuffer::GBUFFER_TEXTURE_TYPE_NORMAL); m_DSDirLightPassTech.SetDirectionalLight(m_dirLight); m_DSDirLightPassTech.SetScreenSize(WINDOW_WIDTH, WINDOW_HEIGHT); Matrix4f WVP; WVP.InitIdentity(); m_DSDirLightPassTech.SetWVP(WVP); if (!m_nullTech.Init()) { return false; } if (!m_quad.LoadMesh("../Content/quad.obj")) { return false; } if (!m_box.LoadMesh("../Content/box.obj")) { return false; } if (!m_bsphere.LoadMesh("../Content/sphere.obj")) { return false; } #ifndef WIN32 if (!m_fontRenderer.InitFontRenderer()) { return false; } #endif return true; }