Kết nối mô phỏng vật lý với các hệ tọa độ khác nhau


9

Tôi muốn các vật thể di chuyển giữa hai mô phỏng vật lý thông qua một "cửa sổ" và va chạm với các vật thể từ cả hai mô phỏng trong trường hợp chúng giao nhau với mặt phẳng cửa sổ.

Các hệ tọa độ của các mô phỏng không có cùng nguồn gốc và có thể có hướng khác nhau. Kết thúc một mô phỏng cho chính nó là không cần thiết, nhưng sẽ là một lợi thế.

Làm cách nào để kết nối các hệ thống hiệu quả mà không cần nhân bản các đối tượng riêng lẻ?

Biên tập:

Các tính toán phải chính xác nhất có thể, vì vậy các đối tượng không bị kẹt nếu chúng băng qua cửa sổ cùng lúc từ các phía đối diện.


Câu hỏi đầu tiên là, mô phỏng vật lý có chính xác trên cửa sổ không? Bởi vì những thay đổi định hướng làm cho một quét thích hợp là không thể. Nó giống như cổng thay đổi quy mô - một thế giới của nỗi đau có thể. Câu hỏi thứ hai: Định hướng khác nhau, như tùy ý, hoặc ít nhất là ở góc 90 độ, chỉ là một hoán đổi trục?
Kaj

Bây giờ, điều này có vẻ như là một vấn đề họ phải giải quyết trong Portal. Nếu tôi nhớ chính xác, họ đề cập đến những vấn đề này và cách họ giải quyết chúng trong một số bình luận trong trò chơi. Bạn có thể tìm thấy những thứ này trực tuyến ở đâu đó.
Thợ làm móng

@Kaj Tôi nghĩ rằng tốt nhất nên chia đường dẫn tính toán cho các chuyển đổi tùy ý và góc phải. Bằng cách này, những người góc phải có thể có độ chính xác và tốc độ cao hơn trong khi các góc khác cũng có thể.
Tamschi

@Nailer Nếu tôi nhớ chính xác, họ đã tạo ra một môi trường vật lý mới trong khi cổng thông tin đang mở và sau đó nhân bản mọi đối tượng vật lý gần với mô phỏng bổ sung này. Họ nói rằng bằng cách nào đó họ đã hạn chế các vật thể, nhưng rất có thể họ chỉ đang chuyển đổi lực và vị trí từng bước vật lý. <br> Tôi khá chắc chắn rằng họ tạo ra một bản sao thứ ba tại đích vì cách di chuyển của người chơi mô phỏng trong Nguồn.
Tamschi

Câu trả lời:


2

Có dự án tuyệt vời này có tên là Pseudoform, trước đây được gọi là 'Portalized', xử lý các mô phỏng vật lý bằng cách sử dụng các cổng theo kiểu Groovie:

Giả hành

Kiểm tra nó ra!

Đặc biệt là các video - thật tuyệt vời.

Đó là nguồn mở, vì vậy bạn có thể thấy cách họ làm điều đó.

Tôi cá rằng đó là những gì bạn muốn. :)


2
Tôi chỉ đọc qua mã: Cách họ làm gần giống như giải pháp của Valve, nhưng không có môi trường vật lý bổ sung. Các cổng trong công cụ Portalized tạo một bản sao của một đối tượng một khi nó chạm vào bề mặt cổng, sau đó xóa nó sau khi nó rời khỏi cổng trong một thời gian nhất định. Câu trả lời này vẫn có phần hữu ích: Khớp được sử dụng để hạn chế các bản sao cho thấy cách đối tượng được chuyển đổi trong cổng thông tin.
Tamschi

0

Được rồi - Tôi không biết nếu điều này sẽ làm việc.
Dựa trên thông tin trên, tôi sẽ đặt các kích hoạt trên 'cửa sổ' để tôi có thể phát hiện khi một đối tượng đi ra khỏi một thế giới. Lấy véc tơ vận tốc hiện tại tại thời điểm va chạm. Tính toán dấu thời gian còn lại dựa trên nơi nó kích hoạt và nơi nó kết thúc khung này (bên ngoài thế giới, thế giới của bạn sẽ cần một đường viền ảo để cho phép điều này). Tại thời điểm này, bạn biết tốc độ và dấu thời gian còn lại, vì vậy bạn có thể định vị lại nó trên biên giới của thế giới sắp vào và điều chỉnh lại vận tốc. Tuy nhiên, điều này sẽ yêu cầu hai cập nhật vật lý trong một khung và sẽ có bordercase của một đối tượng đi từ a đến b trong khi một đối tượng khác đi từ b đến một vị trí - không có sự va chạm nào được phát hiện.
Kinda sơ sài,


Đây có vẻ là cách nhanh nhất có thể, nhưng có một vấn đề nếu hai vật thể đi qua cửa sổ từ cùng một phía: Nếu vật thể thứ nhất bị kẹt giữa đường biên giới, vật thể thứ hai sẽ không va chạm cho đến khi chạm tới biên giới, quá, và xuất hiện bên trong cái đầu tiên ở đích đến.
Tamschi

Chỉnh sửa một chút trong khi bạn gõ nó, và đó thực sự là vấn đề tôi đã thêm: o \
Kaj

Tôi phải học đọc. Bổ sung của tôi là một trường hợp biên giới. Sẽ suy ngẫm.
Kaj

Không, biên giới là bên ngoài thế giới. Vì vậy, vật thể một sẽ bị bắn vào thế giới 2 (từ biên giới của thế giới 2 - không phải ở vị trí cửa sổ) với vận tốc riêng, như đối tượng b. Họ va chạm vào thế giới 2 ở biên giới đúng cách .... Tôi nghĩ: o? Tuy nhiên trường hợp biên giới của riêng tôi vẫn giữ.
Kaj

Có vẻ như tôi đã đọc sai phần về đường viền ảo. Dù sao, có một vấn đề khác nếu một đối tượng bị mắc kẹt. Phần ở phía sau của cửa sổ đích sẽ vẫn được hiển thị ở vị trí ban đầu, nhưng các đối tượng không chạm vào đường viền sẽ không va chạm với nó. Một cách để giải quyết những vấn đề này là thống nhất các mô phỏng, nhưng tôi không chắc làm thế nào để thực hiện điều này một cách hiệu quả.
Tamschi

0

Tôi đọc một số infos về mô phỏng vật lý và tìm thấy một giải pháp khả thi. Nó hoạt động bằng cách chia mỗi bước vật lý thành ba giai đoạn:

1. Bước trước:

Mỗi bước vật lý, một cửa sổ tạo ra bốn phép biến đổi, hai cho mỗi bên của kết nối:

  • một phép biến đổi đầu vào biến đổi vị trí, vận tốc (và có thể cả kích thước và trọng lượng của vật thể) thành hệ tọa độ đích và
  • một phép biến đổi đầu ra biến đổi các lực trở lại hệ thống ban đầu của đối tượng.

(Cửa sổ tĩnh chỉ cần thực hiện việc này một lần.)

Ngoài ra, các đối tượng trong mỗi hệ tọa độ được chia thành ba nhóm:

Phân nhóm vật lý http: //content.w mộng.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png

  1. Các đối tượng ở phía trước cửa sổ (màu xanh lá cây).
    Một đối tượng cũng được tính vào nhóm này nếu nó đang giao nhau với mặt phẳng cửa sổ hoặc có khả năng vượt qua nó từ phía sau cửa sổ (không hiển thị).

  2. Các đối tượng giao nhau với cửa sổ hoặc có khả năng giao nhau trong bước vật lý này (màu cam).

  3. Đối tượng phía sau cửa sổ (màu xanh). Nếu một vật thể bay về phía mặt sau của cửa sổ, nó vẫn được đánh dấu là thành viên của nhóm ba.

Nhóm có thể được đơn giản hóa nếu cửa sổ nằm ở biên của mô phỏng.

2. Bước chính:

Vật lý được tính toán chủ yếu như bình thường, với một vài ngoại lệ:

  • Các đối tượng từ nhóm thứ hai không bao giờ va chạm với những người từ nhóm thứ ba và ngược lại.

  • Chuyển đổi đầu vào của cửa sổ được sử dụng trên các đối tượng từ nhóm thứ hai và kết quả được đánh giá theo các đối tượng phía trước và giao nhau từ hệ thống đích. Các lực kết quả được chuyển đổi bằng cách sử dụng chuyển đổi đầu ra và áp dụng cho đối tượng ban đầu.

(Nếu một đối tượng bị tấn công trong quá trình tính toán, nó phải được nhóm lại!)

3. Sau bước:

Nếu một đối tượng từ nhóm thứ hai đã vượt qua cửa sổ, nó sẽ được chuyển vào hệ thống đích bằng cách sử dụng chuyển đổi đầu vào.

Suy nghĩ bổ sung:

Nếu các phép biến đổi được bảo toàn sau khi tính toán vật lý, chúng có thể được sử dụng để tăng tốc độ kết xuất và để tính toán AI dễ dàng hơn. Việc nhóm có thể được sử dụng để loại bỏ các mặt phẳng clip khỏi quá trình kết xuất.

Nhược điểm của giải pháp này là các cửa sổ phải được thêm trực tiếp vào động cơ vật lý.

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.