Seite 1 von 1

CreateMesh() - Fehlermeldung und falsche Triangle Zahl

Verfasst: 07.07.2013 20:18
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.