![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как в GLScene осуществить полет пули?
vivk © (2003-01-23 19:46:00)Сабж?
Интересует как узнать куда смотрит камера?
На какой угол она повернута, или тут другим способом это делается?
pifpaf (2003-01-28 19:18:00) [1]Да и отвязывать не обязательно. Пусть летит в координатах камеры.
pifpaf (2003-01-28 19:18:00) [2]Тормознул. :(
vivk (2003-01-28 09:38:00) [3]Аууу
SSS
Как это сделать, дай пример.
vivk (2003-01-24 18:13:00) [4]SSS
А как это сделать?
Пример плиз
SSS (2003-01-24 17:44:00) [5]Zachem tebe знать куда смотрит камера? Prosto privjazhi pulu k kamere i kogda budesh strelat", ovjazhi ee ot kameri i pust" ona postupatel"no po osi letit.
MRB_SPB (2003-01-24 11:47:00) [6]P.S. 1. Незабудь вернуть матрицу назад в модель виев
2. не считай это для каждой пули- для всех одинаково только полученые векторы FVn скалируй и перемещай
3. Для скорости эта гадась перещитывается только на поворот камеры
MRB_SPB (2003-01-24 11:43:00) [7]Куда глядит камера просто - от сердца отрываю :))
function getLook_Vector:TAffineVector;
var Lk_nap:TAffineVector;
matrix:array [0..3,0..3] of glfloat;
begin
glGetfloatv(GL_PROJECTION_MATRIX, @matrix);
Lk_nap[0]:=(matrix[0][3] + matrix[0][2]);
Lk_nap[1]:=(matrix[1][3] + matrix[1][2]);
Lk_nap[2]:=(matrix[2][3] + matrix[2][2]);
Result:= VectorNormalize(Lk_nap);
end;
Пуля если решишь сделать частицой или билбордом -
где FVn - координаты которые при маштабировании по размеру пули и перемещении в нужную её координату будут рисовать её всегда направленной к камере
FV1:=VectorCrossProduct(LookVector,ZVector);
FV1:=VectorNormalize(FV1);
FV2:=VectorCrossProduct(LookVector,FV1);
FV2:=VectorNormalize(FV2);
FV3:=VectorCrossProduct(LookVector,FV2);
FV3:=VectorNormalize(FV3);
FV4:=VectorCrossProduct(LookVector,FV3);
FV4:=VectorNormalize(FV4);