일단 OSG에서 쉐이더 적용 법에 관해 조금 더 찾아보면서 연구할 계획입니다.
OSG에서 오브젝트의 각 메쉬마다 각기 다른 텍스쳐를 적용시키는 방법이 있을테고 그럴 경우
그 텍스쳐 적용은 쉐이더 코드(Vertex & Fragment)를 읽어들여 처리하면 될 듯합니다.
그런데 여기서 각각의 메쉬마다 다른 텍스쳐 적용을 OSG에서는 어떤 방식으로 하는지 아직 잘 모르겠고
지난 번 박형원씨가 준 모델을 Viewer에서 열었을때 자식메쉬가 한개만 나왔던 걸로 기억하는데
그것에 대해서도 조금 더 봐야할 듯 합니다.
일단, OSG의 FX쪽을 보면서 범프적용 방법을 이번주 동안 생각해 보겠습니다...
그리고 OSG Tutorial은 개인적으로 분석해 보겠습니다.
답변 부탁드립니다.
--
Changhoon PARK
그런데 의문점이 하나 있는데 노드들이 가지고 있는 Texture 출력시 FindNodeVisitor를 써야 하는 건가요?
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 현재 모델들 마다 읽어들이는 텍스쳐의 경로가 상대경로와 절대경로 둘다 섞여있음
--> 모델의 텍스처 경로를 전부 상대경로로 수정하기로 함
2. 경주 전체는 구역으로 나뉘어져 있는데 이 모든 구역들은 어차피 동일한 모델이고 이를 회전만 가해져 다시그려왔음
--> 하나의 구역만 만들고 이 구역을 instancing 하기로 수정
위의 두가지 문제점이 발견되었고 위와 같이 바꾸기로 김박사님께서 지시하셨고 박형원씨가 수정하여 다시 테스트 하기로 하였습니다
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
저 개인적으로는 주말부터 교수님께서 말씀하신 샘플(Vertex, Fragment Shader 적용 샘플)을 보고있습니다.
동시에 범프매핑 적용 방식과 범프효과에 대해 고민중인데요..이와 관련된 것은 내일 찾아뵙고 말씀드리겠습니다
내일 교수님 뵈러가겠다고 김진욱 박사님께 말씀드렸고 허락하셨습니다. 이상입니다.
교수님께서 말씀하신 "모델러를 위한 지침"이란 페이지가 보이지 않습니다
제가 못찾은건지 궁금합니다.
범프매핑 관련 적용방법에 대해서는 내일 찾아뵙고 말씀드리겠습니다.
마지막으로, 득남 진심으로 축하 드립니다 ^^;
김박사님과 박형원씨를 통해 포토샵에서 rgb 파일을 열수 있게 되었습니다
그래서 확장자명이 RGB인 파일의 범프맵까지 만들었습니다
말씀드린것과 같이 현재 모델에는 .rgb와 .bmp 두 종류의 텍스쳐가 사용되고 있습니다..
이와같이 다른 종류의 파일포맷이 사용될 경우 작업에 비효율적이고 뜻하지 않게 문제를 발생시킬 요지가 있어
좋지 못한듯 합니다. 모델에 사용되는 텍스쳐는 bmp와 같은 파일 포맷으로 통일시켜 모두 바꿔야 할 듯합니다.
이에 대하여 말씀을 드렸고, 김박사님, 박형원씨 모두 공감하셨으며 나중에 바꾼다는 결론이 섰습니다.
그리고 추가적으로 현재 쉐이더 코드는 osgTutorial에서 사용되던 코드 그대로 가져다 썼는데
김박사님께서 이상하다고 말씀하셔 수정하여야 할 듯 합니다.
* 지적받은 문제점 *
- 스펙큘러가 너무 강함
- 광원과 노말과의 연산에서 비 정상적임
- 범프 효과가 뭔가 어색하여 수정 필요
마지막으로, 지난번 말씀드린 것과 같이 지붕과 같이 한 종류의 텍스쳐를 여러번 연산 할 경우
텍스쳐 한곳에만 범프가 적용되는 기이한 결과를 출력합니다.
위에서 말씀드린 문제점 중에 하나의 텍스쳐가 여러번 사용되는 경우 전체중 특정 한 부분에서만
범프가 적용되는 문제점이 있다고 말씀드렸는데요...방금 해결했습니다
Open Scene Graph의 API중에 setWrap() 함수를 호출해서 wrapping 방식을 REPEAT모드로 셋팅하여
Normal Map을 다시한번 찍어주었더니 간단히 해결되었습니다.
어제 갑작스럽게 범프매핑 작업한 것을 테스트해보게 되었습니다 (고박사님, 김박사님, 박형원씨)
일단 박형원씨가 작업한 것을 OSG에서 보기 위함이 주된 목적이었습니다,
경주 시내를 나눈 구역 10개 정도에 범프를 적용시켜 보았습니다
테스트 결과 범프는 적용되었고, 수정사항으로 제가 해야될 것은
1. 현재 Fragment Shader에서 연산처리가 이상함 (Lighting)
2. Source 구조 변경
이 두가지가 문제점으로 지적받았습니다. GLSL Code는 지난번 튜토리얼의 그 소스를 가져다 썼는데
수정이 필요한듯 합니다. 그리고 두번째 지적사항인 소스 구조 변경의 필요성은 저도 공감합니다.
단순히 범프 테스트를 위해 분리만 시켰지 효율적이지 못하다는것은 생각하고 있었던 점입니다.
그리고 박형원씨와 어제 밤에 간단한 테스트를 하나 더 해보았는데
지난 번 말씀드린것중 한가지로써, flt파일이 계층구조로 하위에 flt를 또 갖게되는 링크 구조로 작업 결과물을
만들고 이것을 현재 제가 구현한 범프 테스트 프로그램 (OSG기반)에서 문제없이 돌아가는지 테스트하는것이었는데
결론은 문제없이 잘 돌아갔습니다.
여기까지가 테스트와 작업 진척사항에 대한 보고입니다.
그리고 지적받은 위의 두가지 사항은 최대한 빨리 끝내서 최적화까지는 힘들더라도 3월이내에 범프 기본구현및 적용
가능한 상태가 되도록 할 계획입니다.
그럼 내일 미팅때 뵙겠습니다. 수고하세요^^
이번주 해야 할 작업에 대해 적어보겠습니다
1. Bump Mapping GLSL Code 수정
2. 기와 한개를 Max에서 만들어 이를 여러개 배치하고 이를 Plug-in filter에서 텍스쳐로 뽑아내는 TEST
3. Bump Mapping Class 구조 수정
4. 추가적인 개인공부 ( GLSL, Deferred Shading, OpenGL )
잘못된 부분 또는 추가적인 사항이 있으시다면 답변 부탁드리겠습니다
이전에 말씀드린것과 같이 위의 4가지 작업을 진행중에 있습니다
1. 우선 GLSL 코드 수정에 관해서는 지금 주된 작업으로 정하고 계속 보고 있는데요
GLSL에 대한 이해가 필요하여 공부와 병행하다보니 조금 늦어지고 있습니다. 구글링으로 다른 범프매핑 쉐이더 예제를 비교해 보았
는데
일단 3가지 정도로 그 종류를 압축해 볼수 있었습니다. 범프매핑의 Vertex Shader 처리는 이해했고 Fragment
Shader가 문제인데
여기서 이해가 잘 안가는 부분이 Lighting computation 부분입니다. 이 Lighting computation 에
대한 이해가 늦은것은
제가 봤던 HLSL과 지금 사용하는 GLSL의 차이와 OpenGL이라는 3D API 에 대한 이해부족때문이고 앞으로도 해야할
Water 에서도 가장 주된 연산이
Lighting일것이라는 생각에 Lighting을 보고 확실히 이해하여 넘어갈 계획입니다
2. 그리고 그래픽을 공부하는 친구에게 부탁하여 기와 Model을 만들었습니다.
3. Bump Class 구조 변경의 문제는 어찌보면 최적화와 관련된 부분이라고 생각합니다. 최적화를 프로젝트 진행 도중에 한다
는것은 결과론적으로
굉장히 좋지못한 방법이라 생각되어 일단 필요한 구현을 끝마친 후 변경할 계획입니다. 구조는 구상중에 있고 어느정도 확립되었습니
다
4. OpenGL & GLSL에서 Lighting에 관련된 API와 이론을 공부하고 있습니다.
추가적으로 질문이 한가지 있습니다. 지난번 천안가면서 말씀하셨듯이 분명 OSG 내부적으로 Resource Management 기
능이 있을것이라고 생각됩니다
보통 Scene Graph의 주된 핵심 기능 2가지가 Scene management와 Resource management라고 알
고 있는데요
OSG는 Scene Graph 기반으로 되어있고 내부적으로 Resource를 관리하고 있을텐데요 그럼 제가 샘플에서 모든 노드
를 탐색하여 텍스쳐가 있을경우
텍스쳐를 매번 읽어들였다 하더라도 그 정보가 Draw Call 되기 직전 렌더러에서 동일 리소스를 발견하고 Resource
Management를 하게 될것 같다는 생각이
들었습니다. 일단 이와 관련하여 제가 한번 찾아보겠습니다.
현재 진행중인것은 여기까지 입니다. 추가적인 답변 부탁 드리겠습니다
그럼 수고하세요
2. 릴리즈 모드로 컴파일하여 테스트 해보았는데 그 결과가 디버그 모드일 때와 동일하였습니다.
최저 16프레임이었습니다. 테스트 대상은 지난번 사용되었던 10개 구역입니다.
그럼 답변 부탁드리겠습니다.. 수고하세요
1. 교수님께서 말씀하신데로 1번은 범프 구현 마무리 단계에서 하도록 하겠습니다.
2. 그리고 지난번에도 제가 질문드렸었는데 페이지중에 "모델러를 위한 지침"이라는
페이지는 없는듯 합니다..
그리고 지금 아직 Lighting 문제를 해결하기 위해 계속 진행중입니다..
김박사님 말씀으로는 OpenGL에서는 MatrixStack 이라는 개념이 있는데
여기서 라이팅과 카메라 사이 Matrix 연산 문제 일수도 있다고 하시면서, 추가적으로
말씀하신것이 Open Scene Graph가 알아서 해줄것같다고 하셨는데
혹시 이와 관련되어 알고계시다면 답변 부탁드립니다.
범프 하나가지고 작업을 너무 오래끌고 있는듯 해서 면목없습니다..
최대한 빨리 하도록 하겠습니다
그럼 수고하세요
지난번 회의시간에 말씀드린것과 같이 Bump Class를 다시 수정하고 있습니다.
그동안 사용하였던 Shader Code가 근본적으로 문제가 있어 고치고 있습니다.
GLSL의 Built-in variables를 사용해야한다고 김박사님께서 말씀하셔서
이를 최대한 이용하여 GLSL을 읽어들이도록 바꿀 계획인데
위와 같이 고치려면 OpenGL과 GLSL, OSG를 충분히 이해해야할 듯 합니다
추가적으로, OSG에서 Light, material class를 이용한 튜토리얼이나 샘플에 대해 알고계시다면
링크 부탁드립니다.
그럼 수고하세요
작업 진행사항을 간략하게 보고 드리겠습니다. 이번 주는 3가지 작업을 하고 있습니다.
1. osgfx::bumpmapping 쪽을 보면서 glsl을 보고 있습니다.
2. 자체적으로 Max 스터디를 하는데 Max공부도 같이 하고 있습니다.
3. 김박사님께서 이번주 Naver Meeting때 Visitor Pattern에 대해 발표하라고 하셔서 Visitor
Pattern에 대해 보고 있습니다.
그리고 지난 번 회의시간에서도 언급된것 처럼 bumpmapping을 osg의 bumpmapping 클래스처럼 만들어야 할 듯 한
데
시간이 약간 필요할 듯 합니다.
필요한 작업으로는
1. 기본 Class 구성 ( osg의 Bumpmapping과 기능적 유사 )
2. Assembly Shader Code --> GLSL
3. 한개의 Diffuse Texture와 Normal Texture를 읽어들이는 현재 방식의 변경
위의 3가지 정도가 될듯 합니다. 추가적인 조언 또는 지시사항 있으시다면 답변 부탁드립니다.
그리고 지난번에 말씀드렸듯 "모델러를 위한 지침" 이라는 페이지는 보이지 않습니다. 이에 대한 설명 부탁드립니다,.
그럼 수고하세요
1. 범프매핑 작업
- osgFX::BumpMapping class의 형식으로 만들고 있습니다.
- Link error가 계속 발생하여 도무지 이해가 안가다 오늘 Visual studio workspace
Properties의
Additional Dependencies에 osgUtild.lib와 osgFXd.lib를 추가하여 해결하였습니다..ㅜ.
ㅜ
- 오늘 오후까지 전체 구조 설정하고 이번주 내로 GLSL을 로드할 수 있도록 할 계획입니다
- 지난번에 Bump Mapping class 제작시 만들었던 TextureVisitor class와
osgFX::BumpMapping에
있는 TsgVisitor class를 합쳐 Texture가 있는 노드의 정점들을 Tangent space로 변환 할 수
있도록
해야 할 듯 합니다.
- OpenGL API에서 Variable Setting( attribute, uniform ) 작업을 하고 셋팅된 것들을
GLSL에서 연산 가능하도록 해야하는데 이 부분을 집중적으로 봐야 할 듯 합니다
- 방법은 위와 같다고 생각하고 있고, 말씀드린 작업이 계획되로 진행된다면
조만간 다시한번 범프 데모를 할 수 있을듯 합니다.(방법이 잘못되었다면 지적해 주시길 바랍니다)
2. Visitor Pattern Presentation
- osg에서의 실질적인 사용 예를 들어 다시 한번 발표할 예정 입니다.
3. Max Study
- 자체적으로 Study 진행중
여기까지가 제가 하고있는 작업 진행사항 입니다.
작업이 더딘것 같아서 죄송스럽습니다.
그럼 수고하세요^^
viewer.realize(); <----요기서 나는 에러는 도대체 어떤 이유인지 잘 모르겠습니다..
혹시 아시면 답변 부탁드립니다
그럼 수고하세요
" Unhandled exception at 0x696016fb in Bump.exe: 0xC0000005: Access
violation reading location 0x00000004. "
할당되지 않은 시스템 메모리를 참조하는 듯 한데 원인을 잘 모르겠습니다.
osg에서 BumpMapping.cpp 를 보면 맨 위에 TsgVisitor라는 비지터 클래스가 있고
이 비지터 클래스를 사용하는것이 prepareNode(osg::Node* node) 함수인데요
이 함수는 내부적으로 node->accept(*tv.get());를 해 줍니다..
여기서 문제가 발생합니다..accept를 해줌과 동시에 에러가 발생합니다
이부분을 제외 시키면 이상한 결과겠지만 돌아가기는 합니다.
node->accept(*tv.get()); <-- 여기에서 node는 root node일테고 tv는 TsgVisitor 라고
생각하며
왜 에러가 발생하는지 잘 모르겠습니다..답변 부탁드리겠습니다.
Bump Mapping 문제 해결했습니다..
주말에 계속 작업했는데 TangentSpace로 변환해주는 TangentSpaceVisitor를 사용할때
accept() 함수를 사용하는 Node에 문제가 있었습니다.
모델 데이터의 계층구조 접근 방법의 문제로 없는 노드의 접근이 원인이었습니다
그래서 어제(일요일) 이 문제를 해결했고 파일 형식에 구애받지 않도록 (osg파일과 flt파일) 오늘 수정을 마칠 계획입니다
박사님들께 보여드리기 전까지는 다됐다고 말씀드릴순 없지만. 일단 가장 큰 문제를 해결하고 나니 눈물납니다.ㅋㅋ
그리고 내일부터 3일간 동원훈련갑니다..ㅜ.ㅜ (네이버 미팅 참석 못할듯 싶습니다)
스승의 날에 찾아뵙거나 연락드리긴 힘들듯 한데 스승의 날을 맞아 박창훈 교수님께 미리 감사드립니다.^^
그럼 수고하세요...훈련갔다오고 연락드리겠습니다
<첫번째 문제점 : 모델 계층구조가 서로 다름>
- 우선 OpenSceneGraph-Data ( 기본적으로 osg sample 그래픽 데이터)를
Viewer로 봤을때 최상위에 Group이 있고 그 밑에 Geode 그리고 Geometry 그리고 StateSet
위와 같은 계층구조로 이루어진 것을 볼 수있습니다..
- Lego Model 의 경우도 위와 같은 형식을 따르고 있었습니다
- 그런데 경주모델은 약간 다릅니다
경주 모델의 경우 Group 안에 Group이 있고 이 밑에 Geode 그리고 Geometry가 있습니다
StateSet은 없고 따라서 하위의 Material 과 같은 노드도 없습니다.
그래서 만약에 BumpMapping Class를 만들었다고 가정했을때
Lego Model이나 osg 기본 Sample Model의 경우는 동일한 방식으로 로드하거나 접근이 가능합니다.
허나, 경주 모델의 경우는 접근 할 때 따로 처리를 해줘야 합니다.
(ex1) stateSet이 없으므로 StateSet의 유무로 판별하고자 할때 접근이 불가능
(ex2) Geode의 drawable 계층이 경주 모델의 경우 한단계 더 하위로 내려가야 접근 가능.
물론 따로 처리하도록 구현하여 로딩하게 해줄수는 있습니다
하지만 동일한 형식이 아니라 따로 처리해 하므로 내부적으로 코드가 복잡해 질 우려가 있습니다
<두번째 문제점 : Material 값 셋팅 여부>
지난주 김박사님께서 경주 모델에 material값이 셋팅되어 있는지 여부에 대해
박형원씨에게 물어보라고 말씀하셔서 박형원씨에게 물어봤습니다.
물어본 결과 현재 경주 모델의 경우 Material의 값이 셋팅 된 부분과 셋팅되지 않은 부분이
섞여 있다고 합니다.
(ex) 집 model에서도 지붕 부분에는 Material 값이 셋팅되어있고 벽부분에는 Material값이
없다고 합니다
BumpMapping작업시 모델의 Material값을 읽어와 적용 시켜야 하는데
특정부분은 들어가있고 없는 부분도 있고 해서 난감합니다.
그리고 여기서 앞서 말씀드린데로 StateSet 노드가 없어 Material 노드 자체가 없습니다.
BumpMapping을 하는데 뭔가 .osg(lego & osg)와 .flt(경주)의 노드 계층이 이상해서
Viewer로 보다가 알게 된 사실입니다..
이에 대한 답변 부탁드리겠습니다.
그리고 Material 관련된 것에 대해 박형원씨에게 물어본 결과..
어떻게 하다보니 그렇게 됐다고 하시며 앞으로 신경쓰겠다는 대답을 들었습니다.
그리고 궁금한게 한가지 더 있습니다
Bump Mapping class 만든것을 Visual Studio에서 F5를 이용하여 실행하면
돌아가는데 Ctrl + F5를 누르면 프로그램이 에러가 납니다
특별히 에러 메세지가 뜨는게 아니라 그냥 죽습니다.
안그래도 F5를 눌러 실행하는 경우 가끔 프로그램이 실행도중 사라지는 에러가 있었는데
이와 관련된듯 싶습니다.
이와 같은 에러는 처음보는 경우라 잘 모르겠습니다
혹시 알고 계시다면 답변 부탁드립니다
주변 사람들 이야기나 개인적인 짐작으로는
1. 메모리 관련 문제
2. Working directory 관련 문제
3. 라이브러리 링크
이 세가지 정도로 압축될 듯 한데 자세히는 모르겠습니다
그리고 "혹시, 커널에서 스테레오인지 카메라인지 함수로 설정하는 부분이 있을텐데 주석으로 막고 해봐라.:" <--이건
어떤 말씀이신지 자세히 모르겠습니다..
ctrl + F5를 눌러서 실행시키면 에러가 발생하고 멈추는데 에러 메세지 내용을 보면 다음과 같았습니다
---------------------------------------------------------------------------------------------------------
AppName: bump.exe AppVer: 0.0.0.0 ModName: nvoglnt.dll
ModVer: 6.14.10.9728 Offset: 001016fb
---------------------------------------------------------------------------------------------------------
그래서 nvoglnt.dll 에러가 무엇인지 찾아보니
nvoglnt.dll은 윈도우 운영체제에서 엔비디아 그래픽 카드로 OpenGL API 프로그램을 돌렸을때 사용되는 DLL이라는
것을 알게 되었습니다. 지금 현재 저 dll 파일과 충돌이 나고 있는데
이것이 어떤 이유인지 자세히 모르겠습니다
혹시 알고계시다면 답변 부탁드립니다. 그럼 수고하세요
원인을 발견했습니다. 교수님 말씀데로 메모리 관련 문제였습니다
Tangent Space로 generate 시키는 부분에서 포인터끼리 엉켜서 프로그램이 다운되는 현상이 발생하게 된 것이었습니
다...
힌트를 주셔서 정말 감사드립니다..이 버그 때문에 마음고생 심했습니다..ㅠ.ㅠ
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
최근 하고 있는 작업에 대해 말씀드리겠습니다.
1. 우선 오늘 박형원씨 작업물을 받아 OSG에서 돌려보고 박사님들께 보여드렸습니다
- 경주 전체 (이번주 금요일 네이버 미팅때 다시한번 돌려볼 예정입니다)
2. 주말부터 이번주 월요일까지 버그 수정작업을 하였고 버그 수정이 끝나는데로 Naver 모듈화 작업에 들어가게 될듯 싶습니
다
- 김박사님께서 버그 수정되는데로 Naver 모듈화 해야 한다고 말씀하셨습니다
3. Lego Model의 퀄리티 향상을위해 BumpMapping을 응용한 (한차원 향상된 이펙트) Parallax
Mapping Test를 동시 진행해야 될 듯 싶습니다
- Lego를 보면 오브젝트를 제외한 바닥은 울퉁불퉁한 효과가 없는데 Bump로는 처리에 한계가 있어 Bump가 아닌
Parallax Mapping을 적용 시켜보라고
김박사님께서 지시하셨습니다 ( 굉장히 흥미롭습니다^^ )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이상입니다..
수고하세요
2007.5.29 현재 작업 현황에 대해 말씀드리겠습니다
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. Bump Mapping --> Parallax Mapping --> Relief Mapping 작업을 했고
오늘(2007.5.29) 마지막으로 Relief Mapping 작업을 완료하여 김박사님께 보여드렸고
김박사님께서 이제 최적화 작업을 한 후, Naver 모듈화 작업을 진행하라고 지시하셔서
일단 최적화 작업을 시작했습니다. 최적화로는 Frame rate 체크, Shader Code 수정, Image
format 변경 등이 있습니다
2. Artificial Life paper 발표준비 ( Steering Behaviors for Autonomous
characters : GDC1999 )
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이렇게 두가지를 진행하고 있습니다. Bump Mapping작업을 하다보니 OpenSceneGraph API 사용에 있어 어느정
도 감이 오는듯 합니다,
아직 세부적인것까지 자세히는 모르겠지만 간단히 기본적으로 사용되는 것들과 기본 구조는 알것 같습니다
가르침 주셔서 감사드립니다. 교수님 덕분입니다.
최적화 작업이 끝나는데로 모듈화 작업에 들어갈텐데 명희형과 재용이에게 배워 적용가능한 상태가 되도록 하겠습니다
추가적으로 질문하나 드리겠습니다. osg에서 frame rate 표시를 보면 고정 프레임으로 60fps에 맞춰 놓았는데
60fps로 lock해놓은게 아니라 full frame rate를 볼 수 있는 방법이 있는지 알고 싶습니다.
없다면 직접 만들어서 표시해 주어야겠지요? 답변 부탁 드리겠습니다..
그럼 수고하세요.^^
교수님
2007.5.29 현재 작업 현황에 대해 말씀드리겠습니다
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. Bump Mapping --> Parallax Mapping --> Relief Mapping 작업을 했고
오늘(2007.5.29) 마지막으로 Relief Mapping 작업을 완료하여 김박사님께 보여드렸고
김박사님께서 이제 최적화 작업을 한 후, Naver 모듈화 작업을 진행하라고 지시하셔서
일단 최적화 작업을 시작했습니다. 최적화로는 Frame rate 체크, Shader Code 수정, Image
format 변경 등이 있습니다
2. Artificial Life paper 발표준비 ( Steering Behaviors for Autonomous
characters : GDC1999 )
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. KBS 방송 Demo 준비
Lego House 바닥은 Lego특유의 울퉁불퉁한 요철이 없는 단순한 평면인데.
Texture Mapping을 적용시켜 Lego 요철을 만드는 작업을 했고,
Mapping기법으로는 Relief Mapping을 사용하였으며,
Naver Module로 만들어 추가하였습니다.
2. BumpMapping이라는 상위 인터페이스 슈퍼 클래스를 만들고 이를 상속받는
Normal Mapping, ParallaxMapping, ReliefMapping 클래스의 구조로 만들어
간단하게 NormalMapping, ParallaxMapping,ReliefMapping을 적용 가능하도록 하였습니다
( apply함수 호출로 모든게 끝납니다^^)
3. 위의 클래스를 nvmLoader에 추가하였습니다.
여기까지가 현재까지 그리고 현재 작업 사항이었습니다.
지난번 여쭤본 Full Framerate는 Core부분을 살펴보니 Core를 건드려야 될 듯 해서 그냥 멈췄습니다
혹시라도 나중에 필요하면 기능을 직접 만들면 되고, 당장 필요한것도 아니고 영향을
주는것도 아니라서 현재 해야할 일에 치중하고자 멈췄습니다.
그럼 수고하세요^^
질문이 있습니다..
다름이 아니라 사용되는 모델 파일의 내부 계층구조를 뜯어보게 되면
어떤 모델의 경우는 최상위 노드가 Group 노드 이고 또 어떤모델은 최상위노드가 MatrixTransform 노드이고 각각 다
른데
여기에는 특별한 이유가 있는건지 알고 싶습니다..
그래픽 작업을 하는 사람이 어떤 특별한 작업을 해줘서 이렇게 되는건지
아니면 export할때 그냥 임의적인 계층 형태로 나오게 되는건지 궁금합니다...
테스트가 필요한 LEGO 모델이 있어서 그래픽 데이터를 받았는데 이 모델(침대)의 경우는 계층구조 최상위 노드가
matrixTransform 노드입니다..
지난번에 또다른 테스트를 위해 받았던 모델(의자)의 경우는 Group노드 였습니다..
같은 사람이 만들었는데 왜 이렇게 다 다른지 모르겠습니다. 무슨 다른 이유가 있어서 인가 싶어서 궁금합니다..
박형원씨의 경우는 그래픽 작업을 하고 나서 제가 테스트 해보기위해 받아보면
모든 모델 파일의 계층구조가 동일합니다.
그래서 오히려 박형원씨가 작업한 모델 데이터는 테스트해보기 편할때도 있습니다.(Group-Group-Geode-
Geometry)
어쨌든, 제가 궁금한것이 이렇게 상위노드를 다르게 하는 이유가 있는지
그리고 다르게 하면, 특히 matrixTransform이 최상위에 왔을때는 attribute를 찾지 못하는 문제가 발생합니다.
명희형에게 물어보니 명희형도 이런 문제가 있었다고 하는데
명희형의 경우 모델을 읽어들일때 matrixTransform으로 형변환 시킨다음에 읽어들였다고 했습니다.
하지만 이와같은 했을경우, 최상위노드가 matrixTransform인것도 있고 Group노드인 경우도 있고 다른데 이때마다 이
를 확인해서 손수
형변환을 시켜줘야 하게 되므로 효율적이지 못한듯 합니다
LEGO 모델의 경우 왜 최상위 노드가 matrixTransform 인지 명희형도 모르는것 같아 그래픽 작업을 하신 분께 직접
물어봤는데 그분역시
잘 모르는듯 했습니다..두서없이 너무 장황하게 말씀드린것 같은데^^; 제가 여쭤보려는것이 어떤 의미인지 이해하셨으리라 생각합니
다
답변 부탁드립니다. 수고하세요