Einzelnen Beitrag anzeigen

em-sigma

Registriert seit: 8. Jul 2004
38 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Wie ruft man POVRAY aus einem Programm heraus auf ?

  Alt 30. Jul 2007, 08:32
Hallo Matthias,

ich weiß ja nicht, ob du mit den bisherigen Antworten was anfangen konntest - ich konnte es jedenfalls nicht.

Glücklicherweise habe ich dann doch noch selbst eine Lösung gefunden, die für kleine Bilder ganz gut geeignet ist.

Dazu besorgst du dir aus dem Internet zunächst einmal das MegaPOV-Paket. Da ist eine Kommando-Zeilen-Version dabei, die still und leise im Hintergrund arbeitet. MegaPOV ist mit POVRay fast identisch, enthält nur zusätzliche Features.

Der Aufruf geschieht dann wie folgt

Delphi-Quellcode:
var
   StartupInfo:TStartUpInfo;
   ProcessInfo:TProcessInformation;
begin
   ...
   FillChar(StartUpInfo,SizeOf(TStartUpInfo),0);
   StartUpInfo.cb:=SizeOf(TStartUpInfo);
   StartUpInfo.dwFlags:=STARTF_USESHOWWINDOW;
   StartUpInfo.wShowWindow:=SW_HIDE;
   If CreateProcess(nil,
                    PChar('megapov +I'+name+'.pov +W'+IntToStr(w)+' +H'+IntToStr(h)+' +A0.3 -D'),
                    nil,
                    nil,
                    false,
                    NORMAL_PRIORITY_CLASS,
                    nil,
                    nil,
                    StartUpInfo,
                    ProcessInfo) then begin
       WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
   end;
   TGAImage.LoadFromFile(name+'.tga');
   ...
end;
Sieht nicht schön aus, funktioniert aber. 'name' ist der Name der gewünschten Datei (ohne Extension). 'w' ist die Breite und 'h' die Höhe. MegaPOV erzeugt TGA-Dateien, deshalb brauchst du noch eine Unit zum Einlesen von TGA-Dateien.

Viel Spaß beim Rendern, em-sigma
Allen ist das Denken erlaubt. Vielen bleibt es erspart. (Curt Goetz)
  Mit Zitat antworten Zitat