Skocz do zawartości
View in the app

A better way to browse. Learn more.

Max3D.pl

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

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
  • Wyświetleń 2,2k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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
  • Autor

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

Napisano

Eee... dobra za dużo się ostatnio naczytałem o tym wszystkim i mi się majta w te i we wte :P

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.