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