Model und Textur

  • GM 8
  • Model und Textur

    Hi,
    im editor:

    im game:
    Spoiler anzeigen

    position des models auf der map irrelevant - hier geht es nur um die texturen

    was ist hier los?
    ich erkenne, dass er meine felder alle in die erste zeile der textur zieht...also hellgrau wird gelb, dunkelgrau wird rot usw...aber wieso?

    ich benutzt das script
    // MOSAIC Light 3D OBJ IMPORTER
    // (c) 2006. Zoltan Percsich. All Rights Reserved.
    zum importieren.

    könnt ihr mir helfen?
    habe textur bereits gedreht, gespiegelt und und und...immer der selbe effekt.

    danke,OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • Sehr schwer zu sagen wo das Problem genau liegt. Hast du im Global Settings -> Between Pixels aus gemacht? Rein Theoretisch müsste es an der Graphik liegen. Da der Editor (als Gamemaker Programm) gut sieht und dann Plötzlich im spiel (als Graphik) es versaut.

    Aber bin mir nicht sicher!
  • im editor und im gm nutze ich dieselbe grafik - 256x256
    im gm lade ich die grafik in einen leeren background mit

    GML-Quellcode

    1. background_replace(bg_Haus_01,'Texturen\Haus_01.jpg',0,0)


    hier ist es besser zu sehen:
    Spoiler anzeigen
    im editor:

    vollständige darstellung der textur - entsprechend gezogen und gestaucht.

    im game:


    als ob er nur die erste pixelhöhe der grafik berücksichtigt... ohne die grafik an sich zu strecken oder zu stauchen


    kann das mit uv-mapping zusammen hängen?
    dass die koordinaten evtl. nicht sauber übergeben werden?

    mysteriös, OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • Was gut möglich sein kann, ist dass du die UV-Textur auf der y-Achse spiegeln musst.
    Der Game Maker hat ein etwas anderes Koordinatensystem als die meisten Programme (wie z.B: Blender.)
    Die Y-Achse ist beim GM gespiegelt. Der Macher des Mosaic light Scripts hat dies nicht berücksichtigt.
    Aus diesem Grund kann es passieren dass 3D Modelle die mit dem Mosaic light Script geladen wurden im Spiel
    gespiegelt dargestellt werden (auf der y-Achse gespiegelt um genauer zu sein) und die UV-Textur falsch dargestellt wird,
    da ebenso die UV-Koordinaten auf der y-Achse gespiegelt werden.
    Zumindest war das meine Erfahrung mit Blender...

    Versuch einfach mal die Textur auf der y-Achse zu spiegeln. (In irgendeinem Programm wie z.B: Paint.net)

    Falls das nicht helfen sollte, könnte es sein dass das Programm die informationen im obj modell so abspeichert, dass der mosaic-light Script diese nicht korrekt
    auslesen kann. Man müsste dann das Skript dementsprechend modifizieren. (Oder die modelle mit einem anderen 3D Programm exportieren, wessen .obj dateien mit dem
    Mosaic skript kompaktibel sind.)
  • danke für die antwort.
    das mit der texturspiegelung war auch meine erste idee - habe ich gelöst im mosaic-light script:
    vx gespiegelt, um das modell richtig darzustellen (rest mache ich im draw event) und
    ty gespiegelt, also textur um y achse:

    GML-Quellcode

    1. d3d_model_vertex_normal_texture(tm,vx*-1,vy,vz,nx,ny,nz,tx,ty*-1);


    dabei werden lediglich andere felder im game abgebildet, aber die koordinaten scheinbar nicht berücksichtigt.
    die idee, dass es am .obj-format vom AC3D liegen könnte, werde ich heute abend mal testen und das objekt entsprechend mit einem anderen prog exportieren.

    drück mir die daumen, OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • HI,

    test abgeschlossen - gleiche phänomen.

    objekt nach blender gezogen,alles i.O.
    objekt aus blender exportiert, wieder das gleiche problem.

    objekt in LithUnwrap gezogen, alles in ordnung, genaus so wie in blender und AC3D
    objekt aus LithUnwrap exportiert und ins spiel geladen, gleicher fehler wieder.

    jedes prog zeigt mir die uv-koordinaten aus dem objekt korrekt an...


    kann das am mosaic-light script liegen?

    danke euch,OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • GML-Quellcode

    1. d3d_model_vertex_normal_texture(tm,vx*-1,vy,vz,nx,ny,nz,tx,ty*-1);

    Wieso multiplizierst du vx mit -1?
    Die y-Koordinate müsste gespiegelt werden, nicht die x.
    Hinzu kommt noch aber dass durch das multiplizieren der x, y oder z koordinate culling bugs auftreten können ,da die faces dann in die entgegengesetzte richtung schauen.

    Versuch es einfach mal so:

    GML-Quellcode

    1. d3d_model_vertex_normal_texture(tm,vx,vy,vz,nx,ny,nz,tx,ty*-1);

    Wenn du die ty koordinate mit -1 multiplizierst, darfst du die UV textur aber dann nichtmehr auf der y-Achse spiegeln.

    kann das am mosaic-light script liegen?

    Ja, kann es. Wobei ich sagen muss dass ich es schonmal geschafft habe ein 3D Modell aus blender so zu exportieren, dass
    es von Mosaic light korrekt erkannt wurde. (Weiss blos nichtmehr wie.)

    Das Problem ist einfach, das solche Skripts wie Mosaic light nicht alle verschiedenen formatierungen des obj-formats unterstützen die existieren.
    Das führt eben zu bugs.
  • danke für deine antwort,

    LEWA schrieb:

    Wieso multiplizierst du vx mit -1?
    Die y-Koordinate müsste gespiegelt werden, nicht die x.
    Hinzu kommt noch aber dass durch das multiplizieren der x, y oder z koordinate culling bugs auftreten können ,da die faces dann in die entgegengesetzte richtung schauen.
    die vx spiegel ich, damit das modell gespiegelt wird. dass dadurch auch die normals gespiegelt werden, ist mir bekannt - kompensiere ich an anderer stelle.
    auch ohne die spiegelung in vx habe ich das gleiche problem...

    LEWA schrieb:

    Wenn du die ty koordinate mit -1 multiplizierst, darfst du die UV textur aber dann nichtmehr auf der y-Achse spiegeln.
    da ist der fehler :)

    wenn ich die textur im script spiegeln lasse (mit ty*-1), dann verzerrt er mir die texturen entgegen der uv-koordinaten.
    habe es so getestet und es geht:

    GML-Quellcode

    1. d3d_model_vertex_normal_texture(tm,vx*-1,vy,vz,nx,ny,nz,tx,ty);

    ...naja, fast jedenfalls - nun muss ich die grafik selbst wieder in paint.net spiegeln, was ich mir dadurch eigentlich ersparen wollte...

    aber wieso?
    an welcher stelle wird denn noch gespiegelt?


    kann ich das spiegeln der textur in paint.net evtl. an anderer stelle im script oder so erledigen, bzw. wo werden denn die uv-koordinaten überhaupt gespiegelt? jedenfalls nicht absichtlich von mir. Oo

    hervorragend - dankeschön,OC
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
    (Albert Einstein)
  • OraCom schrieb:

    kann ich das spiegeln der textur in paint.net evtl. an anderer stelle im script oder so erledigen, bzw. wo werden denn die uv-koordinaten überhaupt gespiegelt? jedenfalls nicht absichtlich von mir. Oo

    Versuch mal dies.

    GML-Quellcode

    1. d3d_model_vertex_normal_texture(tm,vx*-1,vy,vz,nx,ny,nz,tx,1-ty);