Open GL, MD3 Loader, DOT

0

Po raz kolejny zwracam się do was z prośbą o pomoć ;-P . Mam dzisiaj dość dziwną sprawę której nie mogłem rozwikłac przez kilka godzin.

Ze strony DELPHI3D.NET sciągnołem MD3 LOADERA (z przykładem zastosowania). Do jego działania potrzebnych jest tez kilka modułów znajdujących się TU.

Przy uruchamianiu skompilowanego programu otwiera nam się okno wyboru pliku do otworzenia.

OpenDlg.Filter := 'MD3 configuration files (.cfg)|*.cfg';
    OpenDlg.Title := 'Select animation.cfg file';
    if OpenDlg.Execute then namemodel := OpenDlg.FileName
    else raise Exception.Create('No model loaded.');
    myFullMD3 := TRenderableMD3.Create(OpenDlg.FileName);

Chciałem aby obiekty były ładowane automatycznie przy starcie programu więc zamieniłem podany kawałek kodu na
myFullMD3 := TRenderableMD3.Create('C:\GAME\MD3loader\Nowy folder (3)\marge\animation.cfg');
Ku mojemu zdziwieniu po tejże zamianie obiekt ładowany przestał byc wyświetlany. Powróciłem więc do wersji pierwotnej i zdebugowałem program. Jak się okazało OpenDlg.FileName='C:\GAME\MD3loader\Nowy folder (3)\marge\animation.cfg'.

Czy któs wie o co tu chodzi ?

0

zauważ że podany fragment kodu też przypisuje ścieżkę do zmiennej namemodel

0

To już brałem pod uwagę. Zmienna namemodel jest zmienną lokalną i nie występuje w żadnym innym fragmencie kodu. Uzywając 'Search>Find in files...' nie znalazłem równiez zadnego miejsca w którym występowałby 'OpenDlg'.

Oto cała procedura.

procedure TMD3Form.FormCreate(Sender: TObject);
var
  namemodel: String;
  i: Integer;
begin

  try
    Show;

    Context.QuickPF(24, 0, 24, 0);
    Context.InitGL;
//----------------------------------
 {   OpenDlg.Filter := 'MD3 configuration files (.cfg)|*.cfg';
    OpenDlg.Title := 'Select animation.cfg file';
    if OpenDlg.Execute then namemodel := OpenDlg.FileName
    else raise Exception.Create('No model loaded.');
    myFullMD3 := TRenderableMD3.Create(OpenDlg.FileName);
}  
myFullMD3 := TRenderableMD3.Create('C:\GAME\MD3loader\Nowy folder (3)\marge\animation.cfg');
//-----------------------------------
    for i := 0 to myFullMD3.NumSkins - 1 do
    begin
      lstSkins.Items.Add(myFullMD3.Skins[i]);
    end;

    SetCurrentDir(ExtractFilePath(Application.ExeName));

    glEnable(GL_DEPTH_TEST);
    glClearColor(0.75, 0.75, 0.75, 1);
    glEnable(GL_TEXTURE_2D);

    GetCursorPos(mp);
    mp := ScreenToClient(mp);

    OnResize := FormResize;
    OnPaint := FormPaint;
    OnMouseMove := FormMouseMove;
    AppEvents.OnIdle := AppEventsIdle;
    // Force FormResize() to be called, so perspective gets set up.
    Resize;
    dotStartTiming;
  except on E: Exception do
    begin
      MessageDlg(E.Message, mtError, [mbOK], 0);
      Halt(1);
    end;
  end;

end;
0

to "debuguj głębiej", wejdź w TRenderableMD3.Create i tam zobacz jakie są różnice

o ile jesteś pewien że OpenDlg.FileName = 'costam' (najlepiej to sprawdź właśnie takim warunkiem), to jedyna różnica która mogłaby mieć wpływ to to że podczas wybierania pliku przez OpenDialog zmienia się zdaje się aktywny katalog dla aplikacji

1 użytkowników online, w tym zalogowanych: 0, gości: 1