폭발적인 카메라 / 스크린 흔들림


36

폭발하는 동안 카메라를 약간 흔들고 싶습니다. 몇 가지 다른 기능을 시도해 보았지만 실제로 '와우, 쾅!' 내가 찾고있는 느낌. 나는 구형 파형 패턴뿐만 아니라 약간의 선형 감쇠로 임의의 비교적 고주파 사인파 패턴을 시도했습니다. 나는 한 축, 두 개, 세 개 모두를 움직여 보았습니다 (이 경우 돌리 효과는 거의 눈에 띄지 않지만).

누구든지 좋은 카메라 흔들림 패턴을 알고 있습니까?


2
폭발 후 카메라 흔들림의 필름 장면을 찾아 슬로우 모션으로보고 카메라가 어떻게 흔들리는 지 확인하고 코드를 기반으로합니다.
Skizz

나는 똑같은 문제가 있습니다-흔들림이 너무 부드럽게 보입니다
Iain

카메라 흔들림을 구현할 때 직면하는 가장 큰 문제는 카메라 대신 플레이어 캐릭터 (카메라가 초점을 맞춘)가 움직이는 것처럼 보입니다. 이상한 점은 눈에 띄는 주변 환경을 보면 카메라가 움직이는 카메라이지만 플레이어 캐릭터에 집중하기 때문에 인식이 망가집니다. 나는 아직도 이것을 해결하려고 노력하고 있습니다. 아마도 카메라가 플레이어를 향해 / 플레이어쪽으로 움직일 때 시야를 변경하여.
Kaj

답변:


35

카메라 방향에 Perlin 노이즈를 적용하여 적절한 카메라 흔들림을 얻었습니다. 고주파수 흔들림이 내장되어있어 큰 충격을 줄 수 있으며 정말 좋아 보입니다.

http://mrl.nyu.edu/~perlin/doc/oscar.html 에는 노이즈 생성을위한 자세한 내용과 샘플 코드가 있습니다.


3
오, 소음, 왜 그렇게 생각하지 않았어 ... 결국 나는 거의 짧은 소음의 버스트, 그렇지 않습니까 ... 훌륭한 아이디어!
falstro

좋은 생각, 펄린 노이즈를 사용하여 해결할 수없는 것이 있습니까? : P
Cubed2D

1
노이즈는 확실히 당신의 애프터 이펙트를 다른 방향으로 무작위로 변경 한 후에도 효과를 볼 수있는 방법입니다. 그러나 그것은 경련이 될 수 없으므로 짧은 균일 성 섹션이 필요합니다. 펄린 소음에 완벽하게 사용되는 것 같습니다.
decelratedcaviar

17

폭발로 인한 화면 흔들림을 언급하는 경우 프로토 타입 게임에서 2D 구현을 시도했지만 3D로 잘 변환되어야합니다. 상기 봐 유튜브 비디오 1시 35분에 대한 해제 화면 흔들림 킥 - 그건 당신이 찾고있는 거라면 볼

어쨌든, 내가 달성 한 방법은 sceen에 대한 뷰포트를 만들고 중심점 ( centre)을 저장하는 것이 었습니다 .

폭발이 시작되면 radius~ 30px 의 무작위 를 만듭니다 . 그런 다음 centre임의의 방향 으로이 많은 픽셀 만큼 뷰포트를 오프셋합니다 .

이후의 각 업데이트 (화면으로 그리는 것 사이)마다 radius10-20 % 감소 하고이 많은 픽셀로 centre다시 뷰포트를 오프셋 합니다. 그러나이 오프셋에 대해 임의의 각도를 선택하는 대신 이전 뷰포트 각도를 가져와 centre180 +/- 60도 추가했습니다.

기본적으로 각 업데이트 (또는 10-20ms 정도)에서는 centre화면 에서 픽셀 수가 줄어들어 뷰포트를 오프셋합니다 .

의사 코드는 다음과 같습니다.

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
}

반경이 2.0보다 낮아지면 일반적으로 화면 흔들림을 중지합니다.이 시점에서 뷰포트를 다시로 재설정합니다 centre.


4
나는이 구현을 많이 좋아하고 작은 2D 게임에 완벽하게 작동합니다. 주석으로 randomAngle += (150 + rand()%60)+/- 문제를 없애기 위해하는 것과 같습니다 .
Krøllebølle

2
비디오가 다운되었습니다.
Tara

"+/-"는 어떤 종류의 계산입니까? 나는 이런 종류의 물건을 본 적이 없다.
Yoo Matsuo

4

카메라 흔들림 "느낌"을 정확하게하는 것은 움직임의 방향과 가속 곡선에 대한 것이 아닙니다.

카메라 흔들림이 애니메이션 영역으로 뛰어 들고 있으므로 모든 행동 / 반응 규칙이 적용됩니다. 지점 간 선형 방식으로 이동하는 경우 매끄럽고 균일하며 충격과 같지 않습니다.

머리를 앞뒤로 흔들면 방향이 바뀌는 중간 지점에서 가장 빠르게 이동하고 먼저 감속 한 다음 새로운 방향으로 시작해야하기 때문에 각 측면에서 느려집니다.

다음은 모션에 적용 할 다양한 여유 기능 목록입니다 . 좀 더 갑작스럽게 느껴지도록 첫 번째 모션 만 EaseOut하고 나머지는 EaseInOut을 사용하여 헤드 / 카메라 움직임을 시뮬레이션 할 수 있습니다.


1
완화가 여전히 너무 부드러워 질 것이라고 생각합니다. 펄린 노이즈는 좋은 생각처럼 보입니다. 그렇지 않으면 시간이 지남에 따라 임의 범위가 0으로 감소하는 평범한 무작위가 사라집니다 (실제 움직임보다 반경이 감소함에 따라 다른 편의 기능을 실험하여 움직임을 완화시킵니다) 그 자체로 카메라가 봄과 같은 느낌을 줄 것입니다. 내 경험에 카메라 흔들림이 맞지 않습니다.)
Kaj

3

wkerslake가 맞습니다. 카메라 흔들림이 생각보다 복잡해 보입니다.

흔들리는 카메라를 모방 할 때 어떤 유형의 카메라 (오퍼레이터)를 흉내 내고 싶은지 생각해야합니다. 카메라의 무게는 예를 들어 관성에 영향을줍니다. 무거운 카메라는 작은 '무작위'움직임을 부드럽게합니다. 레일 또는 차량의 카메라 조작자는 추가 소음을 추가합니다.

Perlin 또는 Simplex 노이즈를 사용하는 것은 확실히 옵션이며, 다른 노이즈 비율 사이에서 올바른 균형을 찾는 것입니다. 그러나 값 사이의 보간을 사용하는 것이 계산 집약적이지 않고 효과적 일 수 있다는 것을 알았습니다.

얼마 전, 나는 많은 것을 올바르게 얻는 것처럼 보이는 Maya 스크립트를 발견했습니다. 당신은 한 번 봐 걸릴 수 있습니다 것을 .

또한 Gran Turismo (5)를 살펴보고 싶을 수도 있습니다 . 그 팀은 게임에서 다시보기를 볼 때 다양한 유형의 실시간 카메라 흔들림을 수행하는 데 인상적인 일을했습니다.


2

동적 객체 물리학 (아마 올바른 단어는 아니지만 의미하는 바)이 있는데, 고정되지 않은 객체가 폭발에 의해 '발산'되는 경우, 카메라가 이와 같은 객체로 영향을받을 수 있습니다.
차이점은 카메라의 회전 / 피치 / 요 / 롤을 변경하는 것입니다.
그 외에, 난수 시퀀스를 생성하고 어떻게 든 그것들을 회전으로 변환합니까? 하이트 맵, 그레이 스케일을 예로들 수 있습니다. 그것들은 완전히 다르지 않지만 무작위입니다.


+1 재미있는 아이디어, 나는 잡음 움직임을 시도 할 것이라고 생각합니다. 그리고 그 달리기를 할 때, 카메라가 스프링에 부착되어 뒤로 밀린 것처럼 더 부드러운 돌리 효과를 추가하려고 시도합니다. 충격에 의해.
falstro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.