Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] System cząsteczkowy...

Ostatnio zmodyfikowano 2013-05-09 16:49
Autor Wiadomość
ridic14
Temat założony przez niniejszego użytkownika
[SFML] System cząsteczkowy...
» 2013-05-01 00:52:59
Nie wiem czy w odpowiednim dziale, ale:
W końcu udało mi się stworzyć coś co przypomina system cząsteczkowy(a nawet nie przypomina tylko nim jest :D). Teraz tylko chcę się dowiedzieć czy z myśleniem jest ok. Ogień w moim wykonaniu wygląda tak: !!!Screen!!! lub !!!EXE!!!(klik - zmiana cząsteczek).
Chodzi o to czy tak się to robi czy można jakoś inaczej (i czy tak wygląda dość realistycznie). Ja zrobiłem tak, że zrobiłem punkt startowy i do niego dopasowałem 10 punktów tak żeby tworzyły 1/6(lub 1/3) koła(lub elipsy). Cząsteczki pojawiają się w losowych odległościach od punktów startowych(1-3 px). Potem zrobiłem u góry 5 punktów do których kierują się cząsteczki(oczywiście nie dokładnie do tych punktów(losowo od -5 do 5px różnicy)). Ustawiłem też że dym jest wolniejszy niż ogień(bo chyba tak jest?).
No i tak to się prezentuje z mojej strony. Są pewnie jakieś lepsze lub ciekawsze sposoby więc chciałbym poznać. (Jeśli czegoś nie opisałem w moim sposobie tworzenia ognia to pytać proszę).
P-81683
RazzorFlame
» 2013-05-01 13:16:30
Wg. mnie atomy (bo chyba tak można to nazwać :D) ognia powinny się łączyć w właśnie cząsteczki (które latają połączone) i różnica kolorów w tych cząsteczkach powinna być prawie niewidoczna (pomarańczowy i troszke przemieniający się w czerwony). Ja bym to jakoś tak zrobił:
C/C++
class FireAtom
{
public:
    sf::Color mColor;
    sf::Vector2D m_ToPoint;
    sf::Vector2D m_ActPoint; //aktualna pozycja
    char m_iPP; //inParticlePosition
    void ChangeColorByIPP(); //modyfikuje troszke kolor a jesli pozycja w czasteczce sie zmienila to zmienia kolor
};
class FireParticle
{
    std::vector < FireAtom *> m_vAtoms;
    sf::Vector2D m_destPoint;
public:
    void addAtom( FireAtom *, char inParticlePosition ); //drugi arg to czy ma być np w srodku (pomaranczowy) czy wysoko (podchodzacy pod czerwien) czy najwyzej (czerwony)
    void setDestPoint( sf::Vector2D ); //pozycja do ktorej dążą 'Atomy' (ofc nie dokladnie do tej)
    void adjustAtoms(); //przesuwa atomy w strone m_destPoint + przesuwa o np. 1-3 pixele kazdy kolor zeby widac bylo efekt ruchu ognia
};

Edit: A FireParticle w nowa klase Fire która by zarządzała np. ile tych języczków ognia ma np. być (języczki by tworzyły FireParticle) i czy to jest np szeroki ogien czy wysoki itd.
P-81696
ridic14
Temat założony przez niniejszego użytkownika
» 2013-05-01 15:01:12
Na razie Twojego pomysłu nie sprawdzałem.(chwilowo nie mam czasu[ale jeszcze dziś sprawdzę]) A w jaki sposób to wyświetlać? Ja każdą cząsteczkę mam z klasy sf::Vertex a potem wszystkie cząsteczki do jednej wrzucam sf::VertexArray i pojedynczą funkcją draw żeby wyświetlić. I też zależy jak z wydajnością (mój sposób jak na razie nie zbyt wydajny).

P.S. dlaczego m_iPP jest typu char???
P-81703
pekfos
» 2013-05-01 15:09:37
P.S. dlaczego m_iPP jest typu char???
Pewnie dlatego, że tyle wystarczy, a trzeba oszczędzać pamięć.
P-81705
Arturr300
» 2013-05-03 23:06:59
W tej bibliotece dodatkowej do SFML jest bardzo fajny system cząsteczek i nie tylko.
http://www.bromeon.ch/libraries/thor/
Wystarczy spojrzeć na przykłady :)
P-81934
ridic14
Temat założony przez niniejszego użytkownika
» 2013-05-04 21:18:19
Dobre to :D. Na razie nie sprawdzałem systemu cząsteczkowego, sprawdzam moduł input który jak na razie prezentuje się pięknie :D
P.S. korzystasz z tej biblioteki ?
P-82049
Arturr300
» 2013-05-09 16:49:16
Jak na razie miałem okazję użyć tylko Concave Shape, a resztę, to jak będzie czas :D
P-82548
« 1 »
  Strona 1 z 1