Erzeugung von mathematischen Texturen und 3D Objekten

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Erzeugung von mathematischen Texturen und 3D Objekten

Beitrag von mpz »

Hallo Leute,

ich beschäftige mich gerade mit meiner MP_3D_Engine (soll nicht hochtrabend sein, aber einen Namen braucht es). Dabei sammele ich gerade mathematische Funktionen bzw. Programmbeispiele zur Erstellung von;

Mathematische Funktionen um natürliche Texturen nachzuahmen (Steine, Holz, Feuer , Gras, Wolken etc.)

Hier jetzt meine Frage. Hat noch jemand Bespiele oder Beispielseiten zu diesem Thema? Ich habe schon ein paar Workshops zur Texturerstellung mit Photoshop im Netz gefunden, weiß aber nicht wie ich diese nach PureBasic "portiere"?

http://www.drweb.de/photoshop/index-texturen.shtml

3D Objekt zu erzeugen
Meine wichtigsten 3D Objekte die schon existieren. Falls noch jemand Ideen zu weiteren hat, nur zu. Ich denke aber das ich schon ziemlich komplett bin. SkyBox und Sky Sphere werden noch dazukommen, fehlt noch aus Zeitgründen…

MP_CreateCube () ; Cube mit UV
MP_CreateRetangle (Width.l,Height.l,Depth.l) ; Rechteck mit UV
MP_CreateSphere (Slices.l) ; Sphere mit UV
MP_CreateTeapot () ; Teapot mit UV
MP_CreateCylinder (Segmente.l,h.f) ; Cylinder mit UV
MP_CreateCone (Segmente.l, rb.f, h.f, rt.f) ; Cone mit UV
MP_CreateTorus (Innen.f, Aussen.f, Segmente.l) ; Torus mit UV
MP_CreatePolygon (Length.f, Segmente.l) ; Plygone mit UV
MP_Create3DText (Fontname.s, Text.s, Height.l) ; 3D Text mit UV

Über die folgende Prozeduren kann man ein Mesh selber erzeugen
MP_CreateMesh () ; Leer Mesh erzeugt
MP_AddVertex ( Entity.l ,x.f,y.f,z.f,u.f,v.f) ; Einem Objekt einen Vertex zuordnen
MP_AddTriangle ( Entity.l ,f1.l,f2.l,f3.l) ; Einem Objekt ein Dreieckfläche dazuaddieren

Kleiner Beispielcode um über Directx9 ein Cube mit uv Werten zu erzeugen:

Code: Alles auswählen


ProcedureDLL MP_CreateCube () ; Cube mit UV

    AddElement(Mesh.MeshStruct())
    Mesh()\Meshscale\Sx = 1
    Mesh()\Meshscale\Sy = 1
    Mesh()\Meshscale\Sz = 1
  
    Color.l = $FFFFFF
  
    Mesh.ID3DXMESH=#Null
    
    D3DXCreateBox(*D3DDevice, 1, 1, 1, @Mesh, #Null)
  
    Mesh\CloneMeshFVF(#D3DXMESH_MANAGED |#D3DXMESH_32BIT,#D3DFVF_VertexFormat,*D3DDevice,@Mesh()\Mesh) 
  
    Mesh\Release()

    *pVert=#Null 
    *pVBuf.IDIRECT3DVERTEXBUFFER9;
   
    Mesh()\Mesh\GetVertexBuffer(@*pVBuf)
  
    *pVBuf\Lock( 0, 0, @*pVert, 0 ) 


      Restore Cubedata
      For n = 0 To 23 
      
        Read u.f
        Read v.f
   
        PokeL (*pVert+SizeOf(MyVertex)-12+n*SizeOf(MyVertex),Color) ;Farbe in Vertex eintragen
        PokeF (*pVert+SizeOf(MyVertex)-8+n*SizeOf(MyVertex),u) ; u Texturwert in Vertex eintragen
        PokeF (*pVert+SizeOf(MyVertex)-4+n*SizeOf(MyVertex),v) ; v Texturwert in Vertex eintragen
         
      Next
   
              
    *pVBuf\Unlock() 
  
    D3DXMatrixTranslation(Mesh()+4,0,0,0)
    
    ProcedureReturn Mesh()
  
  DataSection
  Cubedata:    
  Data.f 1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,1,0,0,1,0,1,1,0,1
  Data.f 0,1,0,0,1,0,1,1,1,1,0,1,0,0,1,0,0,1,0,0,1,0,1,1
  EndDataSection

EndProcedure

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Hier gibts zwar keinen Code, aber Tipps wie man sie erstellt:
Generating textures for 64k intros

Vielleicht kennst du ja diese Intros ... sind echt ne feine Sache ;)


edit:
..und hier ne Mischung aus asm und c++ bei code.google:
http://code.google.com/p/smallbase/source/detail?r=17
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag von mpz »

Hallo c4s,

genau so etwas schwebte mir vor, Danke...

Gruß Michael
:allright:
Working on :lol: - LibSGD - MP3D Engine - 8)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Wäre schön, wenn du das ein oder andere Ergebnis uns zeigen könntest ;)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag von mpz »

Hier ein kleines Ergebniss. Ich habe noch eine paar andere Texturen, sind aber noch nicht so "beispielhaft",...

http://www.purebasic.fr/german/viewtopic.php?t=17618

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Wow, klasse!
Ich denke, mit Hilfe der anderen "Profis", lässt sich da (bei deinem Link)
sicherlich eine schöne Sammlung an Texturegenerator-Proceduren erstellen.

Kann man öfters gebrauchen..und ist immer gut :allright:
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Moggen

Beitrag von kob »

Man kann mithilfe von Fraktalen oberflächen generiren , die so aussehen wie z.b. ein baum oder so , hab mir das nicht so genau angekutk , der code war unübersichtlich , aber der hat eine linie gemalt Also : ______ , hat die aber irgendwie mit einer eigenen funktion gemalt , sodas die linie einen keil hatte also : ____/\___ , und das hat er ca 5 mal gemacht und dan sah das so aus wie eine schneeflocke . Google einfach mal nach Xaos , ein fraktal generator , in den tutorials wird erklärt wie das funktionirt . ist auch in PB möglich
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
xperience2003
Beiträge: 972
Registriert: 04.10.2004 18:42
Computerausstattung: Amiga, LinuxMint, Windows7
Wohnort: gotha
Kontaktdaten:

Beitrag von xperience2003 »

Mathematische Funktionen um natürliche Texturen nachzuahmen (Steine, Holz, Feuer , Gras, Wolken etc.)
solche texturen brauchen mehrere renderpasses und sind eine wissenschaft fuer sich (wenn wir mal davon ausgehen das es was ordentliches sein soll und keine einfachen sinuswellen oder randoms)

aber da du ja sowieso dx9 verwendest, bietet sich eine generierung ueber
shader geradezu an

shader fuer diverse sachen findet man wie sand am meer, rein theopraktisch kann man auch den shader auf ein quad rendern
und anschliessend als image graben, dann haste es auch als
bitmap texture ^^ ..welche du durch diverse blendings noch weiter
veraendern kannst

die shader baust du dir im nvidia fx composer zusammen
http://developer.nvidia.com/object/FX_C ... _Home.html
fuer ati halt im rendermonkey
http://developer.amd.com/gpu/rendermonk ... fault.aspx

--
vielleicht mal nen test:
http://www.digitalarts-egypt.com/hohoho ... lzkopp.exe
das einzige was das programm so gross macht, ist das eingelinkte mesh
amiga rulez...
Rebirth Software
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

ein bisschen nebenbei:
Dazu ist mir wieder eine Demo namens "Atrium" von den Loonies bzw. TBC
eingefallen.
Hier das Video: http://www.demoscene.tv/prod.php?id_prod=13276
Hier die Exe: http://loonies.dk/demos/bin/atrium_by_t ... oonies.zip

Ist so ziemlich die beste Demo im Bereich Größe/Leistung, die ich kenne.
Hat mich sehr beeindruckt! Und wie man das alles in 4KB verstehe ich
sowieso nicht.
Ich hatte mir zwar mal den Artikel von kb über "Farbrausch's Sound-System"
durchgelesen. Aber irgendwie bleibt mir das immernoch ein ziemlich
beeindruckenes Rätsel..

Die Exe anzugucken lohnt auf jeden Fall - 4KB :roll: - :allright:
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Benutzeravatar
mpz
Beiträge: 505
Registriert: 14.06.2005 15:53
Computerausstattung: Win 11 Pro, 48 GB Ram, Intel I7 CPU und RX4070 Grafikkarte, PB (4/5) 6.12LT
Wohnort: Berlin, Tempelhof

Beitrag von mpz »

Das scheint ein interesanter Ansatz zu sein. Gibt es zum TLib-Holzkopp.exe auch einen Quelltext damit ich mir das mit den Shadern ansehen kann? Die DX9 Befehle gibt es aber ich habe mich bisher noch nicht damit beschäftigt wie genau man damit Texturen erstellen kann. Haben Ihr vieleicht einfache DX9 Beispiele in C++, VB, Pascal o.ä. im Netz gesehen die ich als Vorlage nehmen kann?

Gruß Michael
Working on :lol: - LibSGD - MP3D Engine - 8)
Antworten