2013-03-16 2 views
0

OpenGL 컨텍스트에서 OBJ 파일 형식을 구문 분석하고 해석 할 수있는 프로그램이 있습니다.입자 시스템을 사용하여 블렌더로 OBJ 파일의 vertex normal (vn)을 내보내는 방법

블렌더에 '헤어'파티클이있는 간단한 구형을 포함하는 작은 프로젝트를 만들었습니다.

변환 (구체에서 입자를 분리)하면 입자가 새로운 메시를 형성합니다. 그래서 저는 프로젝트 (Sphere와 Hair)에 두 개의 메시가 있습니다. 내보내기 후에 OBJ 파일 (File/export/Wavefront (.obj))에서 메쉬 'Sphere'를 내보내고 'Incluals Normals'를 선택하면 파일에 법선에 대한 모든 정보가 포함됩니다 (예 : vn 0.5889 0.14501 0.45455, ...).

입자를 사용하여 '노멀 포함'도 선택하면 OBJ 파일에 법선이 없습니다. (내보내기 전에 올바른 메쉬를 선택했습니다.)

따라서 입자 유형의 메쉬에 법선 속성을 내 보내지 않은 이유를 알 수 없습니다.

여기 내 머리카락의 일반적인 블렌더 렌더링이 있습니다. 보시다시피 모든 미립자는 빛과 반응합니다. 따라서 Blender는 분모에 대한 법선 속성을 사용합니다.

enter image description here

이제 (블렌더 편집 모드 '에서 -> 변환 후의) 상기 방송 화면 particules 여러 줄 형성되어있다. 내 OpenGL 프로그램에서 GL_LINES를 사용하여 동일한 입자를 렌더링합니다. 나는 단지 나의 미립자에 빛 속성을 관리하기위한 법선 정보를 원한다.

enter image description here

은 어떻게 particules 메시에 대한 노멀 속성을 수출하는 아이디어가 있습니까?

미리 도움을 주셔서 감사합니다.

+0

이 경우 입자는 점으로 표시됩니까? 그렇다면 왜 그들은 법선을 가질 수 있습니까? –

+0

아마도 관련이 있습니다 http://blenderartists.org/forum/archive/index.php/t-147629.html –

+0

예 이미이 페이지가 표시되고 머리카락 파편은 이미 법선 정보없이 OBJ 파일로 변환되어 있습니다. 내 미립자는 선으로 기록됩니다 (머리는 여러 개의 작은 선으로 이루어짐). 그래서 법선 속성을 가질 수 있다고 생각합니다. (선 (GL_LINES)은 작은 폴리곤이고 OpenGL의 모든 폴리곤에는 법선 특성이 있어야한다고 생각합니다). 내 견해에 대해 어떻게 생각하니? 감사합니다 – user1364743

답변

3

선에 법선을 부여하려고합니다. 그게 무슨 뜻인지 생각해 봅시다.

우리는 표면 법선 벡터에 대해 말할 때, 우리는 하나 개의 측면은 "전방"표면으로 정의 삼각형 들어

surface normals

"표면 지적"의미가 정확하게 하나의 법선. 선의 경우, 선에 수직 인 벡터는 법선으로 간주됩니다. 무한대이며 아무 것도 "할"것입니다.

그래픽의 법선을 고려하는 이유는 무엇입니까?

  • 조명 : 예 : 확산 조명은 입사광 벡터와 법선의 내적을 사용하여 근사화됩니다. 이것은 머리카락에 적용되지 않습니다! 당신이 (? 당신이 머리 공간으로 변환 싶어) 한마디로

어떤 정상을 선택할 수 있습니다이를 위해 :

  • 변환 행렬을 얻기 당신이 중 하나가 일반에 대해 어떤 수직 벡터를 선택할 수 있습니다 (이것은에 쉽게 이것을 계산하십시오) 아니면 머리카락을 전혀 사용하지 마십시오. 그것은 당신이하려는 일에 달려 있습니다.

  • +0

    이 답을위한 탱크. 위에서 볼 수 있듯이 Blender는 Normals를 사용하여 입자를 표시합니다. 왜냐하면 모델을 움직이면 모든 머리카락이 가벼운 속성을 가진 반응을하기 때문입니다. 따라서 블렌더 내보내기 스크립트에는 입자 추출을위한 법선 속성이 포함되어 있지 않을 수도 있습니다. 게다가 만약 내가 openGL 프로그램에서 glLineWith (10.0) 메서드를 사용한다면 선들이 평면처럼 보일 수 있습니다 (그래서 선은 다각형입니다) 그래서이 경우에는 물론 계산할 것입니다. Blender를 이미 이런 종류의 작업에 사용하고 있습니까? – user1364743

    +1

    머리카락을 밝게하려면 조명이있는 선분과 광선과 같은 평면에있는 법선을 사용하십시오. 사실상 모든 경우에 그러한 정상이 있습니다. 그런 다음 평상시처럼 빛을 낼 수 있습니다. 그러나 이것은 머리카락의 위치, 빛의 위치 등에 따라 바뀌므로 .obj에 직접 저장할 수 없습니다. –

    +0

    좋아, 그럼 나는 내 자신의 법선을 계산할거야. 귀하의 답변에 감사드립니다. – user1364743