CreateMesh() - Fehlermeldung und falsche Triangle Zahl

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

CreateMesh() - Fehlermeldung und falsche Triangle Zahl

Beitrag von Makke »

Hallo zusammen,

ich teste gerade die CreateMesh Funktion, ich erstelle händisch ein flache 3D Form, quasi so:

Code: Alles auswählen

  TEX_Terrain = LoadTexture(#PB_Any, "terrain_dummy.png")
  MAT_Terrain = CreateMaterial(#PB_Any, TextureID(TEX_Terrain))
  MSH_Terrain = CreateMesh(#PB_Any, #PB_Mesh_TriangleList , #PB_Mesh_Static)
  AddSubMesh(#PB_Mesh_TriangleList)
  For x = 0 To width Step 2
    For z = 0 To height Step 2
      ; vertex 0,0
      MeshVertexPosition(field(x, z)\X, field(x, z)\Y, field(x, z)\Z)
      MeshVertexNormal(0, 1, 0)
      MeshVertexTextureCoordinate(1, 1)
      field_vertexidx(x, z) = counter : counter + 1
      ; vertex 1,0
      MeshVertexPosition(field(x+1, z)\X, field(x+1, z)\Y, field(x+1, z)\Z)
      MeshVertexNormal(0, 1, 0)
      MeshVertexTextureCoordinate(0, 1)
      field_vertexidx(x+1, z) = counter : counter + 1
      ; vertex 0,1
      MeshVertexPosition(field(x, z+1)\X, field(x, z+1)\Y, field(x, z+1)\Z)
      MeshVertexNormal(0, 1, 0)
      MeshVertexTextureCoordinate(1, 0)
      field_vertexidx(x, z+1) = counter : counter + 1
      ; vertex 1,1
      MeshVertexPosition(field(x+1, z+1)\X, field(x+1, z+1)\Y, field(x+1, z+1)\Z)
      MeshVertexNormal(0, 1, 0)
      MeshVertexTextureCoordinate(0, 0)
      field_vertexidx(x+1, z+1) = counter : counter + 1
    Next
  Next

  For x = 0 To width-1
    For z = 0 To height-1
      MeshFace(field_vertexidx(x, z), field_vertexidx(x+1, z+1), field_vertexidx(x+1, z))
      MeshFace(field_vertexidx(x, z), field_vertexidx(x, z+1), field_vertexidx(x+1, z+1))
    Next
  Next

  FinishMesh(#True)
  UpdateMeshBoundingBox(MSH_Terrain)
  BuildMeshShadowVolume(MSH_Terrain)
  
  ENT_Terrain = CreateEntity(#PB_Any, MeshID(MSH_Terrain), MaterialID(MAT_Terrain))
Das Mesh wird auch erstellt und angezeigt, aber ich bekomme folgende Fehlermeldung in der OGRE.log:

Code: Alles auswählen

 Can't assign material none to SubEntity of E72223448 because this Material does not exist. Have you forgotten to define it in a .material script?
Damit kann ich nichts anfangen, in der CreateEntity Anweisung verwende ich ja ein existierendes Material. Zudem kommt diese Fehlermeldung nicht in den Beispielen. Also wo ist der Fehler ?

Zudem erstelle ich zB dieses Gebilde mit 128x128 Vertices (=16384), demnach müssten 32768 Faces da sein, die Engine Funktion CountRenderedTriangles() gibt aber insgesamt 97802 aus ... irgendwie bin ich momentan mit der 3D Engine echt gefrustet, zig Sachen funktionierren nicht oder nicht so wie man meint bzw. es beschrieben ist.

Weiss einer hierzu Rat ?

[EDIT]
Ich habe das Problem gelöst, die Variable COUNTER hatte ich vorher schonmal genutzt und nicht wieder auf NULL gesetzt, nachdem ich das getan hatte, kam die Fehlermeldung nicht mehr.
---
Windows 11 (64 bit)