Aktuelle Zeit: 23.02.2020 00:52

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 3D Engine - Heighmap -> 3d Mesh!?
BeitragVerfasst: 11.11.2018 14:49 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Ich würde gerne eine HeightMap in einen 3D Mesh konvertieren und diesen dann Rendern.
Das Bild kann ich in eine Positionsliste (xyz) verwandeln.

Wie könnte ich das umsetzten? (3D Anfänger) :oops:

Mein Code soweit:
Code:
UsePNGImageDecoder()
IncludeFile #PB_Compiler_Home + "examples/3d/Screen3DRequester.pb"

Structure VECTOR_STRUCT
  X.f
  Y.f
  Z.f
EndStructure

Structure BITMAP_STRUCT
  bmType.l
  bmWidth.l
  bmHeight.l
  bmWidthBytes.l
  bmPlanes.w
  bmBitsPixel.w
  Alignment.b[4]
  *bmBits
  PixelSize.i
EndStructure

Structure HEIGHMAP_STRUCT
  Id.i
  Handle.i
  Bitmap.BITMAP_STRUCT
  Count.i
  *VectorBuffer
  VectorBufferSize.i
EndStructure

Global HeightMap.i

Procedure.i HeightMapCatch(*Buffer)
  Protected *HeightMap.HEIGHMAP_STRUCT
  Protected PosX.i
  Protected PosY.i
  Protected *Pixel.Ascii
  Protected *Vector.VECTOR_STRUCT
  Protected *Scanline
  If *Buffer
    *HeightMap = AllocateStructure(HEIGHMAP_STRUCT)
    If *HeightMap
      With *HeightMap
        \Id = CatchImage(#PB_Any,*Buffer)
        If IsImage(\Id)
          \Handle = ImageID(\Id)
          If GetObject_(\Handle,SizeOf(BITMAP),@\Bitmap)
            \Bitmap\PixelSize = \Bitmap\bmBitsPixel / 8
            \Count = \Bitmap\bmWidth * \Bitmap\bmHeight
            \VectorBufferSize = \Count * SizeOf(VECTOR_STRUCT)
            \VectorBuffer = AllocateMemory(\VectorBufferSize)
            If \VectorBuffer
              *Vector = \VectorBuffer
              For PosY = 0 To \Bitmap\bmHeight - 1
                *Scanline = \Bitmap\bmBits + (PosY * \Bitmap\bmWidthBytes)
                For PosX = 0 To \Bitmap\bmWidth - 1
                  *Pixel = *Scanline + (PosX * \Bitmap\PixelSize)
                  *Vector\X = PosX
                  *Vector\Y = PosY
                  *Vector\Z = *Pixel\a * 2
                  *Vector + SizeOf(VECTOR_STRUCT)
                Next
              Next
              ProcedureReturn *HeightMap
            EndIf
          EndIf
          FreeImage(\Id)
        EndIf
      EndWith 
      FreeStructure(*HeightMap)
    EndIf
  EndIf
EndProcedure

Procedure.i HeightMapBuffer(*HeightMap.HEIGHMAP_STRUCT)
  With *HeightMap
    ProcedureReturn \VectorBuffer
  EndWith
EndProcedure

Procedure.i HeightMapCount(*HeightMap.HEIGHMAP_STRUCT)
  With *HeightMap
    ProcedureReturn \Count
  EndWith
EndProcedure

Procedure.i HeightMapBufferSize(*HeightMap.HEIGHMAP_STRUCT)
  With *HeightMap
    ProcedureReturn \VectorBufferSize
  EndWith
EndProcedure

Procedure.i HeightMapFree(*HeightMap.HEIGHMAP_STRUCT)
  With *HeightMap
    FreeImage(\Id)
    FreeMemory(\VectorBuffer)
    FreeStructure(*HeightMap)
  EndWith
EndProcedure

HeightMap = HeightMapCatch(?HeightMap)

If  HeightMap
  Debug "HeightMap: 0x" + Hex(HeightMap)
  Debug "VectorBuffer: 0x" + Hex(HeightMapBuffer(HeightMap))
  Debug "VectorBufferSize: " + Str(HeightMapBufferSize(HeightMap))
  Debug "VectorCount: " + Str(HeightMapCount(HeightMap))
 
  ; If InitEngine3D()
  ;   InitSprite()
  ;   InitKeyboard()
  ;   InitMouse()
  ;   If Screen3DRequester()
  ;   
  ;   EndIf
  ; EndIf
 
  HeightMapFree(HeightMap)
EndIf
End

DataSection
  HeightMap:
  ;map2.png - Size: 1629 Bytes
  !dw 05089h, 0474Eh, 00A0Dh, 00A1Ah, 00000h, 00D00h, 04849h, 05244h, 00000h, 0AC01h, 00000h, 01A01h, 00208h, 00000h, 0C200h, 0F439h, 00093h, 00000h, 07009h, 05948h, 00073h, 00E00h, 000C4h, 00E00h, 001C4h, 02B95h, 01B0Eh, 00000h, 00F06h, 04449h, 05441h, 0DA78h, 0DDEDh, 06DC1h, 05AE2h, 08014h, 064E1h, 06B04h, 060EAh, 03711h
  !dw 0DC80h, 07D0Dh, 0F424h, 03741h, 01A51h, 01648h, 0C1D4h, 0CD9Ah, 0D02Ch, 01144h, 01B19h, 0CC63h, 0BDF5h, 07CF7h, 06ADFh, 07A1Eh, 08903h, 0FC99h, 0C73Ah, 0F026h, 004F4h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 09000h, 0E7A9h, 07F71h, 0B36Dh, 054D9h, 0687Fh, 03E3Eh
  !dw 0463Eh, 0DDFFh, 0C708h, 0EA07h, 071F8h, 0E3FEh, 000E8h, 08991h, 02020h, 00082h, 00822h, 0D010h, 09262h, 0B97Bh, 01AE7h, 09542h, 0101Ch, 0D798h, 08BF0h, 02693h, 0C041h, 00C3Ah, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h
  !dw 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 067D0h, 0E851h, 0FDD7h
  !dw 0FAFAh, 0FC1Ah, 0DB99h, 076EDh, 0F9FEh, 0DC42h, 05E08h, 0F6F5h, 076F6h, 016F5h, 0EB00h, 02030h, 00082h, 00822h, 08220h, 02200h, 01008h, 0A046h, 0C3ABh, 0D995h, 0B76Eh, 0BA0Fh, 0FDE7h, 03F7Eh, 0B7EFh, 0F9F6h, 0E9F9h, 07327h, 0A684h, 01C69h, 09304h, 08020h, 00208h, 02088h, 00880h, 05C02h, 070B1h, 00A08h, 03875h, 0A61Ch
  !dw 0ABBAh, 07AF5h, 078EDh, 01262h, 01004h, 00041h, 00411h, 04110h, 01100h, 01004h, 00041h, 00411h, 04110h, 01100h, 01004h, 00041h, 00411h, 04110h, 01100h, 01004h, 00041h, 00411h, 04110h, 01100h, 02804h, 07781h, 08696h, 0CC4Ah, 051F8h, 045A5h, 0DA7Fh, 049A7h, 0B010h, 0030Eh, 02088h, 00880h, 08802h, 08020h, 00208h, 02088h
  !dw 00880h, 08802h, 08020h, 00208h, 0C6D4h, 0CDAFh, 0CE11h, 0B972h, 0EACCh, 039EBh, 04E9Dh, 0149Eh, 02093h, 00880h, 08802h, 08020h, 00208h, 0E224h, 008C2h, 0A5D1h, 02EBFh, 0DB91h, 01995h, 02C11h, 06ED2h, 0FBB7h, 0E37Dh, 0BB76h, 0F9FDh, 0879Fh, 0C1C3h, 00C13h, 08758h, 0AC01h, 030C3h, 097A9h, 09797h, 05B8Bh, 0BEBEh, 01CBEh
  !dw 01116h, 08884h, 0BBF9h, 05DB8h, 0AD0Dh, 050C3h, 0FE6Dh, 00ABAh, 0A438h, 08892h, 05420h, 00038h, 0A0EAh, 08208h, 0EA02h, 008A0h, 00282h, 0A0EAh, 00208h, 02088h, 00880h, 0F842h, 0D85Dh, 02C46h, 00082h, 00822h, 08220h, 02200h, 04508h, 0F3BAh, 0E077h, 00AFCh, 0089Dh, 06402h, 0E6ADh, 05037h, 0AF58h, 09ED7h, 02060h, 0046Eh
  !dw 0AA61h, 0788Dh, 02BDCh, 0125Dh, 0C2EFh, 0D34Dh, 0B278h, 0C3ACh, 0A8F0h, 0660Eh, 0405Eh, 01044h, 0EA32h, 002A0h, 0208Ah, 0EDC4h, 002A0h, 0A596h, 073AAh, 0FB82h, 0DEFDh, 04A33h, 00E9Ah, 07B7Ah, 0117Dh, 03504h, 03AC4h, 0200Ch, 00082h, 00822h, 08220h, 02200h, 02008h, 00082h, 00822h, 08220h, 03900h, 062F3h, 04EE9h, 0EFEFh
  !dw 0E7EFh, 0B43Fh, 0EB6Dh, 05468h, 0B96Ch, 03A5Ch, 02608h, 03A41h, 0780Bh, 067F1h, 00440h, 04401h, 04010h, 02304h, 0C2ECh, 06236h, 09BA8h, 0230Bh, 07384h, 09D3Ah, 0041Ch, 0824Ch, 02200h, 06C38h, 0B617h, 08311h, 00208h, 02088h, 00880h, 0DCC6h, 00185h, 08C11h, 0B568h, 0495Ah, 08824h, 08020h, 0DA08h, 00185h, 08C11h, 00BBCh
  !dw 0250Bh, 0A088h, 00214h, 06822h, 00617h, 03044h, 000F2h, 09728h, 08220h, 00882h, 0A088h, 0185Dh, 04110h, 01FA3h, 08220h, 04726h, 00440h, 02EABh, 0D99Ah, 04410h, 02ED0h, 0880Ch, 03620h, 01062h, 098C1h, 0332Dh, 08221h, 0DA08h, 00185h, 00411h, 0C110h, 0BB68h, 07FF0h, 044E7h, 005A7h, 00441h, 0C2EDh, 00880h, 08802h, 0F560h
  !dw 0F0BBh, 0EEE3h, 01004h, 062C1h, 06176h, 0332Bh, 02088h, 03D40h, 0D616h, 0C4DBh, 0DB8Fh, 0ADB6h, 0767Fh, 08220h, 0B5D9h, 0A6ECh, 0F9C5h, 03C78h, 0FFA6h, 0D506h, 0EA13h, 0875Fh, 02AE7h, 01160h, 0FA67h, 0845Ch, 0FA81h, 00823h, 08220h, 08C05h, 0AE81h, 04311h, 0F235h, 0273Ah, 0B6D8h, 0E8EDh, 02FA5h, 09871h, 03F46h, 0E8DCh
  !dw 089F3h, 009CEh, 0FD42h, 0EC11h, 060EFh, 0F31Dh, 0FF57h, 0D177h, 04895h, 08405h, 01128h, 0FEFCh, 0FF81h, 0C29Dh, 02073h, 05D6Ah, 0E545h, 0660Fh, 0EF91h, 0C139h, 01FAEh, 07BFEh, 09E5Eh, 080A2h, 03140h, 08C11h, 041D3h, 00405h, 01C11h, 0C1D3h, 0523Ah, 080A8h, 0AF30h, 07E02h, 0AE6Dh, 014EBh, 0B9E1h, 0E520h, 0229Eh, 03F94h
  !dw 00930h, 05DC6h, 0158Dh, 04410h, 06E30h, 01507h, 0AC10h, 013C3h, 0C6AFh, 0BCA5h, 0467Ah, 086FEh, 09A68h, 041C6h, 024C0h, 0E158h, 0A848h, 02080h, 07182h, 0A83Bh, 02080h, 0E982h, 0983Ah, 00A5Bh, 01015h, 055B2h, 03BF6h, 0E74Bh, 0EAFFh, 0F919h, 09303h, 0DC60h, 058D5h, 04101h, 0E304h, 05076h, 0C101h, 09C3Ah, 06AC5h, 0FE9Ch
  !dw 033D5h, 007F2h, 0C126h, 023B8h, 002A1h, 00882h, 0EDC6h, 002A0h, 00882h, 0DD66h, 05F41h, 0700Ch, 05161h, 037EBh, 0F3D6h, 019EAh, 003F9h, 09F2Ah, 0CF04h, 0FF66h, 05EA0h, 0149Fh, 0220Ch, 09198h, 01704h, 07D88h, 02714h, 02088h, 00880h, 085DAh, 0C46Dh, 08220h, 076D1h, 01B61h, 08831h, 08020h, 00208h, 0E088h, 0E6BCh, 0133Dh
  !dw 0B177h, 03B11h, 0082Dh, 03822h, 0E733h, 000E9h, 030EBh, 08C40h, 04E08h, 07EB5h, 0FF1Eh, 07D29h, 0073Dh, 04F42h, 0E382h, 0E176h, 0ED9Fh, 0D11Bh, 00B41h, 09438h, 0E162h, 0F410h, 0EFE4h, 046E2h, 00369h, 06093h, 002C4h, 033DEh, 0DA12h, 04188h, 09304h, 068BAh, 0F0CDh, 06DD9h, 0E9E0h, 0E1BFh, 00967h, 08D8Dh, 08220h, 00C95h
  !dw 0D380h, 0848Eh, 05640h, 09FA2h, 0EC13h, 0D9C9h, 05BF7h, 0E6A2h, 0B9FCh, 080C6h, 0B049h, 01773h, 0A49Eh, 04F80h, 01FBDh, 0725Ah, 048D3h, 0B4E8h, 09820h, 09304h, 09FEAh, 06ED4h, 050FAh, 09EA4h, 0EB37h, 019EFh, 05709h, 095ABh, 019C5h, 0824Ch, 0AE39h, 0E3C0h, 0163Eh, 0AA6Eh, 01091h, 0C110h, 076D9h, 09EE1h, 00DFCh, 05CF9h
  !dw 09EA4h, 067FFh, 00748h, 0C46Dh, 08220h, 0EDB3h, 0A3C2h, 0C007h, 0B9E1h, 07DFCh, 02EFFh, 0809Eh, 0E608h, 002B2h, 033DFh, 05A00h, 0418Dh, 00B04h, 0DFCEh, 00324h, 09DE0h, 02123h, 08220h, 0D40Fh, 0AE75h, 0E06Dh, 0608Bh, 04CEEh, 07F61h, 0BD7Ch, 02AC7h, 06088h, 06D6Ah, 0F6DBh, 0800Fh, 01553h, 06AF0h, 08D4Fh, 02084h, 01982h
  !dw 0860Dh, 00E13h, 05680h, 01063h, 002C1h, 0F792h, 001D0h, 07470h, 06D61h, 020C4h, 03382h, 0C82Ch, 01EC9h, 0D928h, 00163h, 09822h, 09569h, 01074h, 03044h, 000D6h, 0EB78h, 0DB43h, 02188h, 0C513h, 081BFh, 05742h, 0724Dh, 0C598h, 0DE7Ah, 00176h, 00930h, 0D946h, 0AD46h, 060C6h, 08C12h, 01C5Eh, 02123h, 00498h, 05453h, 0F32Fh
  !dw 0AB99h, 02FA0h, 04C15h, 0A682h, 0AB3Fh, 09831h, 00104h, 01044h, 00440h, 04401h, 04010h, 00104h, 01044h, 00440h, 04401h, 04010h, 00104h, 01044h, 00440h, 04401h, 04010h, 00104h, 0304Ah, 0BBCDh, 06CC8h, 01B36h, 01287h, 00930h, 08802h, 08020h, 00208h, 02088h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h, 00000h
  !dw 00000h, 00000h, 00000h, 0FA13h, 0770Bh, 02665h, 06E12h, 01287h, 0006Dh, 00000h, 04900h, 04E45h, 0AE44h, 06042h, 00082h
EndDataSection


Heightmap einzeln:
Bild

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Engine - Heighmap -> 3d Mesh!?
BeitragVerfasst: 11.11.2018 17:30 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
CreateTerrain sollte da helfen. Es gibt glaube ich ein Beispiel im PureBasic Examples Ordner.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Engine - Heighmap -> 3d Mesh!?
BeitragVerfasst: 11.11.2018 18:09 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
DarkDragon hat geschrieben:
CreateTerrain sollte da helfen. Es gibt glaube ich ein Beispiel im PureBasic Examples Ordner.


Beispiele hab ich gefunden jedoch ohne jede weitere Erklärung was mir nichts bringt.
Anscheinend ist es nicht einmal möglich Resourcen vom Speicher zu laden!?

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Engine - Heighmap -> 3d Mesh!?
BeitragVerfasst: 11.11.2018 21:07 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
Mijikai hat geschrieben:
DarkDragon hat geschrieben:
CreateTerrain sollte da helfen. Es gibt glaube ich ein Beispiel im PureBasic Examples Ordner.


Beispiele hab ich gefunden jedoch ohne jede weitere Erklärung was mir nichts bringt.
Nunja, man erzeugt ein Terrain Objekt mit CreateTerrain und nimmt dann DefineTerrainTile um einzelne Heightmaps reinzuladen (Terrain.pb z.B.). Zur Darstellung legt man dann auch noch eine Textur auf das Terrain mit AddTerrainTexture.

Mijikai hat geschrieben:
Anscheinend ist es nicht einmal möglich Resourcen vom Speicher zu laden!?
Mit der PB OGRE Anbindung nicht, nein. Da wird man auch nicht allzu glücklich damit. Was soll es denn werden und wie kompliziert darf es werden? Mit OpenGL kriegt man sowas relativ gut und einfach hin, wenn man Grundwissen in linearer Algebra und affiner Geometrie/Abbildung/Transformation hat.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 3D Engine - Heighmap -> 3d Mesh!?
BeitragVerfasst: 11.11.2018 21:28 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
OpenGL wäre definitiv besser das mit Ogre bring eh nix.

Vor einiger Zeit hatte ich es schon einmal Versucht: http://forums.purebasic.com/german/viewtopic.php?f=4&t=30792
Da bin ich am Ende jedoch abgedriftet und hab was anderes Programmiert.
Das ursprüngliche Problem wurde nicht gelöst.

_________________

Links:
PureBasic Discord
[ENGINE] 2D Engine Nautilus (Win)
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye