Dynamische 3D Schatten

  • GM 8
  • Dynamische 3D Schatten

    Hellooo,

    ich hab da mal so eine frage und zwar will ich dynamische schatten erstellen, von Modellen und von Formen. Da ich mich
    kaum mit 3D befasst habe, fehlt mir das nötige Verständnis dafür :)

    Ich habe ein Beispiel gefunden, aber das hat mir nicht gefallen, weil der schatten komplett schwarz war
    und nicht halb transparent.

    Code:
    Spoiler anzeigen

    GML-Quellcode

    1. var xo, yo, a, d;
    2. xo = (argument6-argument1)/-20;
    3. yo = (argument7-argument2)/-20;
    4. a = sqrt(xo*xo+yo*yo);
    5. d3d_transform_stack_push()
    6. d3d_set_lighting( true );
    7. d3d_light_define_direction( 30, xo, yo, -.2, argument8 )
    8. d3d_light_define_direction( 31, -xo, -yo, .2, c_dkgray );
    9. d3d_light_enable( 30, 1 ); d3d_light_enable( 31, 1 )
    10. d3d_transform_set_identity ();
    11. d3d_transform_add_rotation_z( argument5 )
    12. d3d_transform_add_translation( argument1, argument2, argument3 )
    13. d3d_model_draw( argument0, 0, 0, 0, argument4 )
    14. d3d_transform_set_identity ();
    15. d3d_set_lighting( false )
    16. d3d_transform_add_rotation_z( argument5 )
    17. if (abs(a) > 0.0001) {
    18. d = radtodeg(arctan2(yo,xo))
    19. d3d_transform_add_rotation_z (d);
    20. d3d_transform_add_scaling(1/1.73205081,1,-a/2);
    21. d3d_transform_add_rotation_y (60);
    22. d3d_transform_add_scaling(3,1,-1);
    23. d3d_transform_add_rotation_y(30);
    24. d3d_transform_add_scaling(1,1,2/1.73205081/a);
    25. d3d_transform_add_rotation_z(-d);
    26. d3d_transform_add_scaling(1,1,0) }
    27. d3d_set_fog( 1, c_black, 0, 0 )
    28. d3d_transform_add_translation( argument1, argument2, argument3 + .1 )
    29. d3d_model_draw( argument0, 0, 0, 0, argument4 )
    30. d3d_set_fog( 0, c_black, 0, 0 )
    31. d3d_transform_set_identity()
    32. d3d_transform_stack_pop()
    Alles anzeigen


    Dann habe ich gelesen das man mit einer DLL die models laden sollte und dann kann man auch den alpha
    Wert festlegen. Da ich das alles aber ohne DLL's schaffen will, (was früher oder später nicht möglich sein wird, aber ich will nicht beim ersten
    Problem dran scheitern) frag ich einfach mal hier ob jemand eine Idee/Lösung hat :)

    Es soll noch einen Code geben (schon vergessen) aber der Klappte nicht, weil das Modell Farbwerte gespeichert hat.

    EDIT: was ich auch gerne wissen würde, wäre wie man d3d_model_draw( argument0, 0, 0, 0, argument4 ) diesen code so umschreibt, dass
    das geladene Modell durchsichtig sein kann.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Nico001 ()

  • Benutzer online 1

    1 Besucher