Das Bild kann ich in eine Positionsliste (xyz) verwandeln.
Wie könnte ich das umsetzten? (3D Anfänger)
Mein Code soweit:
Code: Alles auswählen
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