![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GLScene GLNavigator косяк. Кто сталкивался? [Delphi, GLScene, Windows]
КиТаЯц © (2004-06-18 10:51:00)Значит так. Налепил мне приятель SMD моделей. Загружаю в GLScene - они все "мордой вниз". Говорю типа "поверни правильно"; он отвечает, что типа это у них, дизайнеров, головняк. Ладно, будем сами поворачивать
procedure TMainForm.CheckBox7Click(Sender: TObject);
begin
if GLActor <> nil then begin
with GLActor do
if CheckBox7.Checked
then begin // повернутая
Up.z:=-1; Up.y:=0; Up.x:=0;
GLNavigator.UseVirtualUp:= True; //!!!!!!!!!!!!!!!!!!
end
else begin // по умолчанию
Up.z:=0; Up.y:=1; Up.x:=0;
GLNavigator.UseVirtualUp:= False;
end;
end;
end;
Чтобы модель правильно двигалась в свойствах навигатора стоИтGLNavigator.VirtualUp.Y:=1;
Далее...
procedure TMainForm.SpeedButton7Click(Sender: TObject);
begin
if GLNavigator.MovingObject <> nil then
GLNavigator.MoveForward(10);
end;
Так вот, если модель загружена "по умолчанию", то все ОК. Жмем на кнопку - модель движется башкой вперед по оси Z. А вот при включенномGLNavigator.UseVirtualUpкуда-то улетает. Проверка
procedure TMainForm.GLSceneViewerDblClick(Sender: TObject);
begin
if GLActor <> nil then begin
showmessage(
'GLActor.Position.X = '+Floattostr(GLActor.Position.X)+#13+
'GLActor.Position.Y = '+Floattostr(GLActor.Position.Y)+#13+
'GLActor.Position.Z = '+Floattostr(GLActor.Position.Z)
);
showmessage(
'GLActor.Position.X = '+inttostr(round(GLActor.Position.X))+#13+
'GLActor.Position.Y = '+inttostr(round(GLActor.Position.Y))+#13+
'GLActor.Position.Z = '+inttostr(round(GLActor.Position.Z))
);
end;
end;
возвращает в первом сообщениии NANво втором -9223372036851775808%( ПричемTurnHorizontalработает нормально. Кто с подобным косяком сталкивался? В чем дело?
КиТаЯц (2004-06-21 13:15:00) [1]2 kerby © (21.06.04 11:07) [3]
Отправил...
kerby (2004-06-21 11:07:00) [2]кинь на мыло модель , моно с кодом проги разберемся
КиТаЯц (2004-06-18 13:27:00) [3]GlActor.Direction 0 1 0
GlNavigator.VirtualUp 0 1 0
GLNavigator.MoveForward(10); // ошибка
kerby (2004-06-18 13:07:00) [4]Даешь параметры
GlActor.Direction(x,y,z)
GlNavigator.VirtualUp(x,y,z)