Làm thế nào tôi có thể mô phỏng kính vỡ?


10

Tôi cần phải thực hiện một mô phỏng với đá ném qua cửa sổ kính. Làm thế nào tôi có thể hoàn thành nó?

Ý tôi là, tôi đã suy nghĩ về việc tạo ra một mô hình 3D bằng đá và kính trong 3D Studio Max 2012, phá vỡ kính và xuất cả hai sang XNA 4.0 dưới dạng mô hình .x. Sau đó, trong XNA thực hiện hoạt hình - viết công cụ vật lý của riêng tôi. Có thể theo cách đó? Có thể phá hủy kính trong XNA sau khi va chạm hay tôi nên làm điều đó trong 3DS Max? Bằng cách 'phá hủy kính', ý tôi là ngắt kết nối một số bit thủy tinh bị vỡ trước đó với nhau, bởi vì tùy thuộc vào tốc độ và trọng lượng của đá và độ bền (độ cứng?) Của kính (tất cả do người dùng xác định), các bit sẽ ngắt kết nối nhau theo những cách khác nhau

Câu trả lời:


5

Voronoi shatter là một cách tiếp cận tạo ra shatter khá thực tế, ví dụ. kính cường lực có khả năng vượt trội để vỡ thành các mảnh nhỏ, điển hình là lồi do thay đổi cấu trúc của kính trong quá trình sản xuất. Ngoài ra, nếu bạn có một ô kính, bạn sẽ chỉ cần triển khai 2D Voronoi, không phải 3D.


3

Tự động tạo ra các mảnh vỡ từ một lưới toàn bộ ban đầu là khá khó khăn, tôi nghĩ vậy. Nếu bạn chỉ quan tâm đến việc mô phỏng động lực học của các mảnh vỡ khi chúng bay trong không khí, va chạm, v.v. thì tôi sẽ bắt đầu với một lưới bị vỡ trước, sử dụng các ràng buộc có thể phá vỡ hoặc một cái gì đó để giữ các mảnh lại với nhau cho đến khi chúng bị kéo ngoài với đủ lực.


Xin chào Nathan (một lần nữa), bạn đã từng làm nhiệm vụ này sau năm 2011 chưa? Bạn có thể cho thêm gợi ý? Thx
karlphillip

@karlphillip Tôi đã thực hiện một bản demo bằng PhysX Destrraction , mặc dù cá nhân tôi chỉ thực hiện công cụ kết xuất, không phải bất kỳ công cụ vật lý nào trong dự án đó. Công nghệ PhysX hoạt động bằng cách tạo ra các mảnh vỡ trước trong công cụ DCC và hoán đổi chúng cho lưới không bị vỡ khi xảy ra hư hỏng.
Nathan Reed

3

Tạo một khung không vỡ và một khung vỡ. Khi bạn va chạm, hãy tắt phiên bản không bị vỡ và bắt đầu sử dụng khung bị vỡ.

Nếu bạn đang ném một hòn đá (có kích thước hơi phù hợp) vào cửa sổ thì bạn có thể đi một quãng đường dài với mô hình 3d của khung bị hỏng (mô hình các mảnh vỡ tại vị trí trong khung và sau đó chạy mô phỏng vật lý đơn giản trên mỗi các mảnh vỡ để mô phỏng chúng rơi / bay). Trừ khi máy ảnh rất gần (hoặc chuyển động chậm), bạn không cần phải va chạm giữa các mảnh - chỉ với hình học xung quanh (mặt phẳng mặt đất?). Đừng quên phun một số hiệu ứng hạt cho đám mây của các hạt thủy tinh nhỏ hơn đi kèm với mảnh vỡ.

Nếu bạn tạo ra ô bị vỡ với giả định rằng hòn đá đang đập vào trung tâm thì bạn có thể chia tỷ lệ các mảnh dựa trên vị trí đánh thực tế để có được một khoảng nghỉ trông khá đẹp cho hầu hết các cú đánh.


2

Nếu bạn tải xuống Thư viện Vật lý Bullet, nó có một mẫu bao gồm kính vỡ và bạn sẽ cần một thứ giống như viên đạn trong bất kỳ trò chơi nào có kính vỡ.

Chỉnh sửa: Bullet sẽ là một minh chứng tuyệt vời để mô hình hóa động cơ của riêng bạn sau đó.


1

Cảm ơn bạn rất nhiều vì câu trả lời của bạn và giúp đỡ vô giá. Cuối cùng tôi đã quản lý để xây dựng dự án. Tôi đã thử tất cả các loại đường của bạn và cuối cùng đã chọn một phần theo cách riêng của tôi cho mô phỏng này.

Tôi đã sử dụng bulledsharp (trình bao bọc vật lý viên đạn cho c #) cho động cơ vật lý, nhưng điều quan trọng là sử dụng cái gần đây nhất, do chính bạn biên soạn với nguồn bulletsharp từ nguồn sf cũng như nguồn vật lý đạn mới. Không phải là một bản được biên dịch trước, có sẵn để tải xuống từ các trang web. Phiên bản tiền biên dịch đã quá cũ đối với tôi và không bao gồm một số tính năng quý giá được phát triển thêm. Điều tôi cũng học được là đối với các mô phỏng đơn giản mà bạn không cần đồ họa tiên tiến, tốt hơn là sử dụng 3dsmax cũ hơn, tức là năm 2011 (không phải là gần đây nhất 2012), để phát triển mô hình, v.v. Chủ yếu là vì có nhiều plugin và nhà xuất khẩu hơn. Hơn nữa, nó thực sự hữu ích để kiểm tra các hướng dẫn trong tất cả các khung có sẵn (sharpdx, xna, xna4, slimdx, c ++ và khác).

Cuối cùng, cách tiếp cận của tôi là xây dựng bức tường kính bằng cách sử dụng các miếng hình khối thực sự nhỏ. Tất nhiên để làm cho mô phỏng chạy, bạn phải có máy thực sự mạnh mẽ. Trong trường hợp bạn có một cái gì đó ít mạnh mẽ hơn, bạn có thể sử dụng các hình khối lớn hơn. Điều quan trọng là làm cho tất cả các hình khối được tạo ra với trạng thái đảo ngủ. Bây giờ, mỗi mảnh có đại diện của mình trong hai mảng nổi. Con số ở đó cho biết cường độ kết nối giữa hai khối là gì. Khi ném đá, và phát hiện va chạm, lực được tính cho mỗi khối trong tường (bao gồm khối đá, vận tốc, khối lập phương và kích thước và khoảng cách từ tâm va chạm) và bị trừ khỏi mảng trong vòng tròn mô hình giống như. Những hình khối mà sau khi trừ có cường độ kết nối bằng 0 hoặc ít hơn sẽ được kích hoạt. Điều này làm cho các con di chuyển.

Đây chính là nó. Cảm ơn bạn đã giúp đỡ.

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.