![]() |
Преобразование координат в D3D
Т.к я щас пишу свой графический движок, а опыта работы с D3D у меня маловато то ессесно возникла глупая(а мож и нет )проблема преобразования координат:wallbash: . Знач юзаю я функция SetTransform(D3DTS_WORLD,&matrix).матрица работы с объектом (вращение , движение) создается при помощи вот этой функции:
void RotateMatrixOnAxis(D3DXMATRIX *matWorld, D3DXVECTOR3 vPos, D3DXVECTOR3 vAxs, float fRad ) { if( matWorld != NULL ) { // это положение матрицы D3DXVECTOR3 vDist = D3DXVECTOR3( matWorld->_41, matWorld->_42, matWorld->_43 ); // получаем смещение относительно О vDist -= vPos; // матрица такая же как и изменяемая D3DXMATRIX mWorldO = *matWorld; // только смещаем на полученный вектор //ChangeMatrixPosition( &mWorldO, vDist ); mWorldO._41=vDist.x; mWorldO._42=vDist.y; mWorldO._43=vDist.z; // получаем матрицу поворота относительно оси D3DXMATRIX Out; D3DXMatrixIdentity( &Out ); D3DXMatrixRotationAxis( &Out, &vAxs, fRad ); // получаем повернутую матрицу, но не смещенную D3DXMatrixMultiply( &mWorldO, &mWorldO, &Out ); // вращение вокруг центра координат // прибавляем позицию, вокруг которой вроде как крутили - получаем итоговую матрицу mWorldO._41 += vPos.x; mWorldO._42 += vPos.y; mWorldO._43 += vPos.z; // передаем *matWorld = mWorldO; } }; так вот беда в том что когда я применяю матрицу, например к кубу, то куб едет вперед, а вращается вокруг своей собственной оси, а мне надо так, чтобы повернули куб и он поехал в ту сторону, куды повернули. А он отказывается! Муд*лко!:wild::wallbash: в чем трабла так и не понял. мож кто подскажет способ решения проблемы. ну или на крайняк мона ссылки дать плиз помогите:dontknow: :dontknow: :dontknow: |
Ответ: Преобразование координат в D3D
Могу только намикнуть где искать решение в твоем случае:)
Dreamotion3D... |
Re: Преобразование координат в D3D
Не выход,. ну че кто-нибудь в состоянии помочь? или булка помирает? ау!
|
Часовой пояс GMT +4, время: 04:02. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot