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

Aktuelle Zeit: Di Jul 15, 2025 15:06

Foren-Übersicht » Programmierung » Mathematik-Forum
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 3D Noise Textur erstellen
BeitragVerfasst: Mi Jan 18, 2006 21:06 
Offline
DGL Member

Registriert: Mi Jan 18, 2006 21:00
Beiträge: 9
Guten Abend,

kann mir jemand erklären, wie ich eine 3D Noise Texture erzeugen kann. Ich weiß leider weder, wie ich die Werte der Textur berechnen kann, noch wie ich die Textur in OpenGl einbinde. Ich habe zu diesem Thema oft das Stichwort Perlin Noise gefunden, leider aber keinen einfachen Algorithmus zur 3D Variante gefunden.

Vielen Dank,
Najo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 18, 2006 21:59 
Offline
DGL Member

Registriert: Sa Jan 22, 2005 21:10
Beiträge: 225
Willst du nur eine 3D-Textur mit Perlin Noise füllen, oder willst du mit Perlin Noise über eine Voxelengine irgendwelche volumetrischen Formen erzeugen?
Und meinst du den original Perlin Noise mit den Splines oder diese andere Methode mit den vielen Images unterschiedlicher Größe?


Wenns um das Füllen einer 3D Textur mit dem original Perlin Noise geht:

http://www.mandelbrot-dazibao.com/Perlin/Perlin1.htm
http://www.mandelbrot-dazibao.com/Perlin/Perlin2.htm

Der eigentliche Code ist für 2D aber in der Beschreibung sind Andeutungen, wie du die betreffende Stelle auf 3D erweitern kannst.

Zitat:
This scalar product is easy to extend to more dimensions: the linear function at the point RefPoint for a gradient (G1, G2,..., Gn) is, for example, in 3D:

F[XRef](x,y,z) = Gx*(x-xRef) + Gy*(y-yRef) + Gz*(z-zRef)

_________________
[18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay

hi, i'm a signature viruz, plz set me as your signature and help me spread :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jan 18, 2006 23:31 
Offline
DGL Member

Registriert: Mi Jan 18, 2006 21:00
Beiträge: 9
Hallo,

vielen Dank für die Internetseiten! Ich möchte mir eine Textur erstellen, dessen Werte durch Perlin-Noise gesetzt werden, nicht mit Voxeln arbeiten.

Viele Grüße,
Najo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 19, 2006 07:32 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Ziemlich genau so wie im Wiki unter Perlin Noise beschrieben, nur dass du eine 3D-Positionsangabe besitzt. Dies wirkt sich auf die Generierung der Zufallszahl und vor allem auf die Interpolation aus:
Code:
  1.  
  2. InterpolierterZufallswert( Vector3D Position )
  3. {
  4. PosX = Ganzzahl( Position.x )
  5. PosY = Ganzzahl( Position.y )
  6. PosZ = Ganzzahl( Position.z )
  7. R1 = Random( PosX, PosY, PosZ );
  8. R2 = Random( PosX, PosY, PosZ+1 );
  9. R3 = Random( PosX, PosY+1, PosZ );
  10. R4 = Random( PosX, PosY+1, PosZ+1 );
  11. R5 = Random( PosX+1, PosY, PosZ );
  12. R6 = Random( PosX+1, PosY, PosZ+1 );
  13. R7 = Random( PosX+1, PosY+1, PosZ );
  14. R8 = Random( PosX+1, PosY+1, PosZ+1 );
  15. IZ1 = Interpoliere( R1, R2, Nachkommateil( Position.z ) );
  16. IZ2 = Interpoliere( R3, R4, Nachkommateil( Position.z ) );
  17. IZ3 = Interpoliere( R5, R6, Nachkommateil( Position.z ) );
  18. IZ4 = Interpoliere( R7, R8, Nachkommateil( Position.z ) );
  19. IY1 = Interpoliere( IZ1, IZ2, Nachkommateil( Position.y ) );
  20. IY2 = Interpoliere( IZ3, IZ4, Nachkommateil( Position.y ) );
  21. Ergebnis = Interpoliere( IY1, IY2, Nachkommateil( Position.x ) );
  22.  
  23. return Ergebnis;
  24. }
  25.  


Für die Random-Funktion suchst du dir aus einer Primzahlentabelle eine raus die dir gefällt und verwendest sie dann für z, also beispielsweise:
Code:
  1. Random( x, y, z )
  2. {
  3. n := x + y * 57 + z * 4973 + Seed;
  4. n := ( n shl 13 ) xor n;
  5. rand := 1 - ( (n * (n * n * 15731 + 789221) + 1376312589) and $7fffffff) / 1073741824;
  6. }

obwohls jetzt etwas C <-> Delphi - Mischmasch is, sollte es dennoch halbwegs verständlich sein hoff ich :-).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 19, 2006 09:53 
Offline
DGL Member

Registriert: Mi Jan 18, 2006 21:00
Beiträge: 9
Danke für die ausführliche Antwort. Den Artikel über Perlin Noise in dem Wiki habe ich leider übersehen, obwohl ich nachgesehen habe :)

Gruß und Danke,
Najo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 19, 2006 10:25 
Offline
DGL Member

Registriert: Mi Jan 18, 2006 21:00
Beiträge: 9
Hallo Allerseits,

ich habe leider noch eine kleine Anfangsschwierigkeit: Wie kann das im Arbeitsspeicher erstellte Array mit dem Zufallswerten OpenGL als Textur verkaufen? Ich finde leider keine glTexImage3D Funktion oder ähnliches, mit der es mit 2D Texturen klappt.

Vielen Dank für die Hilfe!,
Najo


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 19, 2006 12:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Mal ne ganz blöde frage. Was benutzt du denn für einen Header. In unserem Header existiert die Methode glTexImage3D mit der 3D Texturen erstellen kannst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jan 19, 2006 13:33 
Offline
DGL Member

Registriert: Mi Jan 18, 2006 21:00
Beiträge: 9
Hi,

ich programmiere momentan in C++ und habe die für die Extentions die Glee Bibliothek benutzt. Dies hat auch eine Funktion TexImage3D, aber mein Compiler hat die irgendwie nicht gefunden. Nach dem Neuerstellen des ganzen Projektes klappt es jetzt.

Gruß und danke,
Najo


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Mathematik-Forum


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 16 Queries | GZIP : On ]