Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

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:

M1a2f.jpg

 

 

 

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:

 

CboEc.jpg

 

 

 

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

  • Odpowiedzi 7
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano (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 przez legomir
Napisano

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

Napisano

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 :)

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