Skocz do zawartości

MaxScript: Dynamiczna zmiana materialu particla


mirach

Rekomendowane odpowiedzi

Hej

 

Pod tym strasznym tytulem kryje sie (mam nadzieje) prosty skrypt. Ktorego jak narazie nie umiem sam wykonac (pomimo paru prob, jak do teraz widok maxscripta wywoluje u mnie zimny pot na czole :) ). W zwiazku z tym, zwracam sie do was z prosba, czy ktos bylby tak mily, i napisal go?

 

Posiedzialem nad tym troche, i mam (wydaje mi sie) dosc dokladnie rozpisane co od skryptu potrzebuje, a wiec:

 

1. Skrypt musi byc w petli odpalanej co klatke.

2. Skrypt sprawdza czy dana czasteczka porusza sie w strone kamery, czy przeciwna.

3. Jesli czasteczka porusza sie w strone kamery, ma miec material 1, nazwijmy go Bialy

4. Jesli czasteczka nie porusza sie w strone kamery, ma miec material 2, powiedzmy Czerwony.

 

I to w zasadzie tyle, potrzebuje to wrzucic do ScriptOperatora w Particle Flow, i bede szczesliwy jak cholera :)

 

z gory dziekuje jakiejs dobrej duszy :)

mirach

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 2
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

Skrypt jest prosty do napisania tylko potrzeba znalesc w dokumentacji kilka waznych rzeczy :). Najwazniejsza to pozycja particla z poprzedniej klatki. Majac ta informacje tworzymy wektor z pozycji poprzedniej oraz pozycji aktualnej particla . Po jego normalizacji obliczamy crossproduct(iloczyn skalarny) tego wektora oraz wektora utworzonego z pozycji kamery i pozycji particla, wychodzi czy particle porusza sie w strone kamery czy w strone przeciwna. Obliczanie tego crossproducta co klatke wykonujemy w uchwycie on Proceed pCont do (kod przetwarzania), gdzie pCont jest kontenerem zawierajacym dane o kazdym particlu. Zmiane materialu particla wykonujemy za pomoca pCount.setParticleMtlIndex lub pCount.setParticleMtlIndexByID w uchwycie Proceed. To chyba tyle :)

 

\\Update

Nie trzeba tworzyc wektora z pozycji poprzedniej,aktualnej particla... wystarczy uzyc znormalizowanego wektora pCont.particleOrientation lub pCont.particleAcceleration

\\Update

Zamiast crossproduct chodzilo mi oczywiscie o dotproduct

Edytowane przez Ziper
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ę



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności