2012-06-05 5 views
0

다른 사람이 three.js와 함께이 문제를 겪고 있는지 확실하지 않습니다. 나는 다양한 회전 속도 (화살표 키, 마우스 또는 터치 입력)로 회전 할 큐브 simple demo을 보유하고 있습니다. Chrome 브라우저에서 모든 것이 환상적으로 작동합니다. iMac에서 건너 뛰는 작업에서 텍스쳐가 연결되고 사파리에서 제 기하학에 올바르게 매핑되지 않은 것처럼 보입니다.Three.JS - Firefox의 스크롤 문제

Mac에서 Firefox 브라우저로 이동했는데 모든 것이 작동하며 프레임 속도는 괜찮습니다. 어떤 이유로 큐브가 특정 각도로 회전 할 때 렌더러가 점프하고 화면 위가 위로 이동하고 맨 위의 제목을 볼 수 없으며 통계 위젯이 화면 하단에서 위로 이동하는 것처럼 보입니다. 또한 내 큐브의 y 위치가 동시에 점프하는 것 같습니다. 나는 일부 모바일 브라우저에서 안드로이드에서 같은 문제가있는 것 같다. 누구나 파이어 폭스 (Mac?) 또는 모바일 브라우저에서 갑자기 점프하고 화면 상 허리 등을 움직여서 비슷한 문제가 발생했는지 궁금합니다.

편집 : 문제를 파악했습니다. 나는 여전히 이상적인 해결책이 없다. 내 데모 사본을 만들고 키보드 처리 코드를 주석 처리하려고했지만 놀랍게도 그 문제는 여전히 존재했습니다. 분명히 firefox가 위아래로 창을 약간 위아래로 스크롤하고 있으며 THREEx library에 포함 된 키보드 처리기가 Firefox의 위쪽 및 아래쪽 화살표 키의 기본 동작을 비활성화하지 않습니다. 크롬에서는 내 창을 스크롤 할 여지가 없으며 단순히 렌더러를 창 크기로 만듭니다. 파이어 폭스가 왜 스크롤하는지 모르겠다.

+0

당신이 일어나고 있지만, 질감 접합이되지 않는 이야기하고있는 "Y 점프"(LG 옵티머스 T는 포팅 사이 애 노젠 모드 7을 실행). 내 장치의 2 센트 만 추가하면됩니다. –

답변

1

문제 파이어 폭스이었다 그래서 렌더러는, 창 크기로 설정되어 있지만 파이어 폭스 (안 크롬)에서 어떤 이유로도 스크롤 할 여지가 있다고했다 화살표 키를 사용하여 스크롤. 이 문제를 해결하기 위해 화살표 키가 스크롤되지 않도록 preventDefault()를 추가하여 THREEx.KeyboardState.js의 두 함수를 편집했습니다.

여기에 필요한 편집이다 : 내 안드로이드 장치에

this._onKeyDown = function(event){ 
    event.preventDefault(); 
    self._onKeyChange(event, true); 
}; 
this._onKeyUp = function(event){ 
    event.preventDefault(); 
    self._onKeyChange(event, false); 
}; 
1

예를 들어 Mac의 Firefox에서 동일한 문제를 실험합니다.

렌더링에서의 점프는 가비지 컬렉터 때문입니다 (Firefox에서는 제대로 구현되지 않았습니다). 각 "애니메이션"기능에 메모리를 할당하고 있습니다.

회전을 위해 새 Vector3/Matrix4를 만드는 대신 전역 변수를 사용하면 이러한 개체를 한 번만 만들 수 있습니다.

게다가 KeyboardState를 사용하고 각 애니메이션 호출에서 'State'함수를 실행하는 대신 KeyboardListener를 사용해야합니다. KeyboardListener는 코드가 변경 될 때마다 실행됩니다 (모든 시간이 아닌).

이 예를 살펴해야합니다 http://mrdoob.github.com/three.js/examples/canvas_geometry_cube.html

+0

좋아, 내가 제안한대로 회전 기능의 첫 번째 줄을 지우려고했다. (나는 github에 대한 토론에서이 기능들을 꺼내 내 필요에 맞게 편집했다.) rotationMatrix를 내 프로그램의 시작 부분에서 초기화 한 전역 변수로 만들었습니다. 데모가 손상되어 큐브를 회전시킬 수 없습니다. 그 외에는 오류가 없습니다. 함수의 메커니즘에 대한 확신이 없기 때문에 이유를 알 수 없습니다. 행렬 회전을 사용하여 몇 가지 예제를 찾아서 그 행태가 어떻게되는지보십시오. –

+0

실제로 파이어 폭스에서 실행하면 (적어도 Windows에서는 위아래 키를 치면 프레임 점프가 가능해 보입니다.) 몇 가지 추가 실험을 한 결과, 화살표 키 입력.키보드 처리기 객체는 다른 도움 코드로 믿는 이벤트 리스너를 감싸는 래퍼 일 뿐이지 만 파이어 폭스에서이 문제를 일으키는 오류가있을 수 있습니다. 표준 키 이벤트를 사용하여 코드가 도움이되는지 확인하기 위해 코드를 변경하려고합니다. 의견을 보내 주셔서 감사합니다. –