Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 14:51   #1
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию Поворот куба. Матрицы. DirectX.

Создаю куб функцией D3DXCreateBox. Хочу чтобы он постоянно вертелся. Для того чтобы постоянно не писать строк десять я создал функцию.

Код:
function  RotationObject(x,y,z : single) : hresult;
var
 WorldMatrix:  TD3DMatrix;
 WorldMatrixX: TD3DMatrix;
 WorldMatrixY: TD3DMatrix;
 WorldMatrixZ: TD3DMatrix;
begin
 D3DXMatrixRotationX(WorldMatrixX, x);
 D3DXMatrixRotationY(WorldMatrixY, y);
 D3DXMatrixRotationZ(WorldMatrixZ, z);
 D3DXMatrixMultiply(WorldMatrix, WorldMatrixX, WorldMatrixY);
 D3DXMatrixMultiply(WorldMatrix, WorldMatrix, WorldMatrixZ);
 FD3DDevice.SetTransform(D3DTS_WORLD, WorldMatrix);
end;
Вызываю через таймер:

Код:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Inc(x);
RotationObject(GradToRad(x),GradToRad(5),GradToRad(5));
DrawScene;
end;
Когда запускаю, происходит нечто странное - куб как-то постепенно расширяется, и каким-то не таким становится. Я вроде как делаю всё правильно.
[/CODE]

Последний раз редактировалось Crivel; 10.06.2010 в 16:22.
Crivel вне форума Ответить с цитированием
Старый 10.06.2010, 16:12   #2
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Интересно, вот я уже в этом разделе создал две темы - вчера насчёт куба, как его раскрасить. Так вот - мне не кто не обязан помогать, но что самое чудное, это то что эту тему просмотрели 10 человек, ту которую я создал вчера - 37. Возникает вопрос - почему просто нельзя дать ссылку или написать где я ошибся и понял где копать. Повторяю: мне не кто не обязан помогать, мне не нужен готовый код, мне просто надо понять где и что я не так делаю. Или что моя проблема не разрешима? Я гуглил и не нашёл нечего путного. Кроме того мне щас наверно дадут карту за флуд, хотя это не флуд, а правда.
Crivel вне форума Ответить с цитированием
Старый 10.06.2010, 16:17   #3
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Я до такого уровня ещё не дошла, но у меня возник вопрос в этой строке:
Код:
RotationObject(GradToRad(x),5,5);
ведь х нарашивается с течением времени?
Ol'ga_new вне форума Ответить с цитированием
Старый 10.06.2010, 16:23   #4
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Правильно - ведь в таймере написано:
Inc(x);

А в параметрах как раз стоит x.

Дело в том у меня куб смазывается, а не поворачивается.
Crivel вне форума Ответить с цитированием
Старый 10.06.2010, 17:13   #5
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Цитата:
Возникает вопрос - почему просто нельзя дать ссылку или написать где я ошибся и понял где копать.
Просто те кто смотрел, не писали под директ икс. и я не писал. Погуглил. Вероятно вы неправильно перемножатете матрицы. Может их вообще ненадо перемножать? Уберите перемноженире, или добавте
D3DXMatrixMultiply(WorldMatrix, WorldMatriY, WorldMatrixZ);
подпись
liljon вне форума Ответить с цитированием
Старый 10.06.2010, 17:30   #6
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Цитата:
Сообщение от liljon Посмотреть сообщение
Просто те кто смотрел, не писали под директ икс. и я не писал. Погуглил. Вероятно вы неправильно перемножатете матрицы. Может их вообще ненадо перемножать? Уберите перемноженире, или добавте
D3DXMatrixMultiply(WorldMatrix, WorldMatriY, WorldMatrixZ);
Не помогло. Пробовал и так и так. Я тоже гуглил, но не нашёл нечего. Я примеры находил, у меня даже книжка есть, всё равно не работает.

Вот что получается:
(во вложении)

Цитата:
Просто те кто смотрел, не писали под директ икс
Я же в названии темы написал: DirectX.
Изображения
Тип файла: jpg Sem tГ*tulo.jpg (39.1 Кб, 155 просмотров)
Тип файла: jpg Sem tГ*tulo2.jpg (41.8 Кб, 148 просмотров)

Последний раз редактировалось Beermonza; 10.06.2010 в 19:34.
Crivel вне форума Ответить с цитированием
Старый 10.06.2010, 18:54   #7
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Может потому что информации мало в ваших вопросах.
Поэтому может и не отвечает никто.

1. Что за функция DrawScene?
2. Какой период таймера?
3. Где вообще код?

Скрины совершенно непонятные.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 10.06.2010, 19:17   #8
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Цитата:
1. Что за функция DrawScene?
Код:
function DrawScene : hresult;
begin
FD3DDevice.BeginScene;
Cube.DrawSubset(0);
FD3DDevice.EndScene;
FD3DDevice.Present(nil,nil,0,nil);
end;
Цитата:
2. Какой период таймера?
1 мс


Куб создаётся так:

Код:
D3DXCreateBox(FD3DDevice, Width, Height, Depth, Cube, 0);
Crivel вне форума Ответить с цитированием
Старый 10.06.2010, 19:38   #9
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
1 мс
т.е. за одну секунду он поворачивается чуть менее чем на три оборота?
Попробуйте какое нибудь адекватное время поставить. Например мс 20-30.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 10.06.2010, 19:57   #10
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Можно весь код посмотреть?
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот матрицы на 90 градусов Альбиша Помощь студентам 2 26.05.2010 01:19
Поворот матрицы на 90 гладусов и кое-что еще... Vlad89 Помощь студентам 0 25.12.2009 09:40
MatLab - поворот матрицы heavenly Помощь студентам 0 01.11.2009 15:00
СОЗДАНИЕ 3d КУБА Sergeu Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 13.02.2009 07:31
Поворот матрицы Cartman18 Помощь студентам 2 07.02.2008 11:11