html5
3D 그래픽엔진 화면 흔들림방지하기
밥을먹는선비
2015. 12. 31. 13:56
대부분의 3디 그래픽스 랜더들은 씬그라프들에 대한 update 콜백을 제공한다.
대부분의 어플리케이션들은 그곳에서 씬그라프상의 오브잭트들을 움직이게된다.
그리고 함수의 마지막 부분에서 updateAll을 하게 되는데
문제는 여기서 발생한다.
주로 물체와 카메라를 동시에 움직일때 발생한다.
카메라의 시점과 오브잭트가 위치가 갱신한 타이밍이 교묘하게 엇갈리기때문에 발생한다.
가장간단한 해결방법은 물체를 움직이기전에 카메라의 메트릭스를 한번 갱신해주는 방법이다(월드행렬)
var self = this;
self.camera.updateMatrixWorld();
var v1 = new THREE.Vector3( 0, 0, 0.5 ).unproject( self.camera );
self.testnode.position.copy(v1)
this.updateAll();
위와 같이 말이다.