본문 바로가기

프로그래밍/MaxSDK

[MAXSDK] 플러그인 디렉토리 검색 메커니즘


원문 : Max SDK 6.0 도움말. Plug-In Directory Search Mechanism

플러그인 디렉토리 검색 메커니즘

이 섹션은 3ds 맥스가 플러그인 DLL 을 검색하는 시스템에 대해 논의한다. 이것은 경로 검색 및 플러그인에 의해 요구되는 표준 파일명 확장자에 대한 내용을 포함한다.

DLL 경로 검색

3ds 맥스 실행파일과 함께 루트 디렉토리에 있는 파일은 PLUGIN.INI 이다. 이 파일은 플러그인 검색 위치 각각에 대한 한줄짜리 엔트리(entry)로 구성된다. 3ds 맥스가 실행을 시작할 때, 그것은 이 파일에 열거된 각 경로를 검색해 플러그인 DLL 을 검색한다. 플러그인 DLL 이 검색되면, 그것은 로드된다. 이 시스템은 개발자가 자신만의 플러그인을 그들이 원하는 하위 디렉토리 구조에 저장할 수 있도록 허용한다. PLUGIN.INI 파일의 포맷은 다음과 같다 :

Descriptive Text = Search Path


여기에서 샘플 PLUGIN.INI 를 살펴 보자 :

Standard MAX plug-ins=C:\3DSMAX\STDPLUGS
Miscellaneous free plug-ins=C:\3DSMAX\MISCPLUG


3ds 맥스에서 File 메뉴에서 Configure Paths... 를 선택한다. 플러그인을 위한 이 다이얼로그는 PLUGIN.INI 에 정의된 경로를 열거한다. 사용자는 PLUGIN.INI 를 편집하기 위해서 이 페이지에서 대화식 도구를 사용하여, 검색 경로를 추가/삭제할 수 있다. 그러나 수작업을 할 필요는 없다. 왜냐하면 플러그인의 설치 루틴이 하위 디렉토리를 생성하고 그것의 파일들을 그 안에 복사한 다음에 요구되는 모든 정보를 포함하는 PLUGIN.INI 파일에 문자열을 자동으로 작성할 수 있기 때문이다. 대부분 수작업은 더 이상 사용되지 않는 플러그인을 위한 디렉토리를 설치 해제하거나 무료 플러그인들을 위한 디렉토리를 생성할 때 사용될 것이다.

표준 플러그인 파일명 확장자

플러그인이 반드시 사용해야 하는 특정 파일명 확장자가 있다. 3ds 맥스는 이 표준 확장자를 로드를 시도하기 위한 파일을 결정하기 위한 검색 알고리즘의 일부로서 사용한다. 아래는 확장자 및 각각의 확장자와 관련된 플러그인 유형의 리스트이다.

    BMI - 비트맵 관리자 입출력 DLL
    BMF - 비트맵 관리자 필터 플러그인
    BMS - 비트맵 관리자 저장 DLL
    DLB - 쉐이더 플러그인
    DLC - 컨트롤러
    DLE - 씬 익스포트 플러그인
    DLF - 폰트 로더
    DLH - 샘플러 플러그인
    DLI - 씬 임포트 플러그인
    DLK - 필터 커널(안티 에일리어싱 필터)
    DLM - 수정자
    DLO - 절차적 오브젝트
    DLR - 렌더러
    DLS - 오브젝트 스냅 플러그인
    DLT - 재질 및 텍스처
    DLU - 유틸리티 플러그인
    DLV - 렌더링 이펙트
    FLT - 이미지 필터 플러그인
    GUP - 전역 유틸리티 플러그인


단일 DLL 내부에는 여러 가지 서로 다른 플러그인들이 포함되는 것이 가능하다는 것에 주의하라. DLL 이 위에 열거된 것 중 하나의 확장자를 사용하기만 한다면, 3ds 맥스는 플러그인이 제출하는 모든 것을 로드할 것이다. 예를 들어 개발자가 절차적 오브젝트와 컨트롤러를 모두 사용하는 시스템 플러그인을 생성했다고 하자. 그/그녀는 그것들을 같은 DLL 에 배치했다고 하자. 3ds 맥스는 그것들 모두를 로드할 것이다(위의 확장자와 일치하는 파일명 확장자를 제공한다면...).



[출처] - 라이푸님의 http://blog.naver.com/lifeisforu 네이버 블로그

'프로그래밍 > MaxSDK' 카테고리의 다른 글

[MAXSDK] 인터페이스 클래스 개관  (0) 2009.12.03
[MAXSDK] 플러그인 아키텍처 개관  (0) 2009.12.03
[MAXSDK] 기하 파이프라인 시스템  (0) 2009.12.03
[MAXSDK] 인터벌  (0) 2009.11.30
[MAXSDK] 메모리 할당  (0) 2009.11.30