static MT_Matrix3x3 RotationMatrix(MT_Scalar sine, MT_Scalar cosine, int axis) { if (axis == 0) return MT_Matrix3x3(1.0, 0.0, 0.0, 0.0, cosine, -sine, 0.0, sine, cosine); else if (axis == 1) return MT_Matrix3x3(cosine, 0.0, sine, 0.0, 1.0, 0.0, -sine, 0.0, cosine); else return MT_Matrix3x3(cosine, -sine, 0.0, sine, cosine, 0.0, 0.0, 0.0, 1.0); }
void KX_BlenderSceneConverter::resetNoneDynamicObjectToIpo() { if (addInitFromFrame) { KX_SceneList* scenes = m_ketsjiEngine->CurrentScenes(); int numScenes = scenes->size(); if (numScenes>=0) { KX_Scene* scene = scenes->at(0); CListValue* parentList = scene->GetRootParentList(); for (int ix=0;ix<parentList->GetCount();ix++) { KX_GameObject* gameobj = (KX_GameObject*)parentList->GetValue(ix); if (!gameobj->IsDynamic()) { Object* blenderobject = gameobj->GetBlenderObject(); if (!blenderobject) continue; if (blenderobject->type==OB_ARMATURE) continue; float eu[3]; mat4_to_eul(eu,blenderobject->obmat); MT_Point3 pos = MT_Point3( blenderobject->obmat[3][0], blenderobject->obmat[3][1], blenderobject->obmat[3][2] ); MT_Vector3 eulxyz = MT_Vector3( eu[0], eu[1], eu[2] ); MT_Vector3 scale = MT_Vector3( blenderobject->size[0], blenderobject->size[1], blenderobject->size[2] ); gameobj->NodeSetLocalPosition(pos); gameobj->NodeSetLocalOrientation(MT_Matrix3x3(eulxyz)); gameobj->NodeSetLocalScale(scale); gameobj->NodeUpdateGS(0); } } } } }
void MT_Transform::rotate(const MT_Quaternion& q) { m_basis *= MT_Matrix3x3(q); m_type |= ROTATION; }
MT_Matrix3x3 MT_ExpMap:: getMatrix( ) const { return MT_Matrix3x3(m_q); }