Camera thực tế / Màn hình rung từ vụ nổ


36

Tôi muốn lắc máy ảnh xung quanh một chút trong vụ nổ, và tôi đã thử một vài chức năng khác nhau để làm rung nó và dường như không có gì thực sự mang lại điều đó 'wow, thật là một tiếng nổ!' loại cảm giác mà tôi đang tìm kiếm. Tôi đã thử một số mẫu sóng hình sin tần số tương đối cao tùy ý với một chút suy giảm tuyến tính, cũng như mẫu dạng sóng vuông. Tôi đã thử di chuyển chỉ một trục, hai và cả ba (mặc dù hiệu ứng dolly hầu như không đáng chú ý trong trường hợp đó).

Có ai biết một mô hình rung máy ảnh tốt?


2
Hãy thử tìm một số cảnh phim về máy ảnh rung sau vụ nổ và xem nó trong chuyển động chậm để xem máy ảnh rung như thế nào và căn cứ mã của bạn vào đó.
Skizz

Tôi có cùng một vấn đề - sự chao đảo trông có vẻ quá trơn tru
Iain

Vấn đề lớn nhất mà tôi gặp phải khi thực hiện rung máy là dường như nhân vật người chơi (mà máy ảnh tập trung vào) di chuyển thay vì máy ảnh. Điều kỳ lạ là máy ảnh sẽ di chuyển, nếu bạn nhìn vào môi trường xung quanh bạn nhận thấy, nhưng vì bạn quá tập trung vào nhân vật người chơi nên nhận thức của bạn bị sai lệch. Tôi vẫn đang cố gắng giải quyết vấn đề này - có thể bằng cách thay đổi trường nhìn khi camera di chuyển ra xa / về phía người chơi.
Kaj

Câu trả lời:


35

Tôi đã có rung máy khá tốt bằng cách áp dụng tiếng ồn Perlin cho hướng của máy ảnh. Nó cung cấp cho bạn một bước nhảy lớn khá tốt với tần số rung cao hơn được tích hợp và có thể trông thực sự tốt.

http://mrl.nyu.edu/~perlin/doc/oscar.html có thêm chi tiết và mã mẫu để tạo tiếng ồn.


3
Ôi, tiếng ồn, tại sao tôi không nghĩ về điều đó ... Sau một tiếng nổ, tôi phát ra tiếng ồn khá ngắn, phải không ... Ý tưởng tuyệt vời!
falstro

ý tưởng tốt, có bất cứ điều gì bạn không thể sử dụng tiếng ồn perlin để giải quyết? : P
Cubed2D

1
Tiếng ồn chắc chắn là cách để đi, nếu bạn thậm chí hình dung hiệu ứng của mình sau đó, những thay đổi ngắn của chuyển động ngẫu nhiên theo các hướng khác nhau. Nhưng nó không thể là một sự co thắt, vì vậy bạn cần các phần thống nhất ngắn gọn. Âm thanh như một sử dụng hoàn hảo cho tiếng ồn Perlin.
deceleratedcaviar

17

Nếu bạn đang đề cập đến màn hình rung lắc từ vụ nổ, tôi đã cố gắng thực hiện điều này trong trò chơi nguyên mẫu của mình (đó là 2d nhưng nên dịch sang 3d khá tốt, tôi mong đợi). Hãy xem video youtube và xem đó có phải là thứ bạn đang tìm kiếm không - màn hình rung bắt đầu khoảng 1:35

Dù sao, cách tôi đạt được là tạo ra một khung nhìn cho sceen và lưu trữ điểm trung tâm ( centre).

Khi một vụ nổ bắt đầu, tôi tạo ngẫu nhiên radius~ 30px. Sau đó, tôi bù lại khung nhìn từ centrenhiều pixel theo hướng ngẫu nhiên.

Đối với mỗi lần cập nhật tiếp theo (giữa các lần rút ra màn hình), tôi giảm radius10-20% và bù lại chế độ xem bằng nhiều pixel này từ centremột lần nữa. Tuy nhiên, thay vì chọn một góc ngẫu nhiên cho phần bù này, thay vào đó tôi lấy góc nhìn trước đó từ centrevà thêm 180 +/- 60 độ cho nó.

Vì vậy, về cơ bản, mỗi bản cập nhật (hoặc 10-20ms hoặc hơn), tôi bù đắp cho chế độ xem bằng một số pixel giảm dần từ centremàn hình.

Đây là một số mã giả:

viewportCentre = (400,300) //Lets say screen size is 800 x 600
radius = 30.0
randomAngle = rand()%360
offset = ( sin(randomAngle) * radius , cos(randomAngle) * radius) //create offset 2d vector
viewport.setCentre(viewportCentre + offset) // set centre of viewport
draw()  

while(true)  //update about every 10-20ms
{ 
    radius *=0.9 //diminish radius each frame
    randomAngle +=(180 +\- rand()%60) //pick new angle 
    offset = (sin(randomAngle) * radius , cos(randomAngle) * radius) //create offset 2d vector
    viewport.setCentre(viewportCentre + offset) //set centre of viewport
    draw() //redraw
}

Tôi thường dừng rung màn hình khi bán kính thấp hơn 2.0, tại thời điểm đó tôi đặt lại chế độ xem trở lại centre.


4
Tôi thích cách thực hiện này rất nhiều, hoạt động hoàn hảo cho các game 2D nhỏ. Như một nhận xét, nó tương đương với việc làm randomAngle += (150 + rand()%60)để thoát khỏi mọi vấn đề +/-.
Krøllebølle

2
Video của bạn bị hỏng
Tara

Kiểu tính toán nào của "+/-"? Tôi chưa bao giờ thấy thứ này.
Yoo Matsuo

4

Để làm cho máy ảnh rung "cảm giác" chính xác là ít về hướng chuyển động và nhiều hơn về các đường cong gia tốc.

Máy ảnh rung lắc vào lĩnh vực hoạt hình và vì vậy tất cả các quy tắc hành động / phản ứng được áp dụng. Nếu bạn đang di chuyển theo kiểu tuyến tính từ điểm này sang điểm khác, nó sẽ cảm thấy trơn tru và đồng đều và không giống như một tác động.

Nếu bạn lắc đầu qua lại, bạn sẽ nhận thấy rằng nó di chuyển nhanh nhất ở điểm giữa giữa việc thay đổi hướng và chậm lại ở mỗi bên khi trước tiên bạn phải giảm tốc và sau đó bắt đầu theo hướng mới.

Dưới đây là danh sách các chức năng nới lỏng khác nhau để áp dụng cho chuyển động của bạn. Bạn có thể chỉ muốn easyOut chuyển động đầu tiên để khiến nó cảm thấy đột ngột hơn một chút, và sau đó là EasyInOut phần còn lại để mô phỏng chuyển động của đầu / camera.


1
Tôi nghĩ rằng nới lỏng vẫn sẽ làm cho nó quá trơn tru. Tiếng ồn perlin có vẻ như là một ý tưởng tốt, hay nói cách khác là ngẫu nhiên đơn giản với phạm vi ngẫu nhiên giảm dần về 0 theo thời gian để làm cho nó mờ dần (tôi thà thử nghiệm các chức năng dễ dàng khác nhau trên bán kính giảm dần so với chuyển động thực tế, làm giảm chuyển động chính nó sẽ làm cho máy ảnh cảm thấy như đang ở trong một mùa xuân, không cảm thấy phù hợp với trải nghiệm rung máy theo kinh nghiệm của tôi).
Kaj

3

wkerslake là đúng, rung máy có vẻ phức tạp hơn bạn nghĩ.

Khi mô phỏng máy ảnh rung, bạn phải suy nghĩ về loại máy ảnh (nhà điều hành) bạn muốn bắt chước. Trọng lượng của máy ảnh hưởng đến quán tính, vd. máy ảnh nặng hơn làm mịn các chuyển động 'ngẫu nhiên' nhỏ. Một người vận hành máy ảnh trên đường sắt hoặc trong xe hơi thêm tiếng ồn.

Sử dụng tiếng ồn Perlin hoặc Simplex chắc chắn là một lựa chọn, sau đó tất cả là về việc tìm sự cân bằng phù hợp giữa các tỷ lệ tiếng ồn khác nhau. Nhưng tôi thấy việc sử dụng phép nội suy giữa các giá trị ít chuyên sâu hơn về mặt tính toán và có thể hiệu quả như vậy.

Cách đây một thời gian, tôi đã tìm thấy một kịch bản Maya dường như có rất nhiều điều đúng. Bạn có thể nhìn vào đó .

Ngoài ra, bạn có thể muốn xem Gran Turismo (5) , nhóm của họ đã làm một công việc ấn tượng khi làm nhiều loại máy ảnh thời gian thực rung lắc khi bạn xem một phát lại trong trò chơi.


2

Nếu bạn có vật lý đối tượng động [có thể không phải là từ đúng, nhưng theo ý tôi là vậy], trong đó bất kỳ vật thể nào không cố định sẽ bị 'thổi bay' bởi vụ nổ, bạn có thể khiến máy ảnh bị ảnh hưởng như một vật thể như thế.
Chỉ có sự khác biệt là chỉ thay đổi góc quay / cao độ / ngáp / cuộn của máy ảnh chứ không phải vị trí.
Ngoài ra, có thể tạo ra một chuỗi số ngẫu nhiên và chuyển đổi chúng để xoay bằng cách nào đó? Hãy nghĩ rằng sơ đồ chiều cao, công cụ thang độ xám có thể là một ví dụ; chúng không hoàn toàn khác nhau, nhưng là ngẫu nhiên.


+1 ý tưởng thú vị, tôi nghĩ rằng tôi sẽ thử chuyển động của tiếng ồn và khi tôi chạy nó, tôi sẽ cố gắng thêm hiệu ứng mượt mà hơn, giống như máy ảnh được gắn vào lò xo và ấn ngược bởi cú sốc.
falstro
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.