2011-06-15 4 views
2

기본적으로 모델 파서를 작성하려고하는데, wavefont obj 파일을 가져 와서 webgl에서 렌더링합니다. 결국 나는 이러한 객체를 회전, 평행 이동 및 크기 조정할 수 있기를 원합니다.Webgl에서 3d 모델을 렌더링하려고 시도 할 때 이상한 문제가 발생합니다.

나는 인터페이스가 모두 설정되어 있으며 잘 작동합니다. 그러나 렌더링에 문제가 있습니다.

obj 파일을 가져 와서 배열의 요소 수가 모두 올바른지 확인하고 chromgl webgl 디버그 플러그인을 사용하여 검사 한 결과 배열이 일치합니다 (심지어 요소 값도 일치 함). 정점의

번호 : 지수의 10932 번호 : 어쨌든 18960

내가 gl.drawElements 실행 (gl.TRIANGLES,의 numItems, gl.UNSIGNED_SHORT, 0); 크롬 오류가 발생하지 않지만 webgl 플러그인 디버그에서 추가 정보없이 'INVALID_OPERATION'이 표시됩니다.

numItems (보통 인덱스 수/18960)를 훨씬 낮은 수로 변경하면 주전자가 렌더링됩니다 (약간 잘못됨). 행운의 번호는 어떤 이유로 든 11034입니다. 만약 내가 위를 지나치면 렌더링하지 않을 것입니다, 아래로 가면 약간 틀린 찻 주전자가 렌더링 될 것입니다. 분명히 숫자를 하드 코딩 할 수 없기 때문에 실제로이 숫자가 색인의 전체 개수가되어야합니다.

그래서 나는이 디버그 내 전체 코드, 일어나는 이유에 매우 혼란 스러워요 : http://webdesignscript.net/assignment/graphics_a3/scripts/webglengine.js

찻 주전자 모델로드 : http://webdesignscript.net/assignment/graphics_a3/models/teapot.obj

코드의 일부를 렌더링 http://webdesignscript.net/assignment/graphics_a3/

건배, 조쉬

답변

1

OBJ 파일의 얼굴에는 정점 ind ic는 0보다는 1에서 시작합니다. 그래서 아마도 나중에 얼굴이 부숴 지거나 작동하지 않는 것입니다. 잘못된 꼭지점을 참조하십시오. 그렇다면 파일에서 읽은 후면의 정점 인덱스에서 1을 뺍니다.

+0

크리스천, 고맙습니다. 이전에는 OBJ 파일로 작업하지 않았습니다. 매우 감사! –

+0

@jezternz 환영합니다 (최대 투표 및 수락). –

관련 문제