Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
#1

DirectX направленное движение - C++

05.11.2012, 13:34. Просмотров 684. Ответов 6
Метки нет (Все метки)

Доброго дня! Пишу автосимулятор на DirectX 9, и вот сейчас я встал на одном моменте
мне нужно чтобы кубик, который впоследствии будет заменён на машинку двигался ну собственно как машинка
помогите пожалуйста!
понятно что движение осуществлять D3DXMatrixTranslation, a поворот D3DXMatrixRotationY, но как их блин связать вместе...
Заранее благодарю за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 13:34     DirectX направленное движение
Посмотрите здесь:

Проблемы с MipMap DirectX - C++
Задача следующая: Есть некоторая текстура, в реалтейма ее содержимое меняется, путем копирования памяти из подкачки, непосредственно в...

C++ Графика (MS DirectX SDK) - C++
На сайте я прочитал, что MS DirectX SDK - это как доп. утилита для С++. Хотел спросить, ее ставят на Билдер или куда-то еще?

Посоветуйте пожалуйста уроки по opengl и directx 12 - C++
Я хочу стать игровым программистом и хочу чтоб уроки были не очень сложные потому что я весь день искал уроки по directx 12 и не нашёл

Массивы Функций. DirectX 11. Отобразить несколько моделей - C++
Всем привет, продолжаю пытаться изучать DirectX 11. Возникла задача отобразить более одной разной модели. Есть такая штука ...

Когда WINAPI/DirectX избавится от legacy безобразия? - C++
Всем привет. В последнее время приходится привыкать к исконно виндовым инструментам разработки, то есть visual studio, DirectxAPI,...

Увеличение скорости загрузки из файла obj мешей в Directx - C++
Пробую написать свой класс для загрузки .obj мешей в Directx. Идея в 2 функциях: Первая(Convert_Obj) конвертирует стандартный формат...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
05.11.2012, 13:44     DirectX направленное движение #2
Перемножить матрицы вместе? :-)
Тебе стоит почитать какую-нибудь книжку по компьютерной графике или пройти онлайн курс, который все поставит по местам.
Например вот этот: https://www.edx.org/courses/Berkeley....1x/2012_Fall/
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
05.11.2012, 14:52  [ТС]     DirectX направленное движение #3
Занимаюсь по книжке "Введение в программирование трёхмерных игр с DirectX9" ))

вот что накропал

создаю кубик
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
D3DXMATRIX mat;//матрица мира конечная
D3DXMATRIX matRot;//матрица поворота
ID3DXMesh* Object = 0;
D3DXVECTOR3 pos(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 look(0, 0,  20.0f);
 
D3DXCreateBox(
        Device,
        4.0f, 
        4.0f,
        4.0f,
        &Object,
        0
        );
значит ввод пользователя
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
if( ::GetAsyncKeyState(VK_UP) & 0x8000f )
        {
            pos += D3DXVECTOR3(look.x, 0, look.z) * timeDelta;
            D3DXMatrixTranslation(&mat, pos.x, pos.y, pos.z);
        }
            
 
        if( ::GetAsyncKeyState(VK_DOWN) & 0x8000f )
        {
            pos += D3DXVECTOR3(look.x, 0, look.z) * -timeDelta;
            D3DXMatrixTranslation(&mat, pos.x, pos.y, pos.z);
        }
            
 
        if( ::GetAsyncKeyState(VK_LEFT) & 0x8000f )
        {
            D3DXMatrixRotationY(&matRot, timeDelta);
            D3DXMatrixMultiply(&mat, &matRot, &mat );
            D3DXVec3TransformCoord(&look,&look, &matRot);
        }
            
            
        if( ::GetAsyncKeyState(VK_RIGHT) & 0x8000f )
        {
            D3DXMatrixRotationY(&matRot, -timeDelta);
            D3DXMatrixMultiply(&mat, &matRot, &mat );
            D3DXVec3TransformCoord(&look,&look, &matRot);
        }
//рисую куб
Device->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0);
        Device->BeginScene();
        
        Device->SetTransform(D3DTS_WORLD, &mat);
        Object->DrawSubset(0);
 
        Device->EndScene();
        Device->Present(0, 0, 0, 0);
но получается как то по дурацки - клавишами влево - вправо он поворачивается,
но при нажатии вперёд назад он разворачивается как был и движется в сторону куда он повернулся после клавиш влево - вправо...
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
05.11.2012, 15:13     DirectX направленное движение #4
По поводу влево-вправо - это лишь вопрос того, что вращается, камера вокруг объекта, или объект вокруг своей оси.
По поводу вперед-назад - ничего не понял.
Тебе точно нужно пройти эти лекции что я линканул либо какой-то аналог, так отлично объясняется начинка и смысл всех этих матричных операций.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
05.11.2012, 16:23  [ТС]     DirectX направленное движение #5
посмотрю эти лекции посмотрю))
камера на месте, объект движется

Добавлено через 24 минуты
вроде же можно (или нужно) переносить объект в начало координат - повернуть его и вернуть на место...

Добавлено через 2 минуты
как то так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        if( ::GetAsyncKeyState(VK_LEFT) & 0x8000f )
        {
            D3DXMatrixTranslation(&mat, -pos.x, -pos.y, -pos.z);
            Device->SetTransform(D3DTS_WORLD, &mat);//перенёс
 
            D3DXMatrixRotationY(&matRot, timeDelta);
            Device->SetTransform(D3DTS_WORLD, &matRot);//повернул
 
            D3DXMatrixTranslation(&mat, pos.x, pos.y, pos.z);
            Device->SetTransform(D3DTS_WORLD, &mat);//обратно перенёс
 
            D3DXMatrixMultiply(&mat, &matRot, &mat );//перемножение тут надо?
            D3DXVec3TransformCoord(&look,&look, &matRot);
            
        }
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
05.11.2012, 16:41     DirectX направленное движение #6
Я не знаю, что ты хочешь сделать, но делаешь ты явно что-то не то.
Обычно сначала совершается поворот а затем перенос, а зачем ты обратно переносишь то?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2012, 17:43     DirectX направленное движение
Еще ссылки по теме:

Как узнать с помощью DirectX о положении колёсика мыши? - C++
Как узнать с помощью DirectX о положении колёсика мыши?

Где взять DirectX 7 SDK Headers & Libraries? - C++
У кого нить есть? Или где взять? И скоко они весят?

Какие темы нужно знать, чтобы начать работать с DirectX - C++
День добрый! Прочитал уже почти 3 книги "для начинающих", множество статей, немного умею работать с WinAPI, пробую сам писать простые...

Есть ли возможность использовать GPU, не использую OpenGL или DirectX - C++
Есть ли возможность использовать GPU, не использую OpenGL или DirectX? Мне хотелось бы послать на GPU z-буфер или, хотя бы, его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
05.11.2012, 17:43  [ТС]     DirectX направленное движение #7
вот был я в начале координат - отьехал вперёд - теперь поворачиваю
и вроде бы можно(нужно ) перенести объект обратно в начало координат повернуть , вернуть в точку куда отъехали и двигаться дальше...
Yandex
Объявления
05.11.2012, 17:43     DirectX направленное движение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru