Problem mit 3D

  • Problem mit 3D

    Tjo, ansich funzt es ja so wie ich will, .... wenn da nicht ein Detail wäre, was ich trotz stundenlangem herumprobieren nicht so hinbekomm, wie es soll:

    Ich hab da nen D3D-Model und darin einige Vertices, testweise nur 3 Stück, als Trianglefan.

    Nu will ich das ganze texturieren, d.h. das Dreieck mit ner Textur versehen. Aber egal wie ichs schreibe, es klappt nicht. Die Dinger sind immer gefüllt mit konstant schwarzer Farbe. Sogar das "runterstufen" auf "nur farbige" Vertices bringt keinen Erfolg. Nicht ma farbig werden sie.

    Hier mal ein paar Schnipsel aus dem Code ... vielleicht sieht einer ja den Bug. Ich seh ihn nich :(

    Das Model ...

    global.modberg0=d3d_model_create();
    d3d_model_primitive_begin(global.modberg0,pr_trianglefan);
    d3d_model_vertex_color(global.modberg0,0,0,-10*rad,c_red,1);
    d3d_model_vertex_color(global.modberg0,-rad,-rad,0,c_yellow,1);
    d3d_model_vertex_color(global.modberg0,-rad,rad,0,c_blue,1);
    d3d_model_primitive_end(global.modberg0);


    ... und der Schnüffler ... ne scherz, der Aufruf (natürlich im Draw Event):

    global.texberg=background_get_texture(bgBerg);
    d3d_model_draw(global.modberg0,x,y,0,global.texberg);

    Und ja, ich denke eigentlich, dass ich mich an alle Konventionen gehalten habe.
    bgBerg is ein gewöhnlicher Background, 64x64, also eine Potenz von 2, wie es sein muss
    Außerdem hab ich spaßeshalber alles mal gesetzt ... eine Lichtquelle, Culling aus, und so weiter und so weiter ... es sollte ansich alles da sein. Alles ... nur keine Texturen.

    Das Ergebnis sieht schlichtweg SCHWARZ-WEISS aus. Ich verstehs nich ....
    Schöö, euch Poly.
  • setz mal

    GML-Quellcode

    1. draw_set_color(c_white);

    Alle Rechtschreibfehler sind © bei David K. Dein Schicksal aus der Dose(Ich würde nicht Zeigen drücken):
    Spoiler anzeigen
    {
    with(leser){ instance_destroy(); }
    show_message("Muahahaha...! Ich hab euch alle umgebracht!");
    }

    [schild]:xlol:[/schild]
  • für texturierte vertexes brauchst du so einen ähnlichen code:

    GML-Quellcode

    1. // GML Code created with Smart Poly - Version: 1.30
    2. // © 2005 by VectorGames.de - All rights reserved!
    3. // Vertex Group 0
    4. draw_set_alpha(1);
    5. d3d_model_primitive_begin(Model1,5);
    6. d3d_model_vertex_texture(Model1,-95,-63,0,0,1);
    7. d3d_model_vertex_texture(Model1,60,0,80,0.39,0.06);
    8. d3d_model_vertex_texture(Model1,-90,136,0,1,1);
    9. d3d_model_primitive_end();

    die letzten beiden argumente sind die UV texturkoordianten. Diese geben an, an welcher stelle der Vertex auf der Textur liegen soll.
    In 3d sieht das dann ungefähr so aus (rechts das model, links die UV map):
    Bilder
    • Unbenannt-1.jpg

      98,43 kB, 808×629, 232 mal angesehen
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Meinst du sowas?

    global.texberg=background_get_texture(bgBerg);
    global.modberg0=d3d_model_create();
    d3d_model_primitive_begin(global.modberg0,pr_trianglefan);
    d3d_model_vertex_texture(global.modberg0,0,0,-10*rad,1,1);
    d3d_model_vertex_texture(global.modberg0,-rad,-rad,0,0,1);
    d3d_model_vertex_texture(global.modberg0,-rad, rad,0,0,0);
    d3d_model_vertex_texture(global.modberg0,rad, rad,0,1,0,);
    d3d_model_vertex_texture(global.modberg0,rad,-rad,0,1,1);
    d3d_model_vertex_texture(global.modberg0,-rad,-rad,0,0,1);
    d3d_model_primitive_end(global.modberg0);

    Hab ich drin ... funktioniert trotzdem nicht :(

    Wobei "nicht" heißt "nicht so, wie es soll", genauer: es wird zwar das Modell gemalt, aber KEINE textur drin. Nicht eine einzige. Selbst wenn ich Culling nochma im Draw-Event auf False schalte, wenn ich Lighting setze, und alles andere ... es is trotzdem alles komlett Schwarz-Weiss.

    EDIT .... Okay, jetzt gehts auf einmal. Frag mich nicht, worans lag ... aber jetzt hab ich die entsprechenden Zeilenn einfach nochmal geschrieben, komplett neu, und auf einmal klappts ...

    EDIT 2 .... Ich glaube der entscheidende Knackpunkt war das Draw_Color (c_white). Ich hättte nicht erwartet, dass man damit Texturen nachkolorieren kann, bzw. wenn sie default auf c_black gesetzt sind, dass dann alles "weiße" inder Textur zu schwarz wird. Jetzt klappt es wie vorgesehen und sogar noch besser, da ich jetzt glaube zu verstehen wie draw_color und textur_color zusammenwirken. Ich bastel mal ne Runde, wenn sich weitere Probleme auftun ... weiß ich ja, wo ich die Experten finde. :)
    Schöö, euch Poly.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Polymnius ()