Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 07.03.2014, 18:33   #31
bersercer26
AnyKey`щик
 
Регистрация: 03.03.2014
Сообщений: 16
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вращение осей координат

D3DXMATRIX T;
D3DXMATRIX R;

D3DXMatrixRotationY(&R,-80.0f);
D3DXMatrixTranslation(&T,0.0f,0.0f,45.0f);

result=R*T;
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 18:35   #32
bersercer26
AnyKey`щик
 
Регистрация: 03.03.2014
Сообщений: 16
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вращение осей координат

Мне нужно чтоб объект ездил во всех направлениях.......спасибо что отозвался
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 18:57   #33
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Вращение осей координат

Сообщение от bersercer26 Посмотреть сообщение
[IMG]C:\Users\Admin\Desktop\tgVP0njBJq8.jpg[/IMG]
Ты издеваешься да?

Хотя я в своё время принёс другу вместо игры, кучу ярлыков


Сообщение от bersercer26 Посмотреть сообщение
Что бы картинка сохранилась на форуме, она должна быть хотя бы в одном сообщение и не в тегах картинки, а в тегах прикреплённого файла.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Samodelkin (07.03.2014)
Старый 07.03.2014, 19:15   #34
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вращение осей координат

2Arton - ошиблись разделом, вам в раздел Болтовня.

/////////////////////////////////////////
// при инициализации объекта
D3DXVECTOR3 right( 1, 0, 0 );
D3DXVECTOR3 up( 0, 1, 0 );
D3DXVECTOR3 look( 0, 0, 1 );
D3DXVECTOR3 pos( 0, 0, 0 );
/////////////////////////////////////////

/////////////////////////////////////////
// В цикле
D3DXMATRIX out;

// Делаем оси ортогональными
D3DXVec3Normalize(&look, &look);

D3DXVec3Cross(&up, &look, &right);
D3DXVec3Normalize(&up, &up);

D3DXVec3Cross(&right, &up, &look);
D3DXVec3Normalize(&right, &right);

float x = -D3DXVec3Dot(&right, &pos);
float y = -D3DXVec3Dot(&up, &pos);
float z = -D3DXVec3Dot(&look, &pos);

// Строим матрицу
out._11 = right.x;
out._12 = up.x;
out._13 = look.x;
out._14 = 0.0f;

out._21 = right.y;
out._22 = up.y;
out._23 = look.y;
out._24 = 0.0f;

out._31 = right.z;
out._32 = up.z;
out._33 = look.z;
out._34 = 0.0f;

out._41 = x;
out._42 = y;
out._43 = z;
out._44 = 1.0f;

device->SetTransform( D3DTS_WORLD, &out );
/////////////////////////////////////////

/////////////////////////////////////////
// Поворот 
D3DXMATRIX result,pitchMatrix,yawMatrix,rollMatrix;
D3DXMatrixRotationAxis( &pitchMatrix, &D3DXVECTOR3( 1, 0, 0 ), pitchAngleRadians );
D3DXMatrixRotationAxis( &yawMatrix, &D3DXVECTOR3( 0, 1, 0 ), yawAngleRadians );
D3DXMatrixRotationAxis( &rollMatrix, &D3DXVECTOR3( 0, 0, 1 ), rollAngleRadians );

result = pitchMatrix * yawMatrix * rollMatrix;
D3DXVec3TransformCoord( &right, &D3DXVECTOR3( 1, 0, 0 ), &result );
D3DXVec3TransformCoord( &look, &D3DXVECTOR3( 0, 1, 0 ), &result );
D3DXVec3TransformCoord( &up, &D3DXVECTOR3( 0, 0, 1 ), &result );
/////////////////////////////////////////

/////////////////////////////////////////
// Перемещение в зависимости от направления
pos += right * xSpeed;
pos += up * ySpeed;
pos += look * zSpeed;
/////////////////////////////////////////

/////////////////////////////////////////
// Перемещение по осям
pos += xSpeed;
pos += ySpeed;
pos += zSpeed;
/////////////////////////////////////////
__________________

(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 22:06   #35
bersercer26
AnyKey`щик
 
Регистрация: 03.03.2014
Сообщений: 16
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вращение осей координат

Честно чет не могу разобраться....
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 22:08   #36
bersercer26
AnyKey`щик
 
Регистрация: 03.03.2014
Сообщений: 16
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вращение осей координат

/////////////////////////////////////////
// Поворот
D3DXMATRIX result,pitchMatrix,yawMatrix,rollMatrix;
D3DXMatrixRotationAxis( &pitchMatrix, &D3DXVECTOR3( 1, 0, 0 ), pitchAngleRadians );
D3DXMatrixRotationAxis( &yawMatrix, &D3DXVECTOR3( 0, 1, 0 ), yawAngleRadians );
D3DXMatrixRotationAxis( &rollMatrix, &D3DXVECTOR3( 0, 0, 1 ), rollAngleRadians );

result = pitchMatrix * yawMatrix * rollMatrix;
D3DXVec3TransformCoord( &right, &D3DXVECTOR3( 1, 0, 0 ), &result );
D3DXVec3TransformCoord( &look, &D3DXVECTOR3( 0, 1, 0 ), &result );
D3DXVec3TransformCoord( &up, &D3DXVECTOR3( 0, 0, 1 ), &result );
/////////////////////////////////////////

/////////////////////////////////////////
// Перемещение в зависимости от направления
pos += right * xSpeed;
pos += up * ySpeed;
pos += look * zSpeed;
/////////////////////////////////////////

/////////////////////////////////////////
// Перемещение по осям
pos += xSpeed;
pos += ySpeed;
pos += zSpeed;
/////////////////////////////////////////






Здесь поворот идет камеры, а мне надо фигуры..... можешь весь исходник кинуть, если не трудно я уже запутался.....
(Offline)
 
Ответить с цитированием
Старый 07.03.2014, 23:00   #37
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: Вращение осей координат

Здесь поворот идет камеры, а мне надо фигуры..... можешь весь исходник кинуть, если не трудно я уже запутался.....
Ты не прав. Поворот( точнее преобразование ) будет именно того что ты укажешь вызовом



device->SetTransform( ... )
Например
device->SetTransform( D3DTS_WORLD, &matrix )
Задаст преобразование которое применится к отрисовываемому объекту( device->DrawIndexedPrimitive, device->DrawPrimitive и т.д. )

Преобразование
device->SetTransform( D3DTS_VIEW, &matrix )
задает дополнительное преобразование вида( камеры ). В DirectX преобразования вынесены в отдельные матрицы, в OpenGL же есть матрицы GL_MODELVIEW - тут две матрицы( видовая и мировая ) уже объединены в одну.

Вообще же приведенный выше код будет работать и для камеры и для объекта.

Для объекта код будет таким, каким я привел его выше.

Для камеры все то же самое, только вызов

device->SetTransform( D3DTS_WORLD, &out );
Заменяется на

device->SetTransform( D3DTS_VIEW, &out );
А общий порядок операций примерно такой

device->SetTransform( D3DTS_WORLD, &worldMatrix );
device->SetTransform( D3DTS_VIEW, &viewMatrix );
device->DrawPrimitive( ... )
В таком варианте при отрисовке задействуются только что установленные матрицы.

Вообще DX и OGL это что-то типа конечного автомата( FFP часть естественно - на то она и Fixed Function Pipeline ). Тоесть задаешь какие-то определенные свойства всему конвееру и видеокарта производит отрисовку именно с такими параметрами.

И да исходника не будет, я для тебя написал приведенный выше кусок кода.

Ну вот вроде и все. Если где ошибся не серчайте.
__________________

(Offline)
 
Ответить с цитированием
Старый 08.03.2014, 10:10   #38
bersercer26
AnyKey`щик
 
Регистрация: 03.03.2014
Сообщений: 16
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вращение осей координат

Спасибо за объяснение...буду разбираться
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:17.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com