본문 바로가기
Tips

[실험] 투명색 지정 기능을 만들어보자 - RPG Maker MV

by biud436 2018. 11. 7.


이건 어렵지 않다. 


투명색 지정을 할 수 있는 셰이더를 찾아 RPG Maker MV에 적용하면 된다.


우선 결과는 아래와 같다.


이미지의 배경색인 검정색이 전부 사라져 투명해졌다.



필자가 찾은 셰이더의 경우, 흰색은 투명색 지정이 되지 않았다.


하지만 이 정도면 생각보다 나쁘지 않은 결과이다. 


셰이더의 경우, RPG Maker MV에 추가하려면 생각보다 간단하지 않다.


그래서 그래픽 라이브러리 소스에 아예 해당 셰이더를 포함하고 재빌드하는 방향을 선택했다.


빌드는 1분 미만 정도의 시간에 끝나기 때문에 재빌드 하는 편이 더 시간 절약이 되기 때문이다.



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
31
32
33
 
(function() {
 
    if(PIXI.VERSION !== "4.5.4-custom") {
        console.warn("이 플러그인을 구동하려면 커스텀으로 빌드한 PIXI v4.5.4 버전이 필요.");
        return;
    }
 
    var alias_Sprite_Picture_initialize = Sprite_Picture.prototype.initialize;
    Sprite_Picture.prototype.initialize = function(pictureId) {
        alias_Sprite_Picture_initialize.call(this, pictureId);
        this.applyBlackAlphaColor();
    };    
 
    Sprite_Picture.prototype.applyBlackAlphaColor = function() {
        // pixi-picture로 렌더링될 경우에는 필터가 잘 먹히지 않으므로 false로 설정.
        this._isPicture = false;
        // 커스텀 빌드에 포함한 투명색 지정용 알파 필터.
        this._transparentFilter = new PIXI.filters.TransparentFilter();
        // 검은색을 제거한다.
        // 흰색은 제거가 안된다.
        this._transparentFilter.uniforms.alphaColor = [0.00.00.01.0];
        // 임계값
        this._transparentFilter.uniforms.thresh = 0.45;
        // 값이 높으면 경계면이 깔끔하게 절단된다.
        // 낮으면 포토샵의 디졸브(dissolve)처럼 경계면이 흩뿌려진다.
        this._transparentFilter.uniforms.slope = 0.8;
        // 블렌드 모드가 노말일 경우에만 동작함.
        this.filters = [this._transparentFilter];
        // 평가 : 상용 게임에 쓰기에는 부적절.
    };
 
})();
cs


재빌드한 최종 결과물은 아래에 첨부하였다.


pixi-custom.zip




참고 


https://stackoverflow.com/questions/47072304/opengles-how-to-change-black-pixels-to-transparent-pixels