[참고자료] 모니터 해상도 도표

Posted 2008/08/26 21:35, Filed under: 3D Programming
사용자 삽입 이미지

Leave a comment

VC++8.0에서의 vector::erase(), iterator
VC++8.0 이하의 버전에서는 vector 객체를 iterator로 순환하면서 vector 내의 아이템을 삭제할 때 아래와 같은 코드에 문제가 없었습니다.

std::vector<int> vt;
std::vector<int>::iterator it;

for(it=vt.begin();it<vt.end();it++){
   if(조건){
       vt.erase(it);
  }
}

하지만 VC++8.0에서는 런타임시 오류가 발생합니다.
그래서 아래와 같이 코드를 바꿨습니다.

for(it=vt.begin();it<vt.end();){
   if(조건){
       it = vt.erase(it);
  }
  else{
       it++;
  }
}

vector::erase()는 반환값으로 삭제한 iterator의 다음 iterator를 반환합니다.

출처 : http://ani2life.egloos.com/3230570

Leave a comment

 설명 - 플러그인을 개발할때 컴파일 후 매번 max를 키고 끄는 작업이 필요합니다. 이것을 이용하면 그런 불편을 제거 할 수 있습니다.

1. 랩퍼 파일을 다운 받습니다.

2. 압축을 해제 합니다.

3. .Net 2005 로 프로젝트를 변환합니다.

4. 스크린샷1 - 상자안에 라이브러리를 max sdk 가 설치된 폴더의 라이브러리로 교체합니다.

( 그냥 파일 추가로 하시면 됩니다. )

사용자 삽입 이미지

5. 스크린샷2 - 프로젝트 속성에서 C/C++ 일반 -> 추가포함 디렉터리역시 sdk가 깔린 위치로 변경합니다.

사용자 삽입 이미지

6. wrapperexp.cpp 파일에서 char *wrappedDll = "~"; 라고 되있는 곳을 자신의 랩퍼될 파일의 플러그인이 있는 곳과 이름으로 변경합니다.
주의점은 당연히 max의 plugin폴더가 아닌 곳으로 노출시켜야 하겠지요.

7. 스크린샷2 - C/C++ 아래쪽에 링커 부분이 있는데 여기에 랩퍼플러그인의 출력파일 폴더를 지정 할 수 있습니다. sdk폴더가 아닌 설치된 max/plugins 폴더로 변경해 주시면 됩니다.

8. 설정이 끝난후 자신의 플러그인의 출력폴더를 변경하고, max를 실행하면 콘솔화면이 잠시 출력된 뒤에 익스포트를 해보면 다음 화면과 같이 Wrapper(자신의 플러그인)이 나옵니다.

사용자 삽입 이미지



PluginWrappers.Zip



Leave a comment


파서를 직접 제작하신 분이라면, 문득 스키닝매쉬가 가지고 있는 뼈대 행렬을 구지 포함시켜야 하는가?

라는 생각을 한것은 아마도 저뿐만이 아닐겁니다. 에니메이션 행렬과 뼈대 행렬의 곱셈을 제거할 수 없

는가?... 결론을 내리자면, 제외 불가능입니다. 단순히 생각해서 뼈대행렬의 역행렬을 정점에 가중치로

곱해주는 방법을 떠올릴 수 있습니다. 버텍스의 영향을 주는 뼈가 한가지라면 이것은 물론 가능합니다.

( "스티칭" 에 경우입니다 ) 머리, 다리, 팔 등을 모두 토막내서 가지고 있다가 인형을 맞추면 모습을 복

원할 수 있습니다.. 그러나 한정점에 4개의 뼈가 영향을 줄때는( "스키닝" ) 이것을 억지로 한가지로 모

으는 일에 비유를 할 수 있습니다. 캔 로봇을 납작하게 찌그려트려서 부분부분 부위를 연결해도 그전의

모양은 나오지 않겠죠. 당연한 이치지만, 의심많은 제가 오랜시간 직접실험 해본결과 알아낸 결과입니다

ㅠ_ㅠ;

스키닝 매쉬를 읽어들일때 본래의 뼈대행렬정보(매트릭스, 혹은 벡터와 쿼터니온)를 포함시켜야 하고 에

니메이션 행렬곱셈 정점당(복수행렬곱)이 불가피 합니다. 이에 오프셋정점? 을 사용하는 방법을 생각해볼

수 있습니다. v1 * 'world, v2 * 'world, v3 * 'world, v4 * 'world 를 모두 미리 계산 해놓고 랜더링시에는

정점당 행렬곱셈 4번을 줄일수 있다는 얘깁니다. 이것은 매우 큰 이득임이 틀림 없습니다. 행렬이 16개의

float을 가지고 있지만, 오프셋벡터는 12개의 float이고 언뜻 보면 용량에서도 이득인듯 보이지만, 행렬은

뼈대갯수 예를들어 50개정도 만 있으면 되지만 오프셋정점은 정점마다 4개의 벡터가 필요함으로 저장공간이

너무 많이 필요하게 됩니다.


최근의 애플리케이션의 관점에서 보면 몇번의 실행연산을 추가하여 용량상의 이득을 보는 것이 최적화 하려다

실행파일크기 증가로 속도저하를 유발하는 것보다는 낳을 것이지만, 퍼포먼스를 중요시하는 게임같은 분야에서

는 충분히 토론과 연구분야가 될것입니다.


Leave a comment

November 2007 DirectX SDK News

Posted 2008/01/10 14:45, Filed under: Programming

사용자 삽입 이미지

사용자 삽입 이미지


DirectX 9.0 의 버전도 천차만별이라 프로젝트를 함께 진행하는 형과 버전이 달라 난감한적이 있었는데, 그새 새로운 버전이 나왔네요. 이번에는 비쥬얼 스튜디오 2003과 95,98,Me등을 더이상 지원하지 않는다고 합니다. 2008이 출시된 마당에 당연한 일이지만... 점점더 소프트웨어의 버전의 주기가 짧아지는 듯 하네요!

http://www.microsoft.com/downloads/details.aspx?FamilyID=4b78a58a-e672-4b83-a28e-72b5e93bd60a&DisplayLang=en

출처 : http://www.ajjiya.com

Leave a comment

enum

Posted 2007/08/01 13:30, Filed under: Code Factory
// C4482.cpp
// compile with: /c /W1

struct S {
  enum E { a };
};

int i = S::E::a;   // C4482
int j = S::a;   // OK

enum - 열거체의 경우 잘못된 사용법에 따라 지적을 받았는데,
Gpg에 질의하여 왜 잘못되었는지 알게 되었다.
열거체로 정의했을 경우 SKILL::ICEBALL 같은 것은 오류 라는것!
당연한 이야기만 위와같은 예는 네임스페이스가 아니기 때문이다.
그것을 보안하기 위해 namespace나 위와같이 struct로 감싸는 것이 좋다.

namespace VTX_BOX
{
  enum{ FVF = ~ }
}

Leave a comment

00. 휴식기간

Posted 2007/06/25 00:05, Filed under: 겜프로젝트

학기가 끝나고 정말 힘들었던 게임 프로그래밍 수업도 끝났다. 정말 원없이 시체놀이하는

기분이란 -_-; ...

블로그를 게임개발에 관한 문서로 꽉꽉 채울 작정이었지만 지극히 나만의 공간으로

만들고 싶은것도 사실이다. 왜냐면 나에겐 게임개발이 업무가 될테닌까 !; 내 개인공간에서도

그렇다면 정말 피곤할것이다. 그럼에도 게임관련 일지를 만드는건 뭘까... 내가 날 잘 모르

겠다. 이젠 무섭다.


/*---------------------------------------------------------
Name: "$selected$.H"
Author: Joe Wonil
Description:
Date: $MONTH_02$/$DAY_02$/$YEAR$
Copyright (C) $YEAR$ - All Rights Reserved
---------------------------------------------------------*/
#ifndef __$selected$_H__
#define __$selected$_H__
// INCLUDES
// DEFINES
//---------------------------------------------------------
#endif // __$selected$_H__
//---------------------------------------------------------



컴퓨터를 포멧하고, 필요한 소프트웨어를 깔았다. 원래는 베이직 매크로를 썼었는데,

닷넷으로 넘어오면서 매크로 쓰는법을 몰라 어시스트의 주석달기를 이용하게 되었다.

개인적으로 상당히 깔끔한 주석이 아닌가 싶다 -_-;

너무 과한것도 모자른것도 아닌...

그러나 주석을 다소 과하게 치장한다고 해도 게임개발자들에겐 자신의 개성을

나타내는 도구라고 생각한다. 물론 주석에까지 자신의 프라이드를 내세운다면

그건 좀 삐뚤어진 생각이겠지~ 주석은 주석일뿐~

Leave a comment

팁!팁!팁!

Posted 2007/06/17 02:33, Filed under: Code Factory

닷넷에서의 코드 더보기 기능 : Ctrl + Space


Leave a comment

라이트와 관련된 글

Posted 2007/06/03 12:26, Filed under: 3D Programming/Rendering


GPG 에서 글을 검색하던 중 아차 싶은 글이 눈에 띄었다.

일반적으로 "라이트" 라는 단어를 생각하면, 많은 사람들은 다음과 같이 생각합니다.

빛이 받는 부분은 밝아지고, (백색에 가까워진다.)
빛이 받지 않는 부분은 어두워진다 (검정색에 가까워진다.)

CG 홍보물이나 3D Studio MAX 의 라이트에 익숙한 개념인데.

하지만 Direct3D 의 기본 라이트로 위와 같은 너무 당연한 라이트를 구현하는것이 애매하네요.


1. MODULATE
MODULATE 는 곱셈입니다. 한가지 재미있는 사실이 많은 사람들이 곱셈이기 때문에
곱하면 곱할수록 숫자가 커진다고 생각하지만, 곱하면 곱할수록 숫자가 작아집니다.
0~1 사이값의 계산이기 때문에 빛이 최대로 받아야만 기본텍스춰의 색이 유지가 됩니다.

기본텍스춰보다 밝아지는경우는 없으며 오직 음영만 생깁니다.


2. ADD
ADD 는 덧셈입니다. 이 모드를 사용하면 밝아지는것까지는 가능하지만,
어두워지는것이 안됩니다. 사정없이 밝아지기만 하기 때문에
음영이 없습니다.

게다가 어떤존재가 "밝다" 고 느끼는것은 "실제 그 물체가 밝은것이 아니라 어두운부분과의 경계차가 심하다" 인데, 덧셈식의 특성상 모든 부분에 골고루 밝아지기 때문에

빛이 받았다기 보다는 "밀가루가 뿌려졌다" 로 느껴집니다.

3. 스펙큘러

스펙큘러의 경우 ADD 와 다를것이 없습니다. 단지 카메라에 영향을 받는다는 특성(장점도 단점도 아님). 이 있을뿐입니다.


4. ADD_SIGNED, ADD_SIGNED2X
아직까지 제가 사용해본적은 없습니다면,
공식 자체로는 "밝아진것과 어두워진것" 을 모두 표현할수 있습니다.


5. MODULATE2X

"밝아진것과 어두워진것" 을 나타내는 가장 나은방법중 하나입니다. 라이트컬러 0.5 를 기점으로 "밝아지는것 과 어두워지는것" 이 결정되며 또한 콘트라스트가 증가되어 보이는 부수적인 효과가 있습니다.

제가 그나마 가장 추천하고 싶은 방법입니다.
단점은 AMBIENT 값을 잘 조정해야 한다는점 정도.



출처 : http://www.gpgstudy.com/forum/viewtopic.php?t=4065&highlight=%BE%EE%B5%CE%BF%F6%C1%F6%B4%C2
작성자 : 심 형근


Leave a comment

쉐이딩에 대한 튜토리얼 그림

Posted 2007/05/31 11:35, Filed under: 3D Programming/Shader

MAX 툴때문에 질문을 올리려고 까페를 돌아다니다가 발견한 그림,
튜토리얼 그림이 마음에 들어서 (이해도쉬움) 카피해 보았다.
프로그래밍 책에도 이런 그림들이 있으면 얼마나 좋을까 ㅠ_ㅠ

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지


출처 : http://blog.naver.com/pointman79/140013217303

Leave a comment

« Previous : 1 : 2 : 3 : 4 : Next »

Recent Posts

  1. [참고자료] 모니터 해상도 도표
  2. [런타임에러] Expression: map/set it..
  3. *. 플러그인 랩퍼 사용하기 ( 3DS MAX..
  4. *. 스키닝 오프셋 벡터 [Offset Vecto..
  5. November 2007 DirectX SDK News

Recent Comments

  1. 관리자만 볼 수 있는 댓글입니다. 06/24

Recent Trackbacks

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. Cafe24
  2. ForTheProgramming
  3. Tatter Tools
  4. 근석이
  5. 진호네

Site Stats

TOTAL 14469 HIT
TODAY 12 HIT
YESTERDAY 16 HIT
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.