Camera schaut durch Cube
Übersicht

bjh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
die begrenzung liegt bei 65536 (2^16) vertices pro mesh | ||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich jetzt einen "Cube" mit nur einer sichtbaren Seite erstellen will, bin ich so vorgegangen:
Code: [AUSKLAPPEN] Graphics3D 640, 480, 16, 2
SetBuffer BackBuffer() camera = CreateCamera() PositionEntity camera, 0, 0, - 5 mesh = CreateMesh() surface = CreateSurface(mesh) v0 = AddVertex(surface, 0, 0, 0) v1 = AddVertex(surface, 0, - 1, 0) v2 = AddVertex(surface, - 1, - 1, 0) AddTriangle(surface, v0, v1, v2) UpdateNormals mesh surface2 = CreateSurface(mesh) v0 = AddVertex(surface2, -1, 0, 0) v1 = AddVertex(surface2, 0, -0, 0) v2 = AddVertex(surface2, -1, -1, 0) AddTriangle(surface2, v0, v1, v2) UpdateNormals mesh AmbientLight 255,255,255 wood = LoadTexture("C:\Users\Hosch\Desktop\Dungeontest\wood.png") RotateEntity mesh,0,0,90 MoveEntity mesh,0,-2,1 EntityTexture mesh,wood While Not KeyHit(1) If KeyHit(200) Then MoveEntity camera,0,0,1 End If If KeyHit(208) Then MoveEntity camera,0,0,-1 End If UpdateWorld RenderWorld Flip Wend End Klappt wunderbar, aber das Texturieren funktioniert nicht. Muss ich noch was besonderes einstellen? Ich bekomme nur eine braune Fläche, aber die Textur entspricht die der Wand (siehe Screenshots Seite 1). |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ist vom Prinzip her richtig, aber du brauchst nicht extra zwei Surfaces erstellen, eines reicht. Außerdem lassen sich zwei der Vertices zusammenfassen.
TexturKoordianten sind der 5. und 6. Parameter. Hier mal mein Code: BlitzBasic: [AUSKLAPPEN] Global feld = CreateMesh() |
||
Mr.Floppy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst deinen Vertexen auch UV-Koordinaten zuweisen. Das wären die zwei Parameter nach den x-, y-, z-, Koordinaten => Addvertex(surface, x, y, z, u, v). Vielleicht hilft dir mein Beispielcode in diesem Thread https://www.blitzforum.de/foru...hp?t=39590 weiter.
- edit - Kruemelator war schneller. |
||
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Klappt wunderbar, danke!
Ich würde jetzt also aus Performancegründen alle "Felder" (siehe Beispielcode von Kruemelator) zu einem Mesh zusammenfassen? Also z.B. Code: [AUSKLAPPEN] allmeshes = CreateMesh
AddMesh feld1,allmeshes AddMesh feld2,allmeshes etc... Kann ich danach die Felder löschen mit FreeMesh? Beziehungsweise wie werde ich sie los, ich brauche sie ja nicht mehr? Wenn ich FreeMesh verwende, klappt es nicht so ganz. |
||
Kruemelator |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst die einzelnen Felder mit PositionMesh() und nicht PositionEntity() platzieren, das gleiche gilt für Scale und Rotate, dann klappt es. Und aufjedenfall die Felder dann mit FreeEntity löschen. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group