Screen('DrawTexture')
기능을 사용하여 화면에 동시에 표시해야하는 두 개의 이미지가 있습니다. 하나의 이미지는 장면 이미지이고 두 번째 이미지는 배경이 투명한 오브젝트입니다. 장면 이미지 위에 개체를 표시하고 싶습니다. 그러나이 작업을 시도하면 개체의 배경이 검은 색으로 보입니다.Psychtoolbox에서 투명한 배경으로 PNG 파일을 표시하려면 어떻게해야합니까?
개체 이미지에는 문제가 없습니다. [object,map,alpha] = imread(objectimage.png)
으로 호출하면 알파 값은 알맞은 크기의 행렬을 반환합니다. 나는 또한이 이미지들을 파이썬을 사용하여 성공적으로 디스플레이했다. 그러나 다양한 연구의 이유로이 프로젝트는 Python으로 작성할 수 없습니다.
나는 솔루션을 찾고자했지만, 찾을 수있는 유일한 해결책은 그림 또는 플롯과 관련이 있으며 Screen
이 아닙니다. 나는 알파 블렌딩 (무언가 아주 기본적인 것)으로 뭔가를 할 필요가 있다고 생각하지만 초보자에게 친숙한 가이드를 찾을 수 없었다.
내 테스트 코드는 현재 다음과 같습니다
% screen setup
PsychDefaultSetup(2); Screen('Preference', 'SkipSyncTests', 1);
screenNum = max(Screen('Screens')); % set screen
Screen('Preference','VisualDebugLevel',3);
[w,rect] = Screen('OpenWindow',screenNum);
% Activate for alpha
Screen('BlendFunction', w, 'GL_SRC_ALPHA', 'GL_ONE_MINUS_SRC_ALPHA');
% image presentation rectangles
bigImSq = [0 0 500 500];
[bigIm, xOffsetsigB, yOffsetsigB] = CenterRect(bigImSq, rect);
smImSq = [0 0 250 250];
[smallIm, xOffsetsigS, yOffsetsigS] = CenterRect(smImSq, rect);
% IMAGES
sceneIm = 'scene.png';
objIm = 'object.png';
sceneLoad = imread(sceneIm);
[objLoad,map,alpha] = imread(objIm);
% final textures for display
scene = Screen('MakeTexture',w,sceneLoad);
object = Screen('MakeTexture',w,objLoad);
% Image presentation
grey = [100 100 100];
Screen('FillRect',w,grey);
Screen('Flip',w);
WaitSecs(0.5);
Screen('FillRect',w,grey);
Screen('DrawTexture', w, scene,[],bigIm); % draw the scene
Screen('DrawTexture', w, object,[],smallIm); % draw the object
Screen('Flip',w);
WaitSecs(3);
Screen('CloseAll');
어떤 조언을 주시면 감사하겠습니다!
완벽! 당신의 도움을 주셔서 감사합니다. – treismanwolfe