Skocz do zawartości

Nakładanie się dwóch tekstur


Rekomendowane odpowiedzi

Witam

 

Czy jest taka możliwość bym mógł nałożyć na jakiś obiekt 3D dwie tekstury na raz np. dla polepszenia grafiki ? Bo ja kiedyś pracowałem długo przy Serious Editor (edytor do Serious Sama) była tam możliwość właśnie nałożenia dwóch tekstur a nawet 3, polega to na tym że jest zwykła tekstura, i nakładam na nią inną zazwyczaj w odcieniach szarości i bardzo detaliczną:

 

Czyli:

 

Mam jedną teksturke zwykłą:

 

FOTKA

 

Następnie mam taką:

 

FOTKA

 

Po połączeniu tych dwóch powstaje mi taka tekstura:

 

FOTKA

 

Jest różnica no nie ?? I właśnie chodzi mi o to bym mógł w GM coś takiego zastosować. A nie wiem jak...

 

Pozdrawiam Moho !

 

EDIT: A i miałbym jeszcze jedno pytanie. Czy ten sposób "polepszenia grafiki" ma jakąś swoją nazwe ?

Odnośnik do komentarza
Udostępnij na innych stronach

I tak w GM z tego co się orientuję nie ma bump tekstury, to i tak nie osiągnąłbyś tego efektu co normalnie w modelach 3D ;p .

 

I tak w GM z tego co się orientuję nie ma bump tekstury, to i tak nie osiągnąłbyś tego efektu co normalnie w modelach 3D ;p .

Odnośnik do komentarza
Udostępnij na innych stronach

Nakładanie dwóch tekstur to IMO głupota. Właśnie po to stworzyłeś trzecią teksturę, żeby ją nałożyć na model. :)

 

No dobra wiem że sobie sam zrobiłem już tą teksture tyle że to GM ma wygenerować taki efekt z dwóch osobnych tekstur.

Odnośnik do komentarza
Udostępnij na innych stronach

No to jak umiesz nałożyć dwie tekstury na siebie w innym programie to rób to właśnie w nim. Wg.mnie to jest wyszukiwanie na siłe wad w GM.

 

A co do tematu:

Nie da się tego zrobić, nie da się wygenerować takiej tekstury w GM.

Odnośnik do komentarza
Udostępnij na innych stronach

No to jak umiesz nałożyć dwie tekstury na siebie w innym programie to rób to właśnie w nim. Wg.mnie to jest wyszukiwanie na siłe wad w GM.

 

A co do tematu:

Nie da się tego zrobić, nie da się wygenerować takiej tekstury w GM.

 

 

Napewno jest jakiś sposób tylko go nie znacie...

Odnośnik do komentarza
Udostępnij na innych stronach

IMO można skorzystać z blendingu, ale mogę się mylić. Czyli coś takiego: rysowanie sprita-podkładu -> nowy blending -> rysowanie sprita-tekstury z zastosowaniem takiego koloru, aby wydawał się pół-przeźroczysty -> wyłączenie bledningu. Może coś takiego wyjdzie, ale nie próbowałem więc nie wiem :]

Odnośnik do komentarza
Udostępnij na innych stronach

IMO można skorzystać z blendingu, ale mogę się mylić. Czyli coś takiego: rysowanie sprita-podkładu -> nowy blending -> rysowanie sprita z zastosowaniem takiego koloru, aby wydawał się pół-przeźroczysty -> wyłączenie bledningu. Może cośtakiego wyjdzie, ale nie próbowałem więc nie wiem :]

 

No będzie trza sprubować... lecz bardziej wolałbym żeby to było w rodzaju kodu gdybym np chciał zrobić w opcjach Wł. i Wył. tego efektu...

 

IMO ? - Instytut Materiałów Ogniotrwałych :lol: :lol: :lol: :lol: :lol: :lol: ^^" Taki żarcik...

Odnośnik do komentarza
Udostępnij na innych stronach

niekoniecznie możliwe że niema sposobu to nie jest znowu program w którym zrobisz wszystko

 

ha śmiem się nie zgodzić z tobą moim zdaniem w GM można zrobić praktycznie wszystko ograniczenia stawiają tylko umiejętności programisty.

 

jeśli chodzi o te texturki z tego co wiem jest to możliwe ale za pomocą dll

np engin do GM irrlicht'a jest w stanie to zrobić na dodatek z tego co czytałem o nim to on jest w stanie wygenerować bump mapping zastanawiam się tylko czy może też wygenerować parllax mapping (w co wątpię)

a skoro da się to zrobić z dll to moim zdaniem na pewno jest sposób aby to zrobić w GM bez dll

 

PS. nakładanie dwóch texturek jest naprawdę przydatne i robi naprawdę duży efekt załóżmy że masz sześć Texturek podług z drewna taka zwykła (np jedna jest w dodatkach do GM w folderze beckground) texturki proste bez żadnych efektów a różnią się między sobą kolorem i typem Drewna i masz dwie texturki które będziesz nakładał załóżmy że jedna to robi taki efekt że drewno wygląda jak w szkolnej sali do wf a druga wygląda jak zwykłe deski wychodzi na to że potrzebujesz 8 texturek jakbyś robił tak jak mówi Ranmus i bigshark musiał byś mieć 12 texturek różnica może nie wielka ale na większą skale :3

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Rozwiązanie:

 

Tworzymy nowy skrypt o nazwie make_bumped_sprite:

var _st, _sw, _sh, _sn;
_sw = sprite_get_width( argument0 );
_sh = sprite_get_height( argument0 );
_st = surface_create( _sw, _sh );
surface_set_target( _st );
draw_sprite( argument0, 0, 0, 0 );
draw_set_blend_mode_ext( bm_dest_color, bm_subtract );
draw_sprite( argument1, 0, 0, 0 );
draw_set_blend_mode( bm_normal );
_sn = sprite_create_from_surface( _st, 0, 0, _sw, _sh, 0, 0, 0, 1, 0, 0 );
surface_reset_target();
surface_free( _st );
return _sn;

 

Przykład użycia. Tworzymy jakiś obiekt i w create dajemy zmienną aaa = true;

Teraz w create:

if ( aaa )
{
    // Stworzmy nowy obiekt co wyswietli nowa teksture zmiksowana z dwoch spritow
    nowy_obiekt = instance_create( 0, 0, object1 );
    nowy_obiekt.sprite_index = make_bumped_sprite( sprite0, sprite1 );
    aaa = !aaa;
}

I teraz jeśli jako pierwszy argument nowej funkcji podasz teksturę pierwszą, a za drugi teksturę drugą co podałeś, to funkcja utworzy i zwróci indeks do takiej samej tekstury jaką utworzyłeś w zewnętrznym edytorze.

 

 

I co? Da się? Da. :)

Następnym razem jak ktoś się nie zna i pisze coś by nabić posta, to dostanie nagrodę w postaci ostrzeżenia.

 

edit: Widzę, że Zakol w międzyczasie napisał jak to zrobić.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

"O każdej porze bigshark wam pomoże". Oczywiście jest to prawda. Tylko, że nigdy nie wiadomo z jakim skutkiem. :]

 

Moho: I pamiętaj o dwóch rzeczach. Lepiej by funkcja zwracała nowy sprite do jakiejś zmiennej globalnej by mieć do niej dostęp. Game Maker nie posiada garbage collectora zasobów i nie niszczy takowych do, których nie ma żadnego odwołania. Druga sprawa to taka, że rozmiary nowego sprita bazują na rozmiarach sprita z pierwszego argumentu, więc lepiej niech dwa argument to sprity o tych samych rozmiarach.

Odnośnik do komentarza
Udostępnij na innych stronach

sprite_get_texture się kłania. Ta funkcja zwróci id, który podajesz w wymienionej przez ciebie funkcji.

Emm to ma tak wyglądać ??

 

//draw the block
d3d_draw_block(0,0,0,32,32,32,sprite_get_texture(sprite_index = make_bumped_sprite( sprite0, sprite1 ),-1),1,1);

 

bo jak włącze gre to nic nie widać, wogule nic pustka...

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...