Tamyl91 Napisano 16 Sierpień 2012 Napisano 16 Sierpień 2012 Mam problem ze skryptem, otóż utworzyłem sobie jakiś "teren", rzutowałem na niego splajna i teraz chciałbym wokół tego splajna, ale na terenie rozsypac powiedzmy cylindy skierowane w kierunku wektora normalnego face'a, na którym będzie siedział. Wydawałoby się, że wszystko działa jak należy: Problem pojawił się, gdy za pomocą narzędzia skalowania spłaszczyłem sobie teren wraz z leżącym na nim splajnem. Punkty wyznaczane są poprawnie, jednak kierunki wektorów normalnych nie: Wyznaczanie wektora kierunku cylindra jest z funkcji intersectRay(), która tworzy "ray", czyli punkt na terenie i wektor normalny, jednak jak widać niepoprawny w sytuacji, gdy skala terenu jest zmieniona. Wydawało mi się, że jeśli otrzymany wektor ray.direction podzielę przez wektor teren.scale powinienem dostać poprawny wektor normalny, jednak myliłem się i już nie mam pomysłu jak to rozwiązać. Proszę o pomoc
legomir Napisano 16 Sierpień 2012 Napisano 16 Sierpień 2012 (edytowane) No to: intersectRay()*scale.X*scale.Y*scale.Z i powinno działać :) Wytłumaczenie czemu tak zrobić będzie gorsze, bo nie jestem pewien a przychodzą mi do głowy 2. rzeczy: -intersectRay liczy normale zanim jest zmieniona skala -intersectRay jest liczy je dla poszczególnego modyfikatora a nie obiektu -przy skali zmieniły się normalne ale nie zmieniły się ich długość Edytowane 16 Sierpień 2012 przez legomir
Orangegraphics Napisano 16 Sierpień 2012 Napisano 16 Sierpień 2012 albo daj na zeskalowanego plane'a reset xform i powinno działać?
legomir Napisano 16 Sierpień 2012 Napisano 16 Sierpień 2012 No ale to by nie miało sensu bo skrypt ogólnie by w każdej takie sytuacji nie działał ;) A dodawanie nowego polecenia jest wolniejsze o pomnożenia przez zmienne globalne
Tamyl91 Napisano 16 Sierpień 2012 Autor Napisano 16 Sierpień 2012 ResetXForm pomogło, własnie tego szukałem, dzięki wielkie :) Chociaż do teraz nie wiem dlaczego dzielenie przez wektor skali nie działa poprawnie, z mnożeniem to już w ogóle beznadzieja - jeśli wypłaszczę teren, wektor skali będzie wyglądał mniej więcej tak [1,1,0.1], a cylindry mam położone na płasko, znaczy, żei wektor kierunku jest "zbyt mało w górę", przemnożenie przez wektor skali jeszcze bardziej go zmniejszy, a wydawałoby się że podzielenie załatwi sprawę... No cóż, ważne, że działa :)
legomir Napisano 16 Sierpień 2012 Napisano 16 Sierpień 2012 Hmm... a wektor to czasem nie dot produkt wektora przed i po skali?
Tamyl91 Napisano 16 Sierpień 2012 Autor Napisano 16 Sierpień 2012 dot product to liczba, a nie wektor
legomir Napisano 17 Sierpień 2012 Napisano 17 Sierpień 2012 Eee... dobra za dużo się ostatnio naczytałem o tym wszystkim i mi się majta w te i we wte :P
Rekomendowane odpowiedzi
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ę