3D 아핀 변형 효과

3D 변환 효과를 사용하여 임의의 4x4 변환 매트릭스를 이미지에 적용합니다.

이 효과는 다음 계산을 사용하여 원본 이미지의 모퉁이 꼭짓점([x y z 1 ])에 제공하는 행렬(M?)을 적용합니다.

[ xr yr zr 1 ]=[ x y z 1 ]*M?

이 효과에 대한 CLSID는 CLSID_D2D13DTransform.

예제 이미지

이전
변환 전의 이미지입니다.
After
변환 후의 이미지입니다.
ComPtr<ID2D1Effect> D2D13DTransformEffect;
m_d2dContext->CreateEffect(CLSID_D2D13DTransform, &D2D13DTransformEffect);

D2D13DTransformEffect->SetInput(0, bitmap);

// You can use the helper methods in D2D1::Matrix4x4F to create common matrix transformations.
D2D1_MATRIX_4X4_F matrix = 
    D2D1::Matrix4x4F::Translation(0.0f, -192.0f, 0.0f) *
    D2D1::Matrix4x4F::RotationY(30.0f) *
    D2D1::Matrix4x4F::Translation(0.0f, 192.0f, 0.0f);

D2D13DTransformEffect->SetValue(D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX, matrix);

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(D2D13DTransformEffect.Get());
m_d2dContext->EndDraw();

효과 속성

표시 이름 및 인덱스 열거형 Description
InterpolationMode
D2D1_3DTRANSFORM_PROP_INTERPOLATION_MODE
효과가 이미지에 사용하는 보간 모드입니다. 품질과 속도의 범위는 5 배율 모드가 있습니다.
형식이 D2D1_3DTRANSFORM_INTERPOLATION_MODE.
기본값은 D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.
BorderMode
D2D1_3DTRANSFORM_PROP_BORDER_MODE
소프트 또는 하드 이미지의 테두리를 계산하는 데 사용되는 모드입니다. 자세한 내용은 테두리 모드 를 참조하세요.
형식이 D2D1_BORDER_MODE.
기본값은 D2D1_BORDER_MODE_SOFT.
TransformMatrix
D2D1_3DTRANSFORM_PROP_TRANSFORM_MATRIX
프로젝션 평면에 적용된 4x4 변환 행렬입니다. 다음 행렬 계산은 하나의 3D 좌표계에서 변환된 2D 좌표계로 점을 매핑하는 데 사용됩니다.
3D 깊이 행렬 어디:
X, Y, Z = 입력 프로젝션 평면 좌표
Mx,y = 행렬 요소 변환
X , Y , Z =출력 프로젝션 평면 좌표

개별 행렬 요소는 바인딩되지 않으며 단위가 없습니다.
형식이 D2D1_MATRIX_4X4_F.
기본값은 Matrix4x4F(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)입니다.

보간 모드

열거형 설명
D2D1_3DTRANSFORM_INTERPOLATION_MODE_NEAREST_NEIGHBOR 가장 가까운 단일 지점을 샘플하고 사용합니다. 이 모드는 처리 시간을 줄이지만 가장 낮은 품질의 이미지를 출력합니다.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR 4포인트 샘플 및 선형 보간을 사용합니다. 이 모드는 가장 가까운 인접 모드보다 더 많은 처리 시간을 사용하지만 더 높은 품질의 이미지를 출력합니다.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_CUBIC 보간을 위해 16 샘플 입방 커널을 사용합니다. 이 모드는 가장 많은 처리 시간을 사용하지만 더 높은 품질의 이미지를 출력합니다.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR 좋은 에지 앤티앨리어싱을 위해 단일 픽셀 내에 4개의 선형 샘플을 사용합니다. 이 모드는 픽셀이 적은 이미지에서 소량으로 축소하는 데 적합합니다.
D2D1_3DTRANSFORM_INTERPOLATION_MODE_ANISOTROPIC 이방성 필터링을 사용하여 비트맵의 변형된 모양에 따라 패턴을 샘플링합니다.

참고

모드를 선택하지 않으면 효과가 기본적으로 D2D1_3DTRANSFORM_INTERPOLATION_MODE_LINEAR.

참고

이방성 모드는 크기 조정 시 Mipmap을 생성합니다. 그러나 이 효과에 입력되는 효과에 대해 Cached 속성을 true로 설정하면 밉맵이 충분히 작은 이미지에 대해 매번 생성되지 않습니다.

테두리 모드

속성 설명
D2D1_BORDER_MODE_SOFT 효과는 보간할 때 투명한 검은색 픽셀로 이미지를 채움하여 부드러운 가장자리를 만듭니다.
D2D1_BORDER_MODE_HARD 효과는 출력을 입력 이미지의 크기로 고정합니다.

4x4 변환 행렬 클래스

Direct2D는 3차원으로 이미지를 변환하기 위한 도우미 함수를 제공하는 4x4 행렬 클래스를 제공합니다. 자세한 내용과 모든 클래스 멤버에 대한 설명은 Matrix4x4F 항목을 참조하세요.

함수 Description 행렬
Matrix4x4F::Scale(X, Y, Z) X, Y 및/또는 Z 방향에서 프로젝션 평면의 크기를 조정하는 변환 행렬을 생성합니다. scale3d 행렬
SkewX(X) X 방향으로 프로젝션 평면을 기울이는 변환 행렬을 생성합니다. X 방향으로 기울이기 행렬을 표시합니다.
Skewy(Y) 프로젝션 평면을 Y 방향으로 기울이는 변환 행렬을 생성합니다. 기울이기 행렬
Translation(X, Y, Z) X, Y 또는 Z 방향으로 프로젝션 평면을 변환하는 변환 행렬을 생성합니다. 행렬 변환
RotationX(X) X축에 대한 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. x 행렬 회전
RotationY(Y) Y축을 기준으로 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. y 행렬 회전
RotationZ(Z) Z축을 기준으로 프로젝션 평면을 회전하는 변환 행렬을 생성합니다. z 행렬 회전
PerspectiveProjection(D) 깊이 값이 D인 원근 변환입니다. 원근 행렬
RotationArbitraryAxis(X, Y, Z, degrees) 지정한 축을 기준으로 프로젝션 평면을 회전합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
지원되는 최소 서버 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | Windows 스토어 앱]
헤더 d2d1effects.h
라이브러리 d2d1.lib, dxguid.lib

ID2D1Effect