Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 12, 2025 23:29

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 09:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Dez 13, 2002 12:18
Beiträge: 1063
Das kann man dir schon erklären, anschaulicher wirds aber deswegen nicht - da muss du dich schon eine Weile selbst damit beschäftigen, wenn du noch nie mit Vektoren und Matrizen gearbeitet hast.

Punktprodukt:
Die Komponenten der Vektoren werden multipliziert, das Ergebnis entspricht: v1 · v2 = |v1| * |v2| * cos(ø), wobei ø der Winkel zwischen den Vektoren ist

Kreuzprodukt:
a × b = c

es steht c senkrecht auf a und b, und zwar so, dass a, b und c ein Rechtssystem bilden. Das Vektorprodukt ist somit anti-kommutativ; es gilt a × b = - b × a.
Der Vektor c hat die Länge

|c| = |a||b| sin ø

was der Fläche des zwischen a und b aufgespannten Parallelogramms entspricht.
Das Vektorprodukt ist nur für dreidimensionale Räume definiert und berechnet sich wie folgt:


c1 = a2b3 - a3b2 / c1 \
c2 = a3b1 - a1b3 c = | c2 |
c3 = a1b2 - a2b1 \ c3 /

Weil ich zu faul war, das Ganze selbst hinzuschreiben (steht ja auch in jedem Buch über lineare Algebra drin - und auch in den meisten Schulbüchern der oberen Stufen drin!) habe ich das Ganze aus der zweiten oder dritten Seite die von Google zum Thema aufgelistet wurden rauskopiert, was deine Aussage, dass es keine deutschen Dokus gibt glatt Lügen straft.

Evtl. solltest du dich nicht so sehr auf OpenGL Tutorials konzentrieren - klar dass es bei denen eher um OpenGL Funktionalität geht, als um die Mathematik die dahinter steckt (ich würd mich auch sauber bedanken, wenn in jedem Dokument etwa das Kreuzprodukt wieder erklärt würde), such dir lieber ein einfachen Text über Vektorrechnung und du schneidest besser ab.

_________________
Viel Spaß beim Programmieren,
Mars
http://www.basegraph.com/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 15:02 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Ich werd mir einfach ne Testapplikation machen... und dann mal nen bisserl damit rumexperimentieren.
Mit Dot Product, Cross Produkt, Angel between vectors usw.

Aber jetzt mal meine frage, was genau macht den das Radiosity Lighting eigentlich ??
Ich find nur PDF Dokumenten mit irgendwelchen Formeln... ich würd aber mal gern genau wissen, das da wirklich passiert...

Ich les dann andauernd was von Patches und so... also muss ich meine Polygone nochmal teilen in mehrere polygone ??? Was soll das für ein sinn machen ?

Eigentlich wenn man nen Radiosity Processor programmiert hat, dann hat man nen kleinen Raytraycer seh ich das richtig ???

Hmpf, viele Diplomarbeiten sind über Radiosity geschrieben worden und dann wundert ihr euch wenn nen unwissender hauptschüler nicht rafft :(

matane,
Final


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 05, 2003 15:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zitat:
Aber jetzt mal meine frage, was genau macht den das Radiosity Lighting eigentlich ??

Es berechnet für einen bestimmten Punkt auf einer gegebenen Fläche den Lichteinfall einer oder mehrerer Lichtquellen...mehr gibts dazu eigentlich nicht zu sagen.

Zitat:
Ich les dann andauernd was von Patches und so... also muss ich meine Polygone nochmal teilen in mehrere polygone ??? Was soll das für ein sinn machen ?

Nein, mußt du nicht.Das wird ja auch in dem Dokument das ich gepostethabe nicht gemacht.Die Sache mit den Patches ist nur ne temporäre Unterteilung deines Polygones für eine verbesserte Beleuchtung.Dein Polygon bleibt dabei allerdings unangetastet, und wird nur für die Lichtberechnungsprozedur unterteilt.

Zitat:
Eigentlich wenn man nen Radiosity Processor programmiert hat, dann hat man nen kleinen Raytraycer seh ich das richtig ???

Nein, nicht wirklich...ein RayTracer ist weitaus komplexer und kaum mit nem Radiosity Processor zu vergleichen.Bei einem Raytracer würde das Licht, das auf eine Fläche fällt z.B. je nach deren Beschaffenheit reflektiert.Allerdings sind einige Grundansätze eines Raytracers in nem Radiosity Processor enthalten.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 10, 2003 20:35 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Tach,

ich habs hinbekommen... endlich... ABER... leider nicht ganz korrekt.
Zum kurzen verständnis:

Code:
  1.  
  2.   Light.Position.Setup(-2.0, 1.5, 2.0);
  3.   
  4.   glPushMatrix;
  5.     glDisable(GL_BLEND);
  6.     glColor3f(Light.Red, Light.Green, Light.Blue);
  7.     glTranslatef(Light.Position.X, Light.Position.Y,Light.Position.Z);
  8.     gluSphere(gTempQuadric, 0.1, 10, 10);
  9.   glPopMatrix;
  10.  


Normalweise, würde die Sphere von nullpunkt aus, 2 einheiten nach links verschoben sein X, 1.5 einheiten nach oben Y und 2 einheiten nach vorne oder irr ich mich ???

Mein rechner allerdings rendert die sphere mit den selben Lichtpositionskoordinaten an:

X = 2 Einheiten nach Links (Korrekt)
Y = 1.5 Einheiten nach Oben (Korrekt)
Z = 2 Einheiten nach Hinten (Falsch)

wieso ? An der Camera liegts auch nciht, wenn ich das ganze normal über gluLookAt oder glTranslate anschauen lasse, siehts überall gleich aus... also keine achse ist vertauscht.

Jetzt kommt aber das komischste an der ganzen sache:

Ich lass mir für jedes Face ( 1 Face = Polygon ) die 3 Vertices aus meinem vertices array ausgeben:
also so:

Code:
  1.  
  2. function TR3DEditorWorld.GetPolygonFromFace(const _Index : Integer; const _Obj : TR3DEditorObject) : TR3DPolygon;
  3. var
  4.   Face    : TR3DEditorFace;
  5.   I       : Integer;
  6.   Vec     : TR3DVector;
  7.   TInfo   : TR3DEditorTextureInfo;
  8.   nTriangleIdx : Integer;
  9.   nTriangle : TR3DPolygon;
  10.   nNormal   : TR3DVector;
  11.   nPlane    : TR3DPlane;
  12. begin
  13.   // Face auslesen
  14.   Face := cFaces[_Index];
  15.   nNormal.Assign(cNormals[_Index]);
  16.  
  17.   // Texture Daten auslesen
  18.   TInfo := cTextureInfos[Face.TextureIndex];
  19.  
  20.   // Vertices in Triangle Array speichern
  21.   nTriangleIdx := 0;
  22.   For I := Face.StartIndex to (Face.StartIndex+2) do
  23.   begin
  24.     // Vector
  25.     Vec.Assign(cVertices[I]);
  26.  
  27.     // Invertieren... warum bloss ?
  28.     Vec.X := -Vec.X;
  29.  
  30.     // Transformieren
  31.     Vec.RotateX(_Obj.Rotate.X);
  32.     Vec.RotateY(_Obj.Rotate.Y);
  33.     Vec.RotateZ(_Obj.Rotate.Z);
  34.     Vec.Add(_Obj.Position);
  35.     Vec.Multiply(_Obj.Scale);
  36.  
  37.     // In Triangle speichern für Normale zeichnen
  38.     nTriangle.Vecs[nTriangleIdx].Assign(Vec);
  39.  
  40.     Inc(nTriangleIdx);
  41.   end;
  42.  
  43.   Result := nTriangle;
  44. end;
  45.  


Mit diesem Dreieck rechne ich dann weiter mit der Radiosity Lighting berechnung.
Das komische ist aber, wenn ich keine invertierung von der Vec achse mache, egal ob X, Y, Z.
dann funzt die berechnung überhaupt nicht mehr.

Die Transformierungsdaten für das Object ist immer Pos 0,0,0 Rotate 0,0,0 Scale 1,1,1
Also wird eigentlich gar nix am vector geändert.

Hier ist das Tutorial das ich verwendet habe::: <a href='http://members.net-tech.com.au/alaneb/lightmapping_tutorial.html' target='_blank'>Radiosity Tut</a>

Hier der komplette code des Radiosity Processors, da dieser auch nur ne konversation von c in delphi ist postet ich den:

Code:
  1.  
  2. type
  3.  &nbsp;TR3DTextureData = array of array of TR3DRGBA;
  4.  
  5.  &nbsp;TR3DRGBA = record
  6.  &nbsp; &nbsp;R,G,B,A : Byte;
  7.  &nbsp;end;
  8.  
  9. {-----------------------------------------------------------------------------
  10.   Procedure:   TR3DEditorWorld.CreateLightmapTextures
  11.   Author:      Finalspace
  12.   Date:        10-Mai-2003
  13.   Arguments:   NumPolys : Integer; Polys : array of TR3DPolygon
  14.   Result:      None
  15.   Call from:   None
  16.   Type:        None
  17.   Description: Für Alle Polygone Lichtmaps über Radiosity berechnen
  18. -----------------------------------------------------------------------------}
  19. procedure TR3DEditorWorld.CreateLightmapTextures(NumPolys : Integer; Polys : array of TR3DPolygon);
  20. const
  21.   WIDTH = 16;
  22.   HEIGHT = 16;
  23. var
  24.   Lumels             : array [0..WIDTH-1, 0..HEIGHT-1] of TR3DVector;
  25.   Edge1, Edge2       : TR3DVector;
  26.   NewEdge1, NewEdge2 : TR3DVector;
  27.   Vect1, Vect2       : TR3DVector;
  28.   UVVector           : TR3DVector;
  29.   Poly_Normal        : TR3DVector;
  30.   LightVector        : TR3DVector;
  31.   PointOnPlane       : TR3DVector;
  32.   LumelColor         : array [0..WIDTH-1, 0..HEIGHT-1] of TR3DRGB;
  33.   lightdistance      : TR3DFloat;
  34.   uvMin_U            : TR3DFloat;
  35.   uvMin_V            : TR3DFloat;
  36.   uvMax_U            : TR3DFloat;
  37.   uvMax_V            : TR3DFloat;
  38.   cosAngle           : TR3DFloat;
  39.   X, Y, Z            : TR3DFloat;
  40.   Distance           : TR3DFloat;
  41.   uvDelta_U          : TR3DFloat;
  42.   uvDelta_V          : TR3DFloat;
  43.   ufactor            : TR3DFloat;
  44.   vfactor            : TR3DFloat;
  45.   CombinedRed        : TR3DFloat;
  46.   CombinedGreen      : TR3DFloat;
  47.   CombinedBlue       : TR3DFloat;
  48.   Intensity          : TR3DFloat;
  49.   Flag               : Integer;
  50.   Temp               : String[255];
  51.   Lightmap           : TR3DTextureData;
  52.   Loop, i, iX, iY    : Integer;
  53.   Bmp                : TBitmap;
  54. begin
  55.   // Arrays Initialsieren
  56.   SetLength(Lightmap, WIDTH, HEIGHT);
  57.  
  58.   // Alle Polygone/Faces durchgehen (Jedes Face hat ein Polygon)
  59.   For Loop := 0 to NumPolys-1 do
  60.   begin
  61.     // Normale holen
  62.     Poly_Normal := Polys[loop].GetNormal;
  63.     Poly_Normal.Normalize;
  64.  
  65.     PointOnPlane.x := Polys[loop].Vecs[0].X;
  66.     PointOnPlane.y := Polys[loop].Vecs[0].Y;
  67.     PointOnPlane.z := Polys[loop].Vecs[0].Z;
  68.  
  69.     // find plane to map onto
  70.     if (abs(Poly_Normal.x) > abs(Poly_Normal.y)) and (abs(Poly_Normal.x) > abs(Poly_Normal.z)) then
  71.     begin
  72.       Flag := 1;
  73.       cFaces[Loop].Lightmap.Vertex_u[0] := Polys[loop].Vecs[0].y;
  74.       cFaces[Loop].Lightmap.Vertex_v[0] := Polys[loop].Vecs[0].z;
  75.       cFaces[Loop].Lightmap.Vertex_u[1] := Polys[loop].Vecs[1].y;
  76.       cFaces[Loop].Lightmap.Vertex_v[1] := Polys[loop].Vecs[1].z;
  77.       cFaces[Loop].Lightmap.Vertex_u[2] := Polys[loop].Vecs[2].y;
  78.       cFaces[Loop].Lightmap.Vertex_v[2] := Polys[loop].Vecs[2].z;
  79.     end
  80.     else
  81.     begin
  82.  
  83.       if (abs(Poly_Normal.y) > abs(Poly_Normal.x)) and (abs(Poly_Normal.y) > abs(Poly_Normal.z)) then
  84.       begin
  85.         Flag := 2;
  86.         cFaces[Loop].Lightmap.Vertex_u[0] := Polys[loop].Vecs[0].x;
  87.         cFaces[Loop].Lightmap.Vertex_v[0] := Polys[loop].Vecs[0].z;
  88.         cFaces[Loop].Lightmap.Vertex_u[1] := Polys[loop].Vecs[1].x;
  89.         cFaces[Loop].Lightmap.Vertex_v[1] := Polys[loop].Vecs[1].z;
  90.         cFaces[Loop].Lightmap.Vertex_u[2] := Polys[loop].Vecs[2].x;
  91.         cFaces[Loop].Lightmap.Vertex_v[2] := Polys[loop].Vecs[2].z;
  92.       end
  93.       else
  94.       begin
  95.         Flag := 3;
  96.         cFaces[Loop].Lightmap.Vertex_u[0] := Polys[loop].Vecs[0].x;
  97.         cFaces[Loop].Lightmap.Vertex_v[0] := Polys[loop].Vecs[0].y;
  98.         cFaces[Loop].Lightmap.Vertex_u[1] := Polys[loop].Vecs[1].x;
  99.         cFaces[Loop].Lightmap.Vertex_v[1] := Polys[loop].Vecs[1].y;
  100.         cFaces[Loop].Lightmap.Vertex_u[2] := Polys[loop].Vecs[2].x;
  101.         cFaces[Loop].Lightmap.Vertex_v[2] := Polys[loop].Vecs[2].y;
  102.       end;
  103.  
  104.     end;
  105.  
  106.     // convert to 2D texture space
  107.     uvMin_U := cFaces[Loop].Lightmap.Vertex_u[0];
  108.     uvMin_V := cFaces[Loop].Lightmap.Vertex_v[0];
  109.     uvMax_U := cFaces[Loop].Lightmap.Vertex_u[0];
  110.     uvMax_V := cFaces[Loop].Lightmap.Vertex_v[0];
  111.  
  112.     for i := 0 to 2 do
  113.     begin
  114.       if (cFaces[Loop].Lightmap.Vertex_u[i] < uvMin_U ) then
  115.         uvMin_U := cFaces[Loop].Lightmap.Vertex_u[i];
  116.  
  117.       if (cFaces[Loop].Lightmap.Vertex_v[i] < uvMin_V ) then
  118.         uvMin_V := cFaces[Loop].Lightmap.Vertex_v[i];
  119.  
  120.       if (cFaces[Loop].Lightmap.Vertex_u[i] > uvMax_U ) then
  121.         uvMax_U := cFaces[Loop].Lightmap.Vertex_u[i];
  122.  
  123.       if (cFaces[Loop].Lightmap.Vertex_v[i] > uvMax_V ) then
  124.         uvMax_V := cFaces[Loop].Lightmap.Vertex_v[i];
  125.     end;
  126.  
  127.     uvDelta_U := uvMax_U - uvMin_U;
  128.     uvDelta_V := uvMax_V - uvMin_V;
  129.  
  130.     // Normieren
  131.     for i := 0 to 2 do
  132.     begin
  133.       cFaces[Loop].Lightmap.Vertex_u[i] := cFaces[Loop].Lightmap.Vertex_u[i] - uvMin_U;
  134.       cFaces[Loop].Lightmap.Vertex_v[i] := cFaces[Loop].Lightmap.Vertex_v[i] - uvMin_V;
  135.       cFaces[Loop].Lightmap.Vertex_u[i] := cFaces[Loop].Lightmap.Vertex_u[i] / uvDelta_U;
  136.       cFaces[Loop].Lightmap.Vertex_v[i] := cFaces[Loop].Lightmap.Vertex_v[i] / uvDelta_V;
  137.     end;
  138.  
  139.     // calculate the world space position for each lumel
  140.     Distance := - (Poly_Normal.x * PointOnPlane.x + Poly_Normal.y * PointOnPlane.y + Poly_Normal.z * PointOnPlane.z);
  141.  
  142.     case Flag of
  143.  
  144.       1: //YZ Plane
  145.       begin
  146.         X := - ( poly_normal.y * uvMin_U + poly_normal.z * uvMin_V + Distance ) / poly_normal.x;
  147.         UVVector.x := X;
  148.         UVVector.y := uvMin_U;
  149.         UVVector.z := uvMin_V;
  150.         X := - ( poly_normal.y * uvMax_U + poly_normal.z * uvMin_V + Distance ) / poly_normal.x;
  151.         Vect1.x := X;
  152.         Vect1.y := uvMax_U;
  153.         Vect1.z := uvMin_V;
  154.         X := - ( poly_normal.y * uvMin_U + poly_normal.z * uvMax_V + Distance ) / poly_normal.x;
  155.         Vect2.x := X;
  156.         Vect2.y := uvMin_U;
  157.         Vect2.z := uvMax_V;
  158.       end;
  159.  
  160.       2: //YZ Plane
  161.       begin
  162.         Y := - ( poly_normal.x * uvMin_U + poly_normal.z * uvMin_V + Distance ) / poly_normal.y;
  163.         UVVector.x := uvMin_U;
  164.         UVVector.y := Y;
  165.         UVVector.z := uvMin_V;
  166.         Y := - ( poly_normal.x * uvMax_U + poly_normal.z * uvMin_V + Distance ) / poly_normal.y;
  167.         Vect1.x := uvMax_U;
  168.         Vect1.y := Y;
  169.         Vect1.z := uvMin_V;
  170.         Y := - ( poly_normal.x * uvMin_U + poly_normal.z * uvMax_V + Distance ) / poly_normal.y;
  171.         Vect2.x := uvMin_U;
  172.         Vect2.y := Y;
  173.         Vect2.z := uvMax_V;
  174.       end;
  175.  
  176.       3: //XY Plane
  177.       begin
  178.         Z := - ( poly_normal.x * uvMin_U + poly_normal.y * uvMin_V + Distance ) / poly_normal.z;
  179.         UVVector.x := uvMin_U;
  180.         UVVector.y := uvMin_V;
  181.         UVVector.z := Z;
  182.         Z := - ( poly_normal.x * uvMax_U + poly_normal.y * uvMin_V + Distance ) / poly_normal.z;
  183.         Vect1.x := uvMax_U;
  184.         Vect1.y := uvMin_V;
  185.         Vect1.z := Z;
  186.         Z := - ( poly_normal.x * uvMin_U + poly_normal.y * uvMax_V + Distance ) / poly_normal.z;
  187.         Vect2.x := uvMin_U;
  188.         Vect2.y := uvMax_V;
  189.         Vect2.z := Z;
  190.       end;
  191.  
  192.     end;
  193.  
  194.     // Ecken ?
  195.  
  196.     edge1.x := Vect1.x - UVVector.x;
  197.     edge1.y := Vect1.y - UVVector.y;
  198.     edge1.z := Vect1.z - UVVector.z;
  199.     edge2.x := Vect2.x - UVVector.x;
  200.     edge2.y := Vect2.y - UVVector.y;
  201.     edge2.z := Vect2.z - UVVector.z;
  202.  
  203.     for ix := 0 to WIDTH-1 do
  204.     begin
  205.       for iy := 0 to HEIGHT-1 do
  206.       begin
  207.  
  208.         ufactor := (iX / WIDTH);
  209.         vfactor := (iY / HEIGHT);
  210.         newedge1.x := edge1.x * ufactor;
  211.         newedge1.y := edge1.y * ufactor;
  212.         newedge1.z := edge1.z * ufactor;
  213.         newedge2.x := edge2.x * vfactor;
  214.         newedge2.y := edge2.y * vfactor;
  215.         newedge2.z := edge2.z * vfactor;
  216.  
  217.         lumels[iX][iY].x := UVVector.x + newedge2.x + newedge1.x;
  218.         lumels[iX][iY].y := UVVector.y + newedge2.y + newedge1.y;
  219.         lumels[iX][iY].z := UVVector.z + newedge2.z + newedge1.z;
  220.  
  221.         // Lichtstärke berechnen und RGB Werte
  222.         combinedred := 0.0;
  223.         combinedgreen := 0.0;
  224.         combinedblue := 0.0;
  225.         For i := 0 to High(cStaticLights) do
  226.         begin
  227.  
  228.           // Kollionsdetection zwischen Lightposition, Plane und Normale
  229.           if (r3d_ClassifyPoint(cStaticLights[i].Position, PointOnPlane, Poly_Normal) = 1) then
  230.           begin
  231.  
  232.             lightvector.x := cStaticLights[i].Position.x - lumels[iX][iY].x;
  233.             lightvector.y := cStaticLights[i].Position.y - lumels[iX][iY].y;
  234.             lightvector.z := cStaticLights[i].Position.z - lumels[iX][iY].z;
  235.             lightdistance := lightvector.Magnitude;
  236.             lightvector.Normalize();
  237.             cosAngle := r3d_DotProduct(Poly_Normal, lightvector);
  238.  
  239.             if (lightdistance < cStaticLights[i].Radius) then
  240.             begin
  241.               intensity := (cStaticLights[i].Brightness * cosAngle) / lightdistance;
  242.               combinedred := combinedred + cStaticLights[i].Red * intensity;
  243.               combinedgreen := combinedgreen + cStaticLights[i].Green * intensity;
  244.               combinedblue := combinedblue + cStaticLights[i].Blue * intensity;
  245.             end;
  246.           end;
  247.  
  248.         end;
  249.  
  250.         if (combinedred > 255.0) then combinedred := 255.0;
  251.         if (combinedgreen > 255.0) then combinedgreen := 255.0;
  252.         if (combinedblue > 255.0) then combinedblue := 255.0;
  253.         lumelcolor[iX][iY].R := Trunc(combinedred);
  254.         lumelcolor[iX][iY].G := Trunc(combinedgreen);
  255.         lumelcolor[iX][iY].B := Trunc(combinedblue);
  256.  
  257.       end;
  258.     end;
  259.  
  260.     // Texture endlich erstellen;)
  261.     Bmp := TBitmap.Create;
  262.     Bmp.Width := WIDTH;
  263.     Bmp.Height := HEIGHT;
  264.     for iX := 0 to WIDTH-1 do
  265.     begin
  266.       For iY := 0 to HEIGHT-1 do
  267.       begin
  268.  
  269.         lightmap[iX, iY].R := Trunc(lumelcolor[iX][iY].R);
  270.         lightmap[iX, iY].G := Trunc(lumelcolor[iX][iY].G);
  271.         lightmap[iX, iY].B := Trunc(lumelcolor[iX][iY].B);
  272.         lightmap[iX, iY].A := 255;
  273.  
  274.         Bmp.Canvas.Pixels[iX, iY] := RGB(lightmap[iX, iY].R,
  275.                                          lightmap[iX, iY].G,
  276.                                          lightmap[iX, iY].B);
  277.  
  278.       end;
  279.     end;
  280.  
  281.     // Lightmap als Bitmap speichern
  282.     Bmp.SaveToFile('.&#092;textures&#092;lightmaps&#092;lm'+IntToStr(Loop)+'.bmp');
  283.     Bmp.Free;
  284.  
  285.     // Lightmap als OGL Texture speichern
  286.     cFaces[Loop].Lightmap.Texture.cData := lightmap;
  287.     cFaces[Loop].Lightmap.Texture.BuildFromData(WIDTH, HEIGHT);
  288.  
  289.   end;
  290. end;
  291.  


Ich bin ehrlich, ich hab nich ganz gepeilt was da überhaupt passiert.
Deswegen no comments.

Mein testprog poste ich am montag, über Handy kann ich keine FTP verbindung herstellen.

matane,
Final


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 10, 2003 20:44 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Screenshots in Attachment

matane,
Final


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.011s | 14 Queries | GZIP : On ]