Di chuyển một vật thể dọc theo một đường cong trong khi xoay nó


11

Tôi muốn di chuyển một đối tượng dọc theo một đường cong . Tại các điểm cụ thể trên đường cong, tôi muốn đối tượng thay đổi tốc độ và tự xoay dọc theo trục của nó.

Hãy tưởng tượng một chiếc máy bay đang bay đến một điểm đến. Nó có con đường của nó, nó phải đi theo, cộng với, nó điều chỉnh tốc độ và định hướng tất cả các cách (tiêu đề, pith, ngân hàng).

Tôi có thể vui lòng yêu cầu một thông tin khởi động về những điều sau đây:

  • Nên sử dụng loại đường cong nào để nội suy trơn tru một đối tượng
  • Những công thức nào được sử dụng cho phép nội suy đáng tin cậy, nơi tôi có thể kiểm soát tốc độ di chuyển của từ chối và quá trình chuyển đổi giữa các nút đường cong sẽ liền mạch
  • Có gì thông tin nên được xuất khẩu từ một ứng dụng thiết kế 3D
  • Tôi có nên sử dụng quancyions slerp () cho việc này không?

Nếu bạn biết về một cuốn sách đề cập đến chủ đề này một cách hiệu quả , điều đó sẽ gây khó khăn nhất. Cảm ơn bạn.

Câu trả lời:


7

Đối với đường cong chuyển động, tôi khuyên bạn nên sử dụng đường cong Hermite. Bạn chỉ cần đưa ra điểm bắt đầu / vận tốc và điểm kết thúc / vận tốc, và nó tạo ra một đường cong đẹp và mượt mà giữa hai điểm đó. Sử dụng điểm kết thúc / vận tốc của cặp điểm đầu tiên làm điểm bắt đầu / vận tốc của cặp điểm tiếp theo và bạn có một đường cong dài và uốn lượn đẹp, liền mạch.

Điều này xử lý hoàn hảo yêu cầu quản lý tốc độ: bạn đưa ra danh sách các điểm theo thời gian với vận tốc bạn chọn và nó cung cấp cho bạn các giá trị vị trí và vận tốc được nội suy liền mạch. Nếu bạn muốn thực hiện điều này, tất cả những gì bạn cần trích xuất từ ​​ứng dụng tác giả 3D là các điểm và vận tốc trong con đường mà bạn mong muốn. Bạn cũng có thể tạo chúng trong thời gian chạy, có lẽ dựa trên đầu vào của người dùng.

Để điều chỉnh hướng, bạn có một số tùy chọn. Nếu máy bay sẽ luôn hướng về nơi nó sẽ đi (đó là trường hợp có ý nghĩa), bạn có thể sử dụng vectơ vận tốc nội suy từ đường cong Hermite để tìm nơi tàu của bạn nên hướng tới. Nếu bạn biết vectơ lên ​​(nó đang di chuyển trong một mặt phẳng hoặc bạn biết hướng nào sẽ lên), bạn có thể tính trục thứ ba bằng cách chéo (trước, lên) và ở đó bạn có hướng của mình.

Nếu bạn muốn một hướng "chao đảo" nào đó để mặt phẳng đôi khi lệch khỏi hướng trước trong đường dẫn, bạn có thể sử dụng hướng trước làm hướng mong muốn và liên tiếp thực hiện trượt một bước giữa hướng hiện tại và hướng mong muốn.

Nếu bạn muốn các định hướng tùy chỉnh không liên quan gì đến đường dẫn, tất nhiên bạn có thể cung cấp một danh sách các quan điểm định hướng cho điều này. Sau đó, điểm của bạn trở thành (điểm, vận tốc, tứ phương). Sau đó, bạn có thể sử dụng slerp giữa hai bậc bốn liên tiếp để thiết lập định hướng của bạn trên đường đi. Đừng quên rằng slerp là một phương pháp nội suy tuyến tính . Tuy nhiên, nó thường sẽ ổn. Nếu bạn thấy rằng các phép quay không đủ trơn tru trong các đường nối, bạn có thể thử nội suy danh sách các bậc bốn với đường cong Bezier, như được giải thích ở đây trong phần 7.

Đây là một số mã nguồn có thể giúp bạn bắt đầu. Nó có một số kỹ thuật nội suy trơn tru cho một danh sách các bậc bốn (đội hình, bezier, v.v.).

Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi!


+1 - Cảm ơn, câu trả lời của bạn về cơ bản bao gồm tất cả mọi thứ. Nó trả lời mọi câu hỏi tôi hỏi, cộng với, bạn cung cấp thêm tài liệu để nghiên cứu. Bây giờ, tôi có đủ tài liệu để bắt đầu. Do đó, tôi thấy không có lý do, không đánh dấu đây là Câu trả lời được chấp nhận .
Bunkai.Satori

@ Bunkai.Satori cảm ơn bạn, rất vui khi được giúp đỡ :) Tôi rất thích xem những gì bạn tạo ra cuối cùng.
Gazihan Alankus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.