Skocz do zawartości

Skrypt do zmieniania koloru przy naprężeniach w rigowaniu


Ferdkowaty

Rekomendowane odpowiedzi

Witam.

Szperając w sieci znalazłem taki oto skrypt na stronie cg academy:

 

dependsOn $Point01 $Point02

rag = (color 100 100 100)

dis = (distance $Point01 $Point02)

rag.hue = (50-dis) +90

rag.saturation = 255

rag.value = 255

$test_sphere.material.Diffuse = rag

[1, 1, 1]

 

Link do skryptu i opisu:

http://www.christopher-thomas.net/pages/free_tutorials/tut_scripted_length_color/tut_scripted_color.htm

 

Na końcu autor tego skryptu pisze, żeby w pełni działał trzeba zmienić coś jeszcze, ale nie pisze co trzeba zmienić.

 

Problem jest w tym, że jak za daleko odjedziemy jedną kulą od drugiej to przyjmie ona kolor czerwony, ale jak zmienimy odległość na mniejszą to nie przyjmie koloru początkowego. Czyli skrypt nie działa do końca.

Czy ktoś posiada taki działający skrypt?

Bardzo proszę o odpowiedź ponieważ na programowaniu ani na pisaniu skryptów nie znam się wogole.

Chcę użyć tego skryptu przy animowaniu postaci, jeśli kość się za bardzo rozciągnie to przyjmie inny kolor.

Pozdrawiam.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 5
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

dependsOn $Point01 $Point02
rag = (color 0 255 0)
dis = (distance $Point01 $Point02)
rag.hue = (50-dis) +90
rag.saturation = 255
rag.value = 255
$test_sphere.material.Diffuse = rag
[1, 1, 1]

Wystarczy zmienic poczatkowy kolor w zmiennej rag tak aby nie byl neutralny, inaczej zmiany barwy nie daja zadnego efektu.

Odnośnik do komentarza
Udostępnij na innych stronach

Wielkie dzięki lechoo.

Teraz wszystko pięknie działa za wyjątkiem jednej rzeczy.

Kolor zmienia się na czerwony dopiero po zmianie na dużą odległość, większą niż odległość początkowa punktu 1 do punktu 2.

Chodzi mi o coś takiego, żeby po przekroczeniu tej granicy(punkt1 do punkt2 = np u mnie 50units) kolor od razu zmienił się na czerwony, oraz nie zmieniał koloru początkowego gdy ta odległość jest mniejsza.

Jeszcze raz wielkie dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

Moglo by to wygladac tak

dependsOn $Point01 $Point02
dis = (distance $Point01 $Point02)
if (dis > 50) then  rag = (color 100 100 100) 
else rag = (color 255 0 0) 
$test_sphere.material.Diffuse = rag
[1, 1, 1]

Oczywiscie mozesz ustawiac parametry materialu w jakis bardziej elegancki sposob, np. pobierajac je z roznych slotow material editora.

Odnośnik do komentarza
Udostępnij na innych stronach

Nie za bardzo to działa ponieważ gdy kula znajduje się w mniejszej odległości ciągle ma kolor czerwony, a gdy oddalę ją dalej i trzymam wciśnięty klawisz myszki to ma kolor czerwony, jak puszczę to przyjmuje szary.

Dla przykładu podaję linka do sceny w której umieściłem skrypt.

http://www.wrzuta.pl/pliki/onB72XLg71/

dzięki za pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

W twojej scenie zmienilem hierarchie tak zeby kulka byla podlinkowana do helpera. Zmiana koloru kulki w czasie przeciagania byla spowodowana kontrolerem attachment (ktory wywalilem). Z kontrolerem attachment funkcja distance zwracala odleglosc 0 w casie przeciagania, stad zmiana koloru na czerwony.

Jesli chcesz zachowac taka hierarchie jak miales, prawdopodobnie bedziesz musial rozwiazac to przy pomocy dodatkowych helperow.

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