Skocz do zawartości

PF - Orientacja partykli w stylu "LookAt"


Martin Day

Jak to zrobic?  

10 użytkowników zagłosowało

  1. 1. Jak to zrobic?

    • Nie da sie tego zrobic.
    • RTFM
    • W Mayi to nie problem.
    • Poszukaj skryptu.
    • Kiedys to robilem ale nie pamietam jak.


Rekomendowane odpowiedzi

Witam,

 

 

Proste pytanie...

Mam partykle (shape instance) emitowane z powierzchni, nieruchome. Potrzebuje by wszystkie ustawialy sie wg osi Z "patrzac" w jeden punkt - nie w kamere - tak jak z zastosowaniem LookAt Constrain.

 

 

Przy okazji ankieta dla jaj :)

 

Z gory dzieki

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 8
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Dzieki ale tam sie nie da zrobic LookAt tylko dla jednej osi. Przynajmniej ja nie widze takiej mozliwosci.

 

 

 

W PFSource opcja Shape facing. A jeśli particle w konkretnym kształcie, to dołóż Shape Instance. Wybierasz obiekt i w Shape facing masz look at, także można animować i się particle obracają :)
Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki. To oczywiscie dziala kiedy instancje sa rozmieszczone na plaskim obiekcie i "patrza" na obiekt na tej samej wysokosci.

Sprawa sie komplikuje kiedy mamy do czynienia np. ze zboczem gory. Obiekty stojace na nim dalej musza stac prosto (pionowo) ale zwracac sie wszystkie w jedna strone.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzieki. To oczywiscie dziala kiedy instancje sa rozmieszczone na plaskim obiekcie i "patrza" na obiekt na tej samej wysokosci.

Sprawa sie komplikuje kiedy mamy do czynienia np. ze zboczem gory. Obiekty stojace na nim dalej musza stac prosto (pionowo) ale zwracac sie wszystkie w jedna strone.

 

No to zaznaczasz wtedy Use parralel direction i pivotem obiektu źródłowego ustawiasz, żeby particle były prosto. Potem o ile nie poruszasz celem look`a w osi Z, to się będzie wszystko obracało.

 

[ATTACH=CONFIG]86378[/ATTACH]

 

A jeśli chcesz poruszać obiektem również w osi Z, ale żeby particle nie reagowały na nią, to jedyne, co mi przychodzi do głowy, to dać 2 obiekty, jeden, który widzi kamera - porusza się jak chcesz, a drugi (dummy - nierenderowalny), na który patrzą cząsteczki porusza się tak samo, tylko w osiach X i Y, możesz mu zablokować ruch po Z. Ten drugi obiekt możesz zlinkować z pierwszym, ale po zablokowaniu mu możliwości ruchu (Hierarchy -> Link Info) będzie odczytywać tylko 2 osie. No musi zadziałać :) Powodzenia

Odnośnik do komentarza
Udostępnij na innych stronach

Teoretycznie script operator powinien Ci załatwić tę sprawę i coś takiego robiłoby to o co Ci chodzi:

 

on ChannelsUsed pCont do
(
    pCont.usePosition = true
    pCont.useTM = true
)

on Init pCont do 
(

)

on Proceed pCont do 
(
   count = pCont.NumParticles()

   for i in 1 to count do
   (
       pCont.particleIndex = i
       aimDir = $Dummy001.position - pCont.particlePosition
       aimDir = [aimDir.x, aimDir.y, 0]
       pCont.particleTM = translate (matrixFromNormal (normalize aimDir)) pCont.particlePosition
   )
)

on Release pCont do 
(

)

 

Gdzie Dummy001 to jest jakiś dummy obiekt na którego się gapią Twoje particle. Jest jakiś chyba glitch w metodzie matrixFromNormal bo nie mogę zdefiniować mu wektora do góry przez co powstają przeskoki - może ktoś ma pomysł jak to załatwić?

 

ps. PFlow należy omijać wielkim łukiem :)

ps2. To mój 666 satanistyczny post :D

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