Loading...

Hash 함수 모음

// RS Hash Function unsigned int RSHash(const std::string& str) { unsigned int b = 378551; unsigned int a = 63689; unsigned int hash = 0; for(std::size_t i = 0; i < str.length(); i++) { hash = hash * a + str[i]; a = a * b; } return (hash & 0x7FFFFFFF); } // JS Hash Function unsigned int JSHash(const std::string& str) { unsigned int hash = 1315423911; for(std::size_t i = 0; i < str.length(); i++)..

PartialPrecision

// D3DXSHADER_PARTIALPRECISION // Force all computations in resulting shader to occur at partial precision. // This may result in faster evaluation of shaders on some hardware. 이 옵션을 사용하면 shader의 float의 정밀도를 반으로 줄인다. 그럼으로 인해서 shader들의 연산 속도를 높인다. // 그 외 기타 shader 옵션 //---------------------------------------------------------------------------- // D3DXSHADER flags: // ----------------- // D3DXSHA..

2011. 4. 15. 10:30

max export 4. 폴리곤 정보좀 볼까?

그래프에서 왼쪽 "Base Objects"를 누르면 Object 타입이 나온다. 이 Object가 무었인지에 대해 이야기 하기 전에 node에 대해 살짝 알아보고 넘어가는게 좋을 듯 싶다. node란 무었인가? 3ds 맥스 뷰포트에서 오브젝트에 대한 가시적 표현을 node라 부른다. 뷰포트에서 선택되고 이동될 수 있는 것과 노드 사이에는 1대1관계가 존재한다. node는 max의 장면상에서 오브젝트와 1대1 대응하는 아이템이다. 모든 절차적 오브젝트, 라이트, 카메라, 헬퍼 오브젝트등 뷰포트에나타나는 것은 연결된 node를 가진다. Object Object 클래스는 화면에서 보이는 모든 요소들의 기반 클래스이며 INode:GetObjectRef()함수를 통해 얻을 수 있다. max 표준 프리미티브와 ma..

2011. 4. 13. 22:43

max export 3. 노드관계도를 출력해 보자!!

이제 코딩을 해봐야 할듯 하다.. 난 정말 셋팅 하는게 정말 싫다.ㅜㅜ. 드디어 코딩 시간~!!! 이 강좌와 함께 추가한 max 파일을 열어보자 만약 max 파일이 안 열린다면 이 max 파일을 만든 max의 버전 보다 낮은 거니 max 버전업을 하는게.... max 파일을 연 후에 위쪽 메뉴를 보면 Graph Editors 라는 메뉴가 있다. 이 메뉴의 하단에 "New Schematic View"라는 메뉴를 클릭해 보자. 위쪽으로 아래 오브젝트들의 관계도가 뜬다. 이제 이 관계를 출력할 프로그램을 만들어 보자. 간단하게 위의 관계도를 출력하는 프로그램을 만들 계획이다. 출력해야 하는 정보는 노드의 이름과 하위 노드의 갯수 정도면 될것 같다. 하위노드의 관계는 노드가 다시 노드를 가지는 계층구조이므로 재..

2011. 4. 13. 20:30

max export 2. 과감하게 F5를 눌러서 실행되는 모습을 감상해 주자!!

이제 실행을 해보자. 실행을 하면 두개의 에디터 박스가 있는 다이얼로그 하나가 뜨는걸 볼 수 있다. 위쪽 에디터 박스에 경로를 나의 max 실행파일이 있는곳으로 설정해 주자. 위와 같이 설정을 해주고 확인을 누르면 감동적인 max 화면이 뜨는걸 볼 수 있다. 더럽게 느리다. MgExport.cpp 에 있는 함수들. (이름은 프로젝트 명에 따라 다를 수 있다.) 1. ExtCount() 이 함수는 출력 포맷의 갯수를 알려 준다. 2. Ext(int n) 이 함수는 출력할 데이터의 포맷을 알려준다. 3. LongDesc() 프로젝트 설명 (긴 설명) 4. ShortDesc() 프로젝트 설명 (짧은 설명) 5. AuthorName() 권리가 있는 사람의 이름 6. CopyrightMessage() 소유권 메세..

2011. 4. 13. 20:02

max export 1. 시작이 반이다!! 설정방법

max export는 여태까지 두번정도 만들어 봤었는데 이번이 세번째군.. 이전에 만들었던건 max8버전 이었고 학생때 만들어서 걍 ase를 보고 베껴서 만들었었다. 두번째 만든건 아는사람들끼리 프로젝트한다고 해서 만들었었는데 그당시는 애니메이션 부분 만들다가 프로젝트가 무산되어 버려서.ㅜㅜ...징징징... 이번이 세번째 만드는거라는..후훗. 중요한건 이게 아니고 이번에는 좀 더 많은 걸 해봐야 겠다. sdk를 이용한 플러그인 방식의 export를 만들예정이다. 시간이 허락한다면 스크립트방식도 만들고 싶은데....하아... 준비물. 1. max 프로그램 (나는 2011버전) - max와 max sdk까지 다 깔아야 한다. 2. visual studio (현재 2008버전 사용중, 2010 갈아타야 하는데..

boost::has_trivial_assign

boost::has_trivial_assign. : trival assignment operator를 가지고 있는지 없는지를 알아내는 메타함수. assignment operator은 대입연사자의 뜻. 클래스를 구현시 대입연산자(assignment operator)을 정의해주지 않으면 암묵적으로 대입연산자를 자동으로 생성. ex ) A& A::operator=(const A&); 이처럼 명시적으로 대입연산자를 정의하지 않으면 위와 같이 자동으로 만들어 주는 것을 trivial assignment operator(간단한 대입 연산자)이라고 한다. 이는 boost::true_type과 boost::false_type을 리턴해 준다. 리턴값이 boost::true_type이라는 말은 해당 타입에 대한 자동 대입..

메모리맵 파일

http://blog.naver.com/kimgudtjr?Redirect=Log&logNo=140117254752 [ 메모리 맵 파일 ] ================================================================================ [ 정의 ] 윈도우즈는 물리적인 메모리(RAM)가 부족할 경우 하드 디스크의 페이징 파일(Paging File)을 메모리 대신 사용한다. 마치 페이징 파일이 물리적인 메모리의 일부인 것처럼 프로세스의 주소 공간에 맵하여 사용하며 필요할 경우 RAM으로 읽어오므로 응용 프로그램의 입장에서 볼 때 페이징 파일은 속도가 좀 느릴 뿐 RAM과 전혀 다를 것이 없다. 운영체제가 하드 디스크의 페이징 파일을 RAM 대용으로 사용하는 것이..