ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX



Перемещение объектов - часть 15


*pfd++ = 4;

Относительное движение тЩ!) 153

*pfd++ = nFaceVert + i*4;

*pfd++ = 0;

*pfd++ = nFaceVert + i*4+l;

*pfd++ = 0;

*pfd++ = nFaceVert + i*4+2;

*pfd++ = 0;

*pfd++ = nFaceVert + i*4+3;

*pfd++ = 0;

}

*pfd++ = teeth*2;

for (i = 0; i « teeth; i++) {

*pfd++ = nFaceVert + i*4;

*pfd++ = 0;

*pfd++ = nFaceVert + i*4+3;

*pfd++ = 0;

}

*pfd = 0;

AddFaces(Vertices, nVert, nvect, 2, FaceData);

delete [] Vertices;

delete [] FaceData;

SetColor(l, 1, 0);

}

К пастоящему моменту весь этот фрагмент должен казаться вам вполне понятным. Когда у меня будет немного свободного времени, я непременно сделаю на основе данного приложения настоящие часы с секундной, минутной и часовой стрелками, с циферблатом и маятником.

Перемещение объектов по произвольным траекториям

Конечно, объект можно перемещать по любой траектории. Для этого необходимо задать либо набор координат в пространстве, либо функцию (например, генератор сплайнов), которая строит плавную кривую для траектории, описанной несколькими точками. При каждой новой итерации вы определяете новое положение объекта и перемещаете его туда. Не забывайте, что вам также придется вычислять вектор направления объекта и, возможно, его верхний вектор (если только перемещаемый объект не является сферой).

Создание собственного контроллера движения

Перемещение объектов и полеты — это, конечно, хорошо, но что делать, если вам понадобится что-то другое? Давайте посмотрим, как создать контроллер движения для более интересного объекта — космического танка Mark VII с доплеров-ским радаром Х-диапаэона. Танк может передвигаться по поверхности планеты с различной скоростью и поворачивать на ходу. Его башня быстро вращается, а пушка

/b> в!^' Глава 6. Перемещение объектов в макете

поднимается. Кажется, я забыл упомянуть о радаре, который радостно вертится на башне? На Рисунок 6-11 изображен танк Mark VII при выполнении боевого задания.

Рисунок. 6'П. Космический танк Mark VII с доплеровским радаром Х-диапазона


Хмм... вы обратили внимание на то, что у танка нет колес? Могу предложить два объяснения:




Содержание  Назад  Вперед