Bump Mapping Discussion & Plan

61 views
Skip to first unread message

AhnJongGil

unread,
Mar 4, 2007, 8:10:04 PM3/4/07
to NAVER based on OSG
교수님. 지난번 말씀하신 쉐이더 관련 예제는 메신저로 말씀드린 것과 같이
분석해 본 결과, 각 메쉬마다의 쉐이더 적용이 안되는 예제였습니다.
기존의 샘플과 차이는 단순히 범프 연산을 할때 라이팅이 다이나믹하게 들어간다는 차이 뿐이었습니다.

일단 OSG에서 쉐이더 적용 법에 관해 조금 더 찾아보면서 연구할 계획입니다.
OSG에서 오브젝트의 각 메쉬마다 각기 다른 텍스쳐를 적용시키는 방법이 있을테고 그럴 경우
그 텍스쳐 적용은 쉐이더 코드(Vertex & Fragment)를 읽어들여 처리하면 될 듯합니다.

그런데 여기서 각각의 메쉬마다 다른 텍스쳐 적용을 OSG에서는 어떤 방식으로 하는지 아직 잘 모르겠고
지난 번 박형원씨가 준 모델을 Viewer에서 열었을때 자식메쉬가 한개만 나왔던 걸로 기억하는데
그것에 대해서도 조금 더 봐야할 듯 합니다.

일단, OSG의 FX쪽을 보면서 범프적용 방법을 이번주 동안 생각해 보겠습니다...
그리고 OSG Tutorial은 개인적으로 분석해 보겠습니다.

답변 부탁드립니다.

Changhoon Park

unread,
Mar 4, 2007, 9:23:30 PM3/4/07
to naver-bas...@googlegroups.com
모델이 파일 입력으로 들어왔을 때 texture의 목록을 출력하는 프로그램을 시도해봐 주기 바란다.


--
Changhoon PARK

AhnJongGil

unread,
Mar 5, 2007, 11:51:53 PM3/5/07
to NAVER based on OSG
교수님. 그럼 교수님께서 말씀하신데로 모델 파일을 입력받아 모델이 갖는 노드마다의 Texture 목록을 출력하는 프로그램을 만들
어보도록 하겠습니다.
컴퓨터 셋팅하고 그래픽카드가 바뀌고 또다시 컴퓨터가 바뀌는 등 컴퓨터 셋팅이 오래걸려 진행이 늦었던것 같습니다. 죄송스럽습니다.

Changhoon Park

unread,
Mar 6, 2007, 8:28:16 AM3/6/07
to naver-bas...@googlegroups.com
지체하지 않고 일이 잘 진행 될수 있도록 할 것

협조 받을 부분이 있으면 긴밀하게 채크할 것

AhnJongGil

unread,
Mar 6, 2007, 10:52:31 PM3/6/07
to NAVER based on OSG
교수님.. 모델 노드마다 가지고 있는 텍스쳐를 출력하는 프로그램을 만들기 시작했습니다..

그런데 의문점이 하나 있는데 노드들이 가지고 있는 Texture 출력시 FindNodeVisitor를 써야 하는 건가요?

AhnJongGil

unread,
Mar 7, 2007, 6:44:18 AM3/7/07
to NAVER based on OSG
교수님 추가적인 질문 한가지 더 있습니다..
제가 모델 노드 구조를 보기위해 OpenGL Performer에 박형원씨로 부터 받은 집(가옥) 모델을 띄워봤는데요...
텍스쳐 경로를 올바르게 셋팅했음에도 불구하고 모델만 출력됩니다.
다른 모델 (ex) 탱크 모델과 같은 경우는 텍스쳐까지 올바르게 입혀져 정확히 출력됩니다. (같은 .flt 파일)
그때 박형원씨가 보내준 모델 버전이 두가지였는데 한가지는 텍스쳐 경로가 절대위치(D:\Tex\)로 세팅되어진 모델이었고
또다른 버전은 텍스쳐 경로 셋팅이 상대적이었습니다(현재 flt 모델이 있는 폴더의 상위 Tex폴더) 둘다 실행시켜 보았지만
텍스쳐 로딩에서 실패합니다. 앞서 말씀드린데로 모델만 출력됩니다..
이와같은 경우는 어떤 문제인지 모르겠습니다
답변 부탁드립니다

Changhoon Park

unread,
Mar 7, 2007, 7:06:50 AM3/7/07
to naver-bas...@googlegroups.com
모델과 텍스쳐를 ftp에 올려 놓고 연락 바람

AhnJongGil

unread,
Mar 7, 2007, 7:44:49 PM3/7/07
to NAVER based on OSG
교수님.. 교수님께서 말씀하신데로 ftp에 모델과 텍스쳐 파일 올렸습니다.
model 폴더에 보시면 JK라는 폴더가 보이실겁니다. 그 안에 Tex라는 폴더가 있는데
이게 지난번에 박형원씨로 부터 받은 집(가옥) 모델과 텍스쳐들입니다.
확인 부탁드립니다.

Changhoon Park

unread,
Mar 7, 2007, 10:12:12 PM3/7/07
to naver-bas...@googlegroups.com
내 OSG에서는 모두 정상적으로 출력이 된다.
PERFORMER 에서 무엇을 하려는 것인지 이상 이상하구나..

http://web.imrc.kist.re.kr/~wawworld/vrlab/OpenSceneGraph/orihalconfw-0.2.0.zip

계층 구조를 보는 것이 목적이라면 위의 프로그램을 이용하도록
추가적인 질문이 있으면 전화 바란다.

Changhoon Park

unread,
Mar 8, 2007, 11:53:39 PM3/8/07
to naver-bas...@googlegroups.com, Jinwook Kim

종길군 참고하도록...

  • .osg (OpenSceneGraph native ASCII format)
  • .ive (OpenSceneGraph native binary format)
--
Changhoon PARK

AhnJongGil

unread,
Mar 11, 2007, 9:19:25 PM3/11/07
to NAVER based on OSG
교수님..
교수님 덕분에 지난 주 금요일 박형원씨 모델 테스트는 잘 했습니다.
테스트를 통해 발견된 문제점을 말씀드리자면

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 현재 모델들 마다 읽어들이는 텍스쳐의 경로가 상대경로와 절대경로 둘다 섞여있음
--> 모델의 텍스처 경로를 전부 상대경로로 수정하기로 함

2. 경주 전체는 구역으로 나뉘어져 있는데 이 모든 구역들은 어차피 동일한 모델이고 이를 회전만 가해져 다시그려왔음
--> 하나의 구역만 만들고 이 구역을 instancing 하기로 수정

위의 두가지 문제점이 발견되었고 위와 같이 바꾸기로 김박사님께서 지시하셨고 박형원씨가 수정하여 다시 테스트 하기로 하였습니다
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

저 개인적으로는 주말부터 교수님께서 말씀하신 샘플(Vertex, Fragment Shader 적용 샘플)을 보고있습니다.
동시에 범프매핑 적용 방식과 범프효과에 대해 고민중인데요..이와 관련된 것은 내일 찾아뵙고 말씀드리겠습니다
내일 교수님 뵈러가겠다고 김진욱 박사님께 말씀드렸고 허락하셨습니다. 이상입니다.


Changhoon Park

unread,
Mar 11, 2007, 10:41:39 PM3/11/07
to naver-bas...@googlegroups.com
페이지에 추가할 수 있도록

모델러를 위한 지침 을 찾아보면 있을 것임

AhnJongGil

unread,
Mar 14, 2007, 4:40:48 AM3/14/07
to NAVER based on OSG
교수님...

교수님께서 말씀하신 "모델러를 위한 지침"이란 페이지가 보이지 않습니다
제가 못찾은건지 궁금합니다.
범프매핑 관련 적용방법에 대해서는 내일 찾아뵙고 말씀드리겠습니다.
마지막으로, 득남 진심으로 축하 드립니다 ^^;

AhnJongGil

unread,
Mar 17, 2007, 3:51:21 AM3/17/07
to NAVER based on OSG
교수님 질문이 있습니다.
다름이 아니라 이미지 파일 확장자 명이 .rgb와 같은 경우 포토샵에서 지원되지 않습니다.
그럼 이처럼 확장자가 rgb인 파일의 경우는 범프맵을 적용시키기 위해 만들어야 할 Normal Texture를
어떻게 해야하는지 알고 싶습니다. (Normal Texture를 만들기위해 포토샵 플러그인을 이용해 Diffuse Texture
를 Normal Texture로 변환하는데 문제는 포토샵에서 rgb파일을 열수가 없습니다 )
그리고 텍스쳐 이미지를 포함하는 노드에 범프를 적용시켜 보았는데요..
대상은 박형원씨로부터 받은 집 모델을 사용하고있습니다.
이미지 확장자명이 .bmp인 것중 한 부분(지붕)만 하드코딩으로 테스트해 보았는데
지붕과 같은경우는 지붕 전체중에 일부만 적용되는 현상이 발생하는듯 했습니다
이는 지붕 전체에 똑같은 지붕 텍스쳐를 여러번 적용시키기 때문이라고 생각합니다
이는 나중에 Normal Map을 전부 적용시키고 다시 확인해 보아야 될듯 합니다
추가적으로 rgb와 bmp 이렇게 두 종류가 한 모델에 사용되고 있는데 왜 그렇게 하는지 모르겠습니다.
그럼 답변 부탁드립니다.

AhnJongGil

unread,
Mar 17, 2007, 6:58:32 AM3/17/07
to NAVER based on OSG
교수님
주변 그래픽 하는 친구들에게 물어봤는데 모두 처음보는 확장자라고 모른다고 하네요^^;
그래서 인터넷 검색을 해봤지만 관련 내용을 찾지 못했습니다
ACDSee(이미지 뷰어)에서 열리기는 하지만 포토샵을 이용해서는 파일 로드를 할 수 없습니다.
답변 부탁드립니다

Changhoon Park

unread,
Mar 17, 2007, 9:55:39 AM3/17/07
to naver-bas...@googlegroups.com
http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=329599

다시 한번 확인해보도록 나게 해봤던 것을 말한 것이니...
박형원씨에게 직접 물어보도록...

Changhoon Park

unread,
Mar 17, 2007, 10:25:43 AM3/17/07
to naver-bas...@googlegroups.com
Moore machine, Mealy machine 의 차이점과 현재 우리 모델은 무엇을 기반으로 하는지 설명 요구


On 3/17/07, AhnJongGil <hid...@gmail.com> wrote:

AhnJongGil

unread,
Mar 18, 2007, 10:13:22 PM3/18/07
to NAVER based on OSG
교수님

김박사님과 박형원씨를 통해 포토샵에서 rgb 파일을 열수 있게 되었습니다
그래서 확장자명이 RGB인 파일의 범프맵까지 만들었습니다

말씀드린것과 같이 현재 모델에는 .rgb와 .bmp 두 종류의 텍스쳐가 사용되고 있습니다..
이와같이 다른 종류의 파일포맷이 사용될 경우 작업에 비효율적이고 뜻하지 않게 문제를 발생시킬 요지가 있어
좋지 못한듯 합니다. 모델에 사용되는 텍스쳐는 bmp와 같은 파일 포맷으로 통일시켜 모두 바꿔야 할 듯합니다.
이에 대하여 말씀을 드렸고, 김박사님, 박형원씨 모두 공감하셨으며 나중에 바꾼다는 결론이 섰습니다.

그리고 추가적으로 현재 쉐이더 코드는 osgTutorial에서 사용되던 코드 그대로 가져다 썼는데
김박사님께서 이상하다고 말씀하셔 수정하여야 할 듯 합니다.

* 지적받은 문제점 *

- 스펙큘러가 너무 강함
- 광원과 노말과의 연산에서 비 정상적임
- 범프 효과가 뭔가 어색하여 수정 필요

마지막으로, 지난번 말씀드린 것과 같이 지붕과 같이 한 종류의 텍스쳐를 여러번 연산 할 경우
텍스쳐 한곳에만 범프가 적용되는 기이한 결과를 출력합니다.

AhnJongGil

unread,
Mar 18, 2007, 11:03:37 PM3/18/07
to NAVER based on OSG
교수님..

위에서 말씀드린 문제점 중에 하나의 텍스쳐가 여러번 사용되는 경우 전체중 특정 한 부분에서만
범프가 적용되는 문제점이 있다고 말씀드렸는데요...방금 해결했습니다
Open Scene Graph의 API중에 setWrap() 함수를 호출해서 wrapping 방식을 REPEAT모드로 셋팅하여
Normal Map을 다시한번 찍어주었더니 간단히 해결되었습니다.

Changhoon Park

unread,
Mar 19, 2007, 1:23:49 AM3/19/07
to naver-bas...@googlegroups.com
다행이군... 단순한 문제였군.
차근차근 잘 확인해보고...
 
그리고, 김진욱 박사님이 말씀하신 어셈블러 대신 shader를 처리하는 부분도 확인 바람.
 
아마도 다음 일은 네이버 모듈로 추가하는 일일 것음 재용, 명희 실비의 도움을 받으면 될 것임

AhnJongGil

unread,
Mar 22, 2007, 2:27:17 AM3/22/07
to NAVER based on OSG
교수님...

어제 갑작스럽게 범프매핑 작업한 것을 테스트해보게 되었습니다 (고박사님, 김박사님, 박형원씨)
일단 박형원씨가 작업한 것을 OSG에서 보기 위함이 주된 목적이었습니다,
경주 시내를 나눈 구역 10개 정도에 범프를 적용시켜 보았습니다

테스트 결과 범프는 적용되었고, 수정사항으로 제가 해야될 것은

1. 현재 Fragment Shader에서 연산처리가 이상함 (Lighting)
2. Source 구조 변경

이 두가지가 문제점으로 지적받았습니다. GLSL Code는 지난번 튜토리얼의 그 소스를 가져다 썼는데
수정이 필요한듯 합니다. 그리고 두번째 지적사항인 소스 구조 변경의 필요성은 저도 공감합니다.
단순히 범프 테스트를 위해 분리만 시켰지 효율적이지 못하다는것은 생각하고 있었던 점입니다.

그리고 박형원씨와 어제 밤에 간단한 테스트를 하나 더 해보았는데
지난 번 말씀드린것중 한가지로써, flt파일이 계층구조로 하위에 flt를 또 갖게되는 링크 구조로 작업 결과물을
만들고 이것을 현재 제가 구현한 범프 테스트 프로그램 (OSG기반)에서 문제없이 돌아가는지 테스트하는것이었는데
결론은 문제없이 잘 돌아갔습니다.
여기까지가 테스트와 작업 진척사항에 대한 보고입니다.

그리고 지적받은 위의 두가지 사항은 최대한 빨리 끝내서 최적화까지는 힘들더라도 3월이내에 범프 기본구현및 적용
가능한 상태가 되도록 할 계획입니다.

그럼 내일 미팅때 뵙겠습니다. 수고하세요^^

AhnJongGil

unread,
Mar 25, 2007, 8:15:55 PM3/25/07
to NAVER based on OSG
교수님.

이번주 해야 할 작업에 대해 적어보겠습니다

1. Bump Mapping GLSL Code 수정
2. 기와 한개를 Max에서 만들어 이를 여러개 배치하고 이를 Plug-in filter에서 텍스쳐로 뽑아내는 TEST
3. Bump Mapping Class 구조 수정
4. 추가적인 개인공부 ( GLSL, Deferred Shading, OpenGL )

잘못된 부분 또는 추가적인 사항이 있으시다면 답변 부탁드리겠습니다

AhnJongGil

unread,
Mar 27, 2007, 10:49:05 PM3/27/07
to NAVER based on OSG
교수님

이전에 말씀드린것과 같이 위의 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를 하게 될것 같다는 생각이
들었습니다. 일단 이와 관련하여 제가 한번 찾아보겠습니다.

현재 진행중인것은 여기까지 입니다. 추가적인 답변 부탁 드리겠습니다
그럼 수고하세요

Changhoon Park

unread,
Mar 27, 2007, 11:03:58 PM3/27/07
to naver-bas...@googlegroups.com
혹시 최적화가...

동일한 텍스쳐 파일을 계속 로딩하는 것과 관련되 것인가?

동일한 텍스쳐가 계속 로딩되지 않도록 하는 것은 필요하다고 생각하는데...

그리고 릴리즈로 컴파일 하여 디버그로 했을 때와 속도차이를 확인해 주기 바람.

AhnJongGil

unread,
Mar 28, 2007, 4:50:54 AM3/28/07
to NAVER based on OSG
1. 동일 텍스쳐의 중복 로딩에 관해서는 일단 범프 구현이 마무리 되어갈때 쯤 해도 될런지 여쭤보고 싶습니다.

2. 릴리즈 모드로 컴파일하여 테스트 해보았는데 그 결과가 디버그 모드일 때와 동일하였습니다.
최저 16프레임이었습니다. 테스트 대상은 지난번 사용되었던 10개 구역입니다.

그럼 답변 부탁드리겠습니다.. 수고하세요

Changhoon Park

unread,
Mar 28, 2007, 8:47:19 AM3/28/07
to naver-bas...@googlegroups.com
그럼 잊지 말고 1번은 나중에 처리하도록.

2번은 이상하군???

지난번 텍스쳐 패스 관련 상대 패스로 하는 것과 관련하여 페이지에 올렸는지 확인 바람.
올렸다면 링크 부탁함.


On 3/28/07, AhnJongGil < hid...@gmail.com> wrote:

AhnJongGil

unread,
Apr 3, 2007, 10:02:05 PM4/3/07
to NAVER based on OSG
교수님..

1. 교수님께서 말씀하신데로 1번은 범프 구현 마무리 단계에서 하도록 하겠습니다.

2. 그리고 지난번에도 제가 질문드렸었는데 페이지중에 "모델러를 위한 지침"이라는
페이지는 없는듯 합니다..

그리고 지금 아직 Lighting 문제를 해결하기 위해 계속 진행중입니다..
김박사님 말씀으로는 OpenGL에서는 MatrixStack 이라는 개념이 있는데
여기서 라이팅과 카메라 사이 Matrix 연산 문제 일수도 있다고 하시면서, 추가적으로
말씀하신것이 Open Scene Graph가 알아서 해줄것같다고 하셨는데
혹시 이와 관련되어 알고계시다면 답변 부탁드립니다.
범프 하나가지고 작업을 너무 오래끌고 있는듯 해서 면목없습니다..
최대한 빨리 하도록 하겠습니다

그럼 수고하세요


Changhoon Park

unread,
Apr 4, 2007, 4:24:36 AM4/4/07
to naver-bas...@googlegroups.com

AhnJongGil

unread,
Apr 9, 2007, 2:28:29 AM4/9/07
to NAVER based on OSG
교수님

지난번 회의시간에 말씀드린것과 같이 Bump Class를 다시 수정하고 있습니다.
그동안 사용하였던 Shader Code가 근본적으로 문제가 있어 고치고 있습니다.
GLSL의 Built-in variables를 사용해야한다고 김박사님께서 말씀하셔서
이를 최대한 이용하여 GLSL을 읽어들이도록 바꿀 계획인데
위와 같이 고치려면 OpenGL과 GLSL, OSG를 충분히 이해해야할 듯 합니다

추가적으로, OSG에서 Light, material class를 이용한 튜토리얼이나 샘플에 대해 알고계시다면
링크 부탁드립니다.

그럼 수고하세요

AhnJongGil

unread,
Apr 9, 2007, 2:27:27 AM4/9/07
to NAVER based on OSG

AhnJongGil

unread,
Apr 10, 2007, 9:07:56 PM4/10/07
to NAVER based on OSG
교수님

작업 진행사항을 간략하게 보고 드리겠습니다. 이번 주는 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가지 정도가 될듯 합니다. 추가적인 조언 또는 지시사항 있으시다면 답변 부탁드립니다.
그리고 지난번에 말씀드렸듯 "모델러를 위한 지침" 이라는 페이지는 보이지 않습니다. 이에 대한 설명 부탁드립니다,.
그럼 수고하세요

AhnJongGil

unread,
Apr 24, 2007, 10:39:57 PM4/24/07
to NAVER based on OSG
작업 진행사항을 간략하게 보고 드리겠습니다. 이번 주는 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 진행중

여기까지가 제가 하고있는 작업 진행사항 입니다.
작업이 더딘것 같아서 죄송스럽습니다.
그럼 수고하세요^^

AhnJongGil

unread,
May 9, 2007, 8:29:44 AM5/9/07
to NAVER based on OSG
교수님 질문이 있습니다..

viewer.realize(); <----요기서 나는 에러는 도대체 어떤 이유인지 잘 모르겠습니다..

혹시 아시면 답변 부탁드립니다

그럼 수고하세요

Changhoon Park

unread,
May 9, 2007, 8:27:57 PM5/9/07
to naver-bas...@googlegroups.com
너가 알려준 정보만 가지고는 내가 대답해 주기에 너무 부족하다.
에러 메시지가 무엇인지 등등 추가 정보가 필요
--
Changhoon PARK

AhnJongGil

unread,
May 10, 2007, 9:41:39 PM5/10/07
to NAVER based on OSG
에러의 내용은 다음과 같습니다..

" 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 라고
생각하며

왜 에러가 발생하는지 잘 모르겠습니다..답변 부탁드리겠습니다.

Changhoon Park

unread,
May 10, 2007, 11:09:53 PM5/10/07
to naver-bas...@googlegroups.com
그정도 파악 헀다면 디버그로 tv.get()이 옳바르게  동작하는지 확인해보면 될 것 같은데...

일단 내가  tag Visitor를 사용해본 적이 있어서 경험으로 대답해줄 건 없고

되는 코드와 안돼는 코드를 디버그하며 비교해보는 방법만 알려줄 수 있겠구나.

AhnJongGil

unread,
May 14, 2007, 12:09:18 AM5/14/07
to NAVER based on OSG
교수님 안녕하세요.

Bump Mapping 문제 해결했습니다..

주말에 계속 작업했는데 TangentSpace로 변환해주는 TangentSpaceVisitor를 사용할때

accept() 함수를 사용하는 Node에 문제가 있었습니다.

모델 데이터의 계층구조 접근 방법의 문제로 없는 노드의 접근이 원인이었습니다

그래서 어제(일요일) 이 문제를 해결했고 파일 형식에 구애받지 않도록 (osg파일과 flt파일) 오늘 수정을 마칠 계획입니다

박사님들께 보여드리기 전까지는 다됐다고 말씀드릴순 없지만. 일단 가장 큰 문제를 해결하고 나니 눈물납니다.ㅋㅋ

그리고 내일부터 3일간 동원훈련갑니다..ㅜ.ㅜ (네이버 미팅 참석 못할듯 싶습니다)

스승의 날에 찾아뵙거나 연락드리긴 힘들듯 한데 스승의 날을 맞아 박창훈 교수님께 미리 감사드립니다.^^

그럼 수고하세요...훈련갔다오고 연락드리겠습니다

AhnJongGil

unread,
May 19, 2007, 9:54:22 AM5/19/07
to NAVER based on OSG
교수님..
지난번 교수님께서 보내주신 osg Viewer로 각각의 모델들 계층을 분석해 봤는데
두가지 특이사항을 발견하여 여기에 적어보겠습니다.
여기서 각각의 모델이라 함은 다음 세가지 입니다.
-----------------------------------------------------------------------------------
1. osg 기본 샘플 모델
2. Lego 모델
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로 보다가 알게 된 사실입니다..
이에 대한 답변 부탁드리겠습니다.

Changhoon Park

unread,
May 19, 2007, 10:57:05 AM5/19/07
to naver-bas...@googlegroups.com
모델러가 메터리얼을 포함하지 않았다면  프로그램 상에서 범프를 만들기위해 추가할 수 있음


그나저나,
지붕에는 있고 벽에는 없다는 말이... 텍스쳐만 가지고 모델을 정의했다면 이상할텐데...
그리고, 라이트에 의해 쉐이딩이 되려면 메터리얼 값이 필요할텐데..
그래서 이상하게 보이는 문제가 벽에 있었나..
확인해보고 그렇다면... 전부 메터리얼  포함해야 할 것임

지붕에는 있고 벽에 없는 이유를 확인해 볼것,, 아마도 별 생각없이 그런 것 같지만..

AhnJongGil

unread,
May 19, 2007, 12:08:11 PM5/19/07
to NAVER based on OSG
첫번째 질문과 같은 경우는 교수님 말씀처럼 프로그램에서 추가하여 적용시키고 있습니다
다만, 코드가 복잡해 졌습니다.

그리고 Material 관련된 것에 대해 박형원씨에게 물어본 결과..
어떻게 하다보니 그렇게 됐다고 하시며 앞으로 신경쓰겠다는 대답을 들었습니다.


그리고 궁금한게 한가지 더 있습니다

Bump Mapping class 만든것을 Visual Studio에서 F5를 이용하여 실행하면
돌아가는데 Ctrl + F5를 누르면 프로그램이 에러가 납니다
특별히 에러 메세지가 뜨는게 아니라 그냥 죽습니다.

안그래도 F5를 눌러 실행하는 경우 가끔 프로그램이 실행도중 사라지는 에러가 있었는데
이와 관련된듯 싶습니다.


이와 같은 에러는 처음보는 경우라 잘 모르겠습니다
혹시 알고 계시다면 답변 부탁드립니다

주변 사람들 이야기나 개인적인 짐작으로는

1. 메모리 관련 문제
2. Working directory 관련 문제
3. 라이브러리 링크

이 세가지 정도로 압축될 듯 한데 자세히는 모르겠습니다

Changhoon Park

unread,
May 19, 2007, 1:37:07 PM5/19/07
to naver-bas...@googlegroups.com
대화가 되는 걸 보니 종길이가 실력이 많이 좋아진것 같은 느낌이 든다.

그리고 질문은 디버그 해보면 알텐데... printf 를 이용하든..

아마 메모리 문제일 거다.

혹시, 커널에서 스테레오인지 카메라인지 함수로 설정하는 부분이 있을텐데 주석으로 막고 해봐라.

AhnJongGil

unread,
May 20, 2007, 9:43:17 AM5/20/07
to NAVER based on OSG
교수님
교수님께서 말씀하신 printf문을 이용한 디버깅도 해보았는데 viewer.realize(); 부분에서 멈추고 말아버립니다

그리고 "혹시, 커널에서 스테레오인지 카메라인지 함수로 설정하는 부분이 있을텐데 주석으로 막고 해봐라.:" <--이건
어떤 말씀이신지 자세히 모르겠습니다..

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 파일과 충돌이 나고 있는데
이것이 어떤 이유인지 자세히 모르겠습니다

혹시 알고계시다면 답변 부탁드립니다. 그럼 수고하세요

AhnJongGil

unread,
May 21, 2007, 9:48:20 AM5/21/07
to NAVER based on OSG
교수님

원인을 발견했습니다. 교수님 말씀데로 메모리 관련 문제였습니다
Tangent Space로 generate 시키는 부분에서 포인터끼리 엉켜서 프로그램이 다운되는 현상이 발생하게 된 것이었습니
다...
힌트를 주셔서 정말 감사드립니다..이 버그 때문에 마음고생 심했습니다..ㅠ.ㅠ

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
최근 하고 있는 작업에 대해 말씀드리겠습니다.

1. 우선 오늘 박형원씨 작업물을 받아 OSG에서 돌려보고 박사님들께 보여드렸습니다

- 경주 전체 (이번주 금요일 네이버 미팅때 다시한번 돌려볼 예정입니다)

2. 주말부터 이번주 월요일까지 버그 수정작업을 하였고 버그 수정이 끝나는데로 Naver 모듈화 작업에 들어가게 될듯 싶습니

- 김박사님께서 버그 수정되는데로 Naver 모듈화 해야 한다고 말씀하셨습니다

3. Lego Model의 퀄리티 향상을위해 BumpMapping을 응용한 (한차원 향상된 이펙트) Parallax
Mapping Test를 동시 진행해야 될 듯 싶습니다

- Lego를 보면 오브젝트를 제외한 바닥은 울퉁불퉁한 효과가 없는데 Bump로는 처리에 한계가 있어 Bump가 아닌
Parallax Mapping을 적용 시켜보라고
김박사님께서 지시하셨습니다 ( 굉장히 흥미롭습니다^^ )

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

이상입니다..

수고하세요

AhnJongGil

unread,
May 29, 2007, 2:14:48 AM5/29/07
to NAVER based on OSG
교수님

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를 볼 수 있는 방법이 있는지 알고 싶습니다.
없다면 직접 만들어서 표시해 주어야겠지요? 답변 부탁 드리겠습니다..
그럼 수고하세요.^^

Changhoon Park

unread,
May 29, 2007, 5:11:38 AM5/29/07
to naver-bas...@googlegroups.com
비주얼 프레임으로 locking이 되어 있어서 full frame은 볼 수 없는 상황일 것이다.
혹시 프레임 레이트를 600으로 해보아도 60이상은 나오지 않을 것으로 생각하지만 시도해 볼 함.


On 5/29/07, AhnJongGil < hid...@gmail.com> wrote:
교수님

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 )

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

AhnJongGil

unread,
Jun 10, 2007, 10:18:40 AM6/10/07
to NAVER based on OSG
교수님 안녕하세요..
오랜만에 작업 진행사항 적어보겠습니다^^:

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를 건드려야 될 듯 해서 그냥 멈췄습니다
혹시라도 나중에 필요하면 기능을 직접 만들면 되고, 당장 필요한것도 아니고 영향을
주는것도 아니라서 현재 해야할 일에 치중하고자 멈췄습니다.

그럼 수고하세요^^

Changhoon Park

unread,
Jun 10, 2007, 12:13:05 PM6/10/07
to naver-bas...@googlegroups.com
종길이가 그래 수고 많았구나..

그리고 가능하면 Bump mapping과 관련하여 nvmLoader에 추가하는 방법 보다는

별도의 모듈을 만들고 그 모듈에서 nvmLoader에서 읽어드린 모델의 id를 통하여 효과를 만드는 방법이  추후의 확장성과 독립성등을 고려해서 더 좋을것 같다.

일단 이런 방법이 가능한지 검토 후,  xml 예제를 만들어서 알려주기 바란다.
--
Changhoon PARK

AhnJongGil

unread,
Jun 19, 2007, 10:29:03 PM6/19/07
to NAVER based on OSG
교수님 안녕하세요

질문이 있습니다..
다름이 아니라 사용되는 모델 파일의 내부 계층구조를 뜯어보게 되면
어떤 모델의 경우는 최상위 노드가 Group 노드 이고 또 어떤모델은 최상위노드가 MatrixTransform 노드이고 각각 다
른데
여기에는 특별한 이유가 있는건지 알고 싶습니다..

그래픽 작업을 하는 사람이 어떤 특별한 작업을 해줘서 이렇게 되는건지
아니면 export할때 그냥 임의적인 계층 형태로 나오게 되는건지 궁금합니다...
테스트가 필요한 LEGO 모델이 있어서 그래픽 데이터를 받았는데 이 모델(침대)의 경우는 계층구조 최상위 노드가
matrixTransform 노드입니다..
지난번에 또다른 테스트를 위해 받았던 모델(의자)의 경우는 Group노드 였습니다..
같은 사람이 만들었는데 왜 이렇게 다 다른지 모르겠습니다. 무슨 다른 이유가 있어서 인가 싶어서 궁금합니다..
박형원씨의 경우는 그래픽 작업을 하고 나서 제가 테스트 해보기위해 받아보면
모든 모델 파일의 계층구조가 동일합니다.
그래서 오히려 박형원씨가 작업한 모델 데이터는 테스트해보기 편할때도 있습니다.(Group-Group-Geode-
Geometry)
어쨌든, 제가 궁금한것이 이렇게 상위노드를 다르게 하는 이유가 있는지
그리고 다르게 하면, 특히 matrixTransform이 최상위에 왔을때는 attribute를 찾지 못하는 문제가 발생합니다.
명희형에게 물어보니 명희형도 이런 문제가 있었다고 하는데
명희형의 경우 모델을 읽어들일때 matrixTransform으로 형변환 시킨다음에 읽어들였다고 했습니다.
하지만 이와같은 했을경우, 최상위노드가 matrixTransform인것도 있고 Group노드인 경우도 있고 다른데 이때마다 이
를 확인해서 손수
형변환을 시켜줘야 하게 되므로 효율적이지 못한듯 합니다
LEGO 모델의 경우 왜 최상위 노드가 matrixTransform 인지 명희형도 모르는것 같아 그래픽 작업을 하신 분께 직접
물어봤는데 그분역시
잘 모르는듯 했습니다..두서없이 너무 장황하게 말씀드린것 같은데^^; 제가 여쭤보려는것이 어떤 의미인지 이해하셨으리라 생각합니

답변 부탁드립니다. 수고하세요

Reply all
Reply to author
Forward
0 new messages