среда, 16 апреля 2008 г.

Статичная камера и перемещение

Сделана статичная камера и перемещение. Посмотреть пример работы можно тут:
http://zed.rmap.ru/files/mooving3d.zip

вторник, 15 апреля 2008 г.

Необходимо сделать

Перед началом реализации клиент-сервер приложения необходимо сделать некоторую часть клиента.
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

Координаты

Долго бились над переводом координат из 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);
}