Сделана статичная камера и перемещение. Посмотреть пример работы можно тут:
http://zed.rmap.ru/files/mooving3d.zip
среда, 16 апреля 2008 г.
вторник, 15 апреля 2008 г.
Необходимо сделать
Перед началом реализации клиент-сервер приложения необходимо сделать некоторую часть клиента.
1. Сделать статичную камеру.
2. Сделать перемещение камеры по клику мыши.
3. Продумать и определить структуру карты галактики.
1. Сделать статичную камеру.
2. Сделать перемещение камеры по клику мыши.
3. Продумать и определить структуру карты галактики.
Задний фон
Космичиские величины

В игре "Космические рейнджеры" использовался масштаб кораблей к планетам 3/1 (2 корабля = 1 планете). Естественно это не верно, но для динамичной Аркадо-стратегии это подойдет.
3D Движок

В Качестве 3D двигателя для проекта будет использован IrrlichtNETCP.
Адрес проекта: http://irrlichtnetcp.sourceforge.net/wiki/index.php/Main_Page
Как надо рисовать Двигатели у кароблей
Вот тут показано как надо рисовать двигатели у кароблей:
http://www.linux.org.ru/gallery/bigBng5Sv.png
http://www.linux.org.ru/gallery/bigBng5Sv.png
Координаты
Долго бились над переводом координат из 3-х мерной системы в 2-у мерную и обратно.
И Вот наконец-то!
И Вот наконец-то!
/// Расчет проэкции точки экрана на плоскость z=0
Matrix4 camProjectionMatrix,Matrix4 camViewMatrix,Dimension2D screenSize)
{
Vector3D vPickRayDir;
Vector3D vPickRayOrig;
Matrix4 m = camViewMatrix;
m.MakeInverse();
vPickRayDir.X = vX * m.GetM(0, 0) + vY * m.GetM(1, 0) + vZ * m.GetM(2, 0);
vPickRayDir.Y = vX * m.GetM(0, 1) + vY * m.GetM(1, 1) + vZ * m.GetM(2, 1);
vPickRayDir.Z = vX * m.GetM(0, 2) + vY * m.GetM(1, 2) + vZ * m.GetM(2, 2);
vPickRayOrig.X = camPosition.X;
vPickRayOrig.Y = camPosition.Y;
vPickRayOrig.Z = camPosition.Z;
float t = -vPickRayOrig.Z / vPickRayDir.Z;
float Px = vPickRayOrig.X + vPickRayDir.X * t;
float Py = vPickRayOrig.Y + vPickRayDir.Y * t;
return new Vector3D(Px, Py, 0);
}
Подписаться на:
Сообщения (Atom)