Podaj tutaj najczęstsze splajny występujące w rozwoju gry, ile punktów metoda potrzebuje do interpolacji krzywej i jak zbudować typ danych, który pozwala uzyskać interpolację punktów krzywej. Przykłady: krzywe Beziera, splajny B, splajny sześcienne itp.
PS: Umieszczam to jako wiki społeczności, abyśmy mogli wymienić wszystkie rodzaje interpolacji splajnów.
mathematics
splines
chiguire
źródło
źródło
Odpowiedzi:
Najprostszym przypadkiem jest interpolacja liniowa dla linii prostej:
(x0, y0) * ------------------------ * (x1, y1)
Powiedz, że t jest między [0, 1]:
źródło
Splajny Catmull-Rom (rodzaj sześciennego splajnu pustelnika) mogą być bardzo przydatne, jeśli masz zestaw punktów, między którymi chcesz utworzyć gładką ścieżkę (bez definiowania dodatkowych punktów kontrolnych), takich jak ścieżki kamery
Dla wszystkich matematyki zobacz:
http://en.wikipedia.org/wiki/Cubic_Hermite_spline
Jeśli używasz D3DX, masz do dyspozycji kilka przydatnych funkcji (D3DXVec3CatmullRom)
źródło
Edycja: Niestety, jak podkreśla Jason w komentarzu, następująca odpowiedź nie dotyczy splajnów, ale dwuwymiarowej interpolacji liniowej (lub dwuliniowej ). Wybieram, aby go nie usuwać na wypadek, gdyby ktoś uznał, że jest to informacja.
Stworzyłem prosty trójwymiarowy teren, a następnie chciałem, aby moja postać wędrowała po terenie. Aby znaleźć wysokość postaci w dowolnym punkcie terenu, zastosowałem interpolację dwuliniową .
Oto kod Java, którego używam do interpolacji dwuliniowej:
Zauważ, że interpolacja dwuububowa może dawać płynniejszą lub bardziej realistyczną interpolację w odległych punktach; ale wybieram dwuliniowe, ponieważ mam gęstą siatkę, próbując zoptymalizować (być może przedwcześnie).
źródło