3D Versuche: Würfel + Textur
-
- Beiträge: 63
- Registriert: 25.12.2009 18:48
3D Versuche: Würfel + Textur
Ich habe eben grad mit der 3D Programmierung in PB angefangen. Ist absolutes Neuland für mich.
Nun will ich auf mein Europa (eine Heighmap) einen Würfel positionieren.
Aber dafür brauch ich ein Würfel-Model und ne Textur dazu. (Brauch ich sonst noch was dafür)?
Kann mir jemand die benötigten Sachen für einen Würfel geben? Das wäre echt nett:)
LG und Danke im Vorraus,
NathanielBlack
Nun will ich auf mein Europa (eine Heighmap) einen Würfel positionieren.
Aber dafür brauch ich ein Würfel-Model und ne Textur dazu. (Brauch ich sonst noch was dafür)?
Kann mir jemand die benötigten Sachen für einen Würfel geben? Das wäre echt nett:)
LG und Danke im Vorraus,
NathanielBlack
Re: 3D Versuche: Würfel + Textur
Schau mal unter Examples "MeshManual.pb" an, da ist alles was du für einen würfel brauchst drin



-
- Beiträge: 63
- Registriert: 25.12.2009 18:48
Re: 3D Versuche: Würfel + Textur
Klappt aber irgendwie immer noch nicht. Die "Stadt" wird auf der Karte nirgens angezeigt.
Wäre nett wenn sich jemand das mal anschauen würde und mir sagt, was falsch ist;)
http://www.speedyshare.com/files/23035535/terrain.zip
Also ich weiß grad net, ob ich in dieser "Version" die Koordianten beim Entity angegeben habe, aber mit oder ohne war egal- es ging immer nicht.
Und es wäre gut, wenn ich so nen Würfel als richtiges Model mit Textur hätte und nicht solche elend Langen DataSections die ich sowieso nicht verstehe.
Liebe Grüße,
NathanielBlack
Wäre nett wenn sich jemand das mal anschauen würde und mir sagt, was falsch ist;)
http://www.speedyshare.com/files/23035535/terrain.zip
Also ich weiß grad net, ob ich in dieser "Version" die Koordianten beim Entity angegeben habe, aber mit oder ohne war egal- es ging immer nicht.
Und es wäre gut, wenn ich so nen Würfel als richtiges Model mit Textur hätte und nicht solche elend Langen DataSections die ich sowieso nicht verstehe.
Liebe Grüße,
NathanielBlack
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: 3D Versuche: Würfel + Textur
Was du brauchst ist ein Model-Editor, keinen Babysitter der dir alles abnimmt.Kann mir jemand die benötigten Sachen für einen Würfel geben? Das wäre echt nett:)
Besorg dir DeleD 3D und auf gehts. Das ist der einfachste, feature-reichste Editor den du finden wirst und kostenlos noch dazu.
Außerdem gibt's ein integriertes Plugin womit du ins .mesh-Format konvertieren kannst.
Alles in allem wirklich simpel gestrickt und leicht zu verstehen. Du wirst dich früher oder später sowieso
mit der Materie auseinandersetzen müssen von daher lieber früher als spät.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Re: 3D Versuche: Würfel + Textur
Aus irendeinem Grund, den ich nicht kenne musst du das Terrain zuerst und dann erst die ganzen Entitys erstellen.
Auf der linken Seite ist bei mir der würfel ganz gut zu erkennen
edit:
Auf der linken Seite ist bei mir der würfel ganz gut zu erkennen
Code: Alles auswählen
#CameraSpeed = 2
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
OpenScreen(DesktopWidth(0),DesktopHeight(0),32,"3D Terrain Test")
UsePNGImageDecoder()
;Terrain erstellen
CreateMaterial (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), #PB_Material_Add)
CreateTerrain("terrain.png", MaterialID(0))
Sun(250,144,474,#Yellow)
;test bild laden
Global test1 = LoadSprite(#PB_Any,"test.png")
;stadt
tstadt = CreateMesh(#PB_Any,100)
SetMeshData(tstadt, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color, ?CubeData2, 8)
SetMeshData(tstadt, #PB_Mesh_Face, ?CubeDataIndex, 12)
mstadt = CreateMaterial(#PB_Any,LoadTexture(2,"stadt.jpg"))
Global stadt = CreateEntity(#PB_Any,MeshID(tstadt),MaterialID(mstadt))
;1 Kamera erstellen
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 250, 269, 474)
SkyDome("clouds.jpg",10)
CreateWater(0,159,4,101,100,#PB_World_WaterSmooth|#PB_World_WaterHighQuality|#PB_World_WaterCaustics | #PB_World_WaterSun)
Repeat
;Steuerung
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
CameraLocate(0,CameraX(0),Height,CameraZ(0))
MoveCamera (0, KeyX, -CameraY(0)+50, KeyY)
RenderWorld()
DisplaySprite(test1,0,0)
StartDrawing(SpriteOutput(test1))
Box(0,0,SpriteWidth(test1),SpriteHeight(test1),#Green)
DrawText(0,0,"Camera X = "+Str(CameraX(0)),#Red)
DrawText(0,20,"Camer Y = "+Str(CameraY(0)),#Red)
DrawText(0,40,"Camera Z = "+Str(CameraZ(0)),#Red)
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
End
#SQRT13 = 0.57735026
DataSection
CubeData2:
Data.f -100.0,100.0,-100.0 ; 0 position
Data.f -#SQRT13,#SQRT13,-#SQRT13 ; 0 normal
Data.l 255 ; 0 colour
Data.f 100.0,100.0,-100.0 ; 1 position
Data.f #SQRT13,#SQRT13,-#SQRT13 ; 1 normal
Data.l 255 ; 1 colour
Data.f 100.0,-100.0,-100.0 ; 2 position
Data.f #SQRT13,-#SQRT13,-#SQRT13 ; 2 normal
Data.l 255 ; 2 colour
Data.f -100.0,-100.0,-100.0 ; 3 position
Data.f -#SQRT13,-#SQRT13,-#SQRT13 ; 3 normal
Data.l 255 ; 3 colour
Data.f -100.0,100.0,100.0 ; 4 position
Data.f -#SQRT13,#SQRT13,#SQRT13 ; 4 normal
Data.l 255 ; 4 colour
Data.f 100.0,100.0,100.0 ; 5 position
Data.f #SQRT13,#SQRT13,#SQRT13 ; 5 normal
Data.l 255 ; 5 colour
Data.f 100.0,-100.0,100.0 ; 6 position
Data.f #SQRT13,-#SQRT13,#SQRT13 ; 6 normal
Data.l 255 ; 6 colour
Data.f -100.0,-100.0,100.0 ; 7 position
Data.f -#SQRT13,-#SQRT13,#SQRT13 ; 7 normal
Data.l 255 ; 7 colour
CubeDataIndex:
Data.w 0,2,3
Data.w 0,1,2
Data.w 1,6,2
Data.w 1,5,6
Data.w 4,6,5
Data.w 4,7,6
Data.w 0,7,4
Data.w 0,3,7
Data.w 0,5,1
Data.w 0,4,5
Data.w 2,7,3
Data.w 2,6,7
EndDataSection
Hey, cool werd ich mal testen. Ich hab das bis jetzt immer mit dem mesh converter von ogre selbst mit einem meist nicht zufriedenstellenden ergebniss gemachtFluid Byte hat geschrieben: Besorg dir DeleD 3D und auf gehts. Das ist der einfachste, feature-reichste Editor den du finden wirst und kostenlos noch dazu.



-
- Beiträge: 63
- Registriert: 25.12.2009 18:48
Re: 3D Versuche: Würfel + Textur
Danke euch beiden, dieser riesige Würfel steht nun auf der Map.
Werde mir jetzt mal mit dem empfohlenden Programm eine kleine Stadt basteln (wenns denn wirklich so einfach ist^^)
Werde mir jetzt mal mit dem empfohlenden Programm eine kleine Stadt basteln (wenns denn wirklich so einfach ist^^)
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: 3D Versuche: Würfel + Textur
Naja, einfach ist relativ aber schließlich ham' wa' alle mal irgendwann angefangen.
Und obwohl der Spruch platt ist: Übung macht den Meister
Und obwohl der Spruch platt ist: Übung macht den Meister

Windows 10 Pro, 64-Bit / Outtakes | Derek
-
- Beiträge: 63
- Registriert: 25.12.2009 18:48
Re: 3D Versuche: Würfel + Textur
So, ich habe mir jetzt eine Stadt erstellt. (Stadt = Würfel^^)
Sie ist auch an der Position an der sie sein soll. Jetzt will ich nur wissen, warum MousePick bei mir ned funzt. Ich will ja wissen, ob mein Mauszeiger grad auf ner Stadt ist oder nicht und den Stadtnamen dann ausgeben.
Bei mir gibt MousePick einfach immer zurück, dass es auf Wasser oder im Nichts ist. Wenn es im Nichts ist, stimmt die Rückgabe auch, aber wenn ich auf Landmasse bin dann gibt es auch Wasser statt Land zurück -.-
Und über einer Stadt wird auch Wasser zurückgegeben.
Hat jemand ne Idee woran das liegen könnte. Ich habe es vor und nach Render World versucht, aber beides hat nicht geklappt.
Danke im Vorraus,
NathanielBlack
ps. Hat ganz schön lange gedauert, den Würfel (= Stadt) in die richtige größe zu bringen^^
Sie ist auch an der Position an der sie sein soll. Jetzt will ich nur wissen, warum MousePick bei mir ned funzt. Ich will ja wissen, ob mein Mauszeiger grad auf ner Stadt ist oder nicht und den Stadtnamen dann ausgeben.
Bei mir gibt MousePick einfach immer zurück, dass es auf Wasser oder im Nichts ist. Wenn es im Nichts ist, stimmt die Rückgabe auch, aber wenn ich auf Landmasse bin dann gibt es auch Wasser statt Land zurück -.-
Und über einer Stadt wird auch Wasser zurückgegeben.
Hat jemand ne Idee woran das liegen könnte. Ich habe es vor und nach Render World versucht, aber beides hat nicht geklappt.
Danke im Vorraus,
NathanielBlack
ps. Hat ganz schön lange gedauert, den Würfel (= Stadt) in die richtige größe zu bringen^^
Re: 3D Versuche: Würfel + Textur
Wenn ich die Würfel kleiner mache zeigt es mir die Nämen der Städte auch nicht mehr an.. wohl ein fehler von Ogre.
aber ich mach ogre sowieso nicht
aber ich mach ogre sowieso nicht
Code: Alles auswählen
#CameraSpeed = 2
Define.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data", #PB_3DArchive_FileSystem)
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
OpenScreen(DesktopWidth(0),DesktopHeight(0),32,"3D Terrain Test")
UsePNGImageDecoder()
;Terrain erstellen
CreateMaterial (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), #PB_Material_Add)
CreateTerrain("terrain.png", MaterialID(0))
Sun(250,144,474,#Yellow)
;test bild laden
Global test1 = LoadSprite(#PB_Any,"test.png")
;stadt
tstadt = CreateMesh(#PB_Any,100)
SetMeshData(tstadt, #PB_Mesh_Vertex | #PB_Mesh_Normal | #PB_Mesh_Color, ?CubeData2, 8)
SetMeshData(tstadt, #PB_Mesh_Face, ?CubeDataIndex, 12)
mstadt = CreateMaterial(#PB_Any,LoadTexture(2,"stadt.jpg"))
Global stadt1 = CreateEntity(#PB_Any,MeshID(tstadt),MaterialID(mstadt))
Global stadt2 = CreateEntity(#PB_Any,MeshID(tstadt),MaterialID(mstadt))
Global stadt3 = CreateEntity(#PB_Any,MeshID(tstadt),MaterialID(mstadt))
ScaleEntity(stadt1,0.08,0.08,0.08)
ScaleEntity(stadt2,0.08,0.08,0.08)
ScaleEntity(stadt3,0.08,0.08,0.08)
MoveEntity(stadt1,274,TerrainHeight(274,341)+27,341)
MoveEntity(stadt2,348,TerrainHeight(348,436)+27,436)
MoveEntity(stadt3,491,TerrainHeight(491,304)+27,304)
;1 Kamera erstellen
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 250, 269, 474)
maus=CreateSprite(-1,5,5)
SkyDome("clouds.jpg",10)
CreateWater(0,159,4,101,100,#PB_World_WaterSmooth|#PB_World_WaterHighQuality|#PB_World_WaterCaustics | #PB_World_WaterSun)
Repeat
;Steuerung
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
CameraLocate(0,CameraX(0),Height,CameraZ(0))
MoveCamera (0, KeyX, -CameraY(0)+50, KeyY)
RenderWorld()
DisplaySprite(test1,0,0)
DisplaySprite(maus,MouseX(),MouseY())
StartDrawing(SpriteOutput(test1))
Box(0,0,SpriteWidth(test1),SpriteHeight(test1),#Green)
DrawText(0,0,"Camera X = "+Str(CameraX(0)),#Red)
DrawText(0,20,"Camer Y = "+Str(CameraY(0)),#Red)
DrawText(0,40,"Camera Z = "+Str(CameraZ(0)),#Red)
DrawText(0,60,Str(MousePick(0,MouseX(),MouseY())))
Select MousePick(0,MouseX(),MouseY())
Case stadt1
DrawText(0,80,"London")
Case stadt2
DrawText(0,80,"Paris")
Case stadt3
DrawText(0,80,"Berlin")
EndSelect
StopDrawing()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
End
#SQRT13 = 0.57735026
DataSection
CubeData2:
Data.f -100.0,100.0,-100.0 ; 0 position
Data.f -#SQRT13,#SQRT13,-#SQRT13 ; 0 normal
Data.l 255 ; 0 colour
Data.f 100.0,100.0,-100.0 ; 1 position
Data.f #SQRT13,#SQRT13,-#SQRT13 ; 1 normal
Data.l 255 ; 1 colour
Data.f 100.0,-100.0,-100.0 ; 2 position
Data.f #SQRT13,-#SQRT13,-#SQRT13 ; 2 normal
Data.l 255 ; 2 colour
Data.f -100.0,-100.0,-100.0 ; 3 position
Data.f -#SQRT13,-#SQRT13,-#SQRT13 ; 3 normal
Data.l 255 ; 3 colour
Data.f -100.0,100.0,100.0 ; 4 position
Data.f -#SQRT13,#SQRT13,#SQRT13 ; 4 normal
Data.l 255 ; 4 colour
Data.f 100.0,100.0,100.0 ; 5 position
Data.f #SQRT13,#SQRT13,#SQRT13 ; 5 normal
Data.l 255 ; 5 colour
Data.f 100.0,-100.0,100.0 ; 6 position
Data.f #SQRT13,-#SQRT13,#SQRT13 ; 6 normal
Data.l 255 ; 6 colour
Data.f -100.0,-100.0,100.0 ; 7 position
Data.f -#SQRT13,-#SQRT13,#SQRT13 ; 7 normal
Data.l 255 ; 7 colour
CubeDataIndex:
Data.w 0,2,3
Data.w 0,1,2
Data.w 1,6,2
Data.w 1,5,6
Data.w 4,6,5
Data.w 4,7,6
Data.w 0,7,4
Data.w 0,3,7
Data.w 0,5,1
Data.w 0,4,5
Data.w 2,7,3
Data.w 2,6,7
EndDataSection



-
- Beiträge: 63
- Registriert: 25.12.2009 18:48
Re: 3D Versuche: Würfel + Textur
Sehr nett, hörmi! Danke dir. ( Du kennst dich bald besser im Code aus als ich^^)
Nur leider bringt es mir nichts, wenn ich solche fetten Bolzen als Städte auf der Map habe. Ich will die Städte so groß machen, wie die auf diesen Screen aus (dem sesationellen) Medieval II:
http://www.joergspielt.de/wp-content/up ... ieval2.jpg
Muss ich gleich ne` andere Engine nehmen, oder kann ich das auch irgendwie anders realisieren? Wir macht ihr sowas mit Ogre?
(Bin auf jeden Fall froh, dass der Fehler nicht an mir lag:P)
Danke im Vorraus,
NathanielBlack
edit:
Komisch... ScaleEntity(stadt1,0.02,0.02,0.02) geht auch. Wieso geht es dann bei dir nicht?
edit2:
Nochmal komisch...Mit meinem anderen -"richtigen"- PC gehts auch ned, wenn es so klein ist. Also echt seltsam. Vielleicht liegts an der Bildschirmauflösung. Welche nutzt du?
edit3:
Abermals komisch... "MoveEntity(stadt1,274,TerrainHeight(274,341)+27,341)"...Wenn ich hier die +27 weglasse bzw. zu +17 ändere, sodass das neue kleinere Model nicht mehr in der Luft ist funktioniert es auch nicht mehr -.- Übrigens: TerrainHeight gibt zu diesem Zeitpunkt (wahrscheinlch weil die Welt noch net gerendert ist) 0.00 zurück. Also reicht auch nur die "27" bzw. "17".
Nur leider bringt es mir nichts, wenn ich solche fetten Bolzen als Städte auf der Map habe. Ich will die Städte so groß machen, wie die auf diesen Screen aus (dem sesationellen) Medieval II:
http://www.joergspielt.de/wp-content/up ... ieval2.jpg
Muss ich gleich ne` andere Engine nehmen, oder kann ich das auch irgendwie anders realisieren? Wir macht ihr sowas mit Ogre?
(Bin auf jeden Fall froh, dass der Fehler nicht an mir lag:P)
Danke im Vorraus,
NathanielBlack
edit:
Komisch... ScaleEntity(stadt1,0.02,0.02,0.02) geht auch. Wieso geht es dann bei dir nicht?
edit2:
Nochmal komisch...Mit meinem anderen -"richtigen"- PC gehts auch ned, wenn es so klein ist. Also echt seltsam. Vielleicht liegts an der Bildschirmauflösung. Welche nutzt du?
edit3:
Abermals komisch... "MoveEntity(stadt1,274,TerrainHeight(274,341)+27,341)"...Wenn ich hier die +27 weglasse bzw. zu +17 ändere, sodass das neue kleinere Model nicht mehr in der Luft ist funktioniert es auch nicht mehr -.- Übrigens: TerrainHeight gibt zu diesem Zeitpunkt (wahrscheinlch weil die Welt noch net gerendert ist) 0.00 zurück. Also reicht auch nur die "27" bzw. "17".