이 페이지에서

Qt3DExtras::QDiffuseSpecularMaterial Class

class Qt3DExtras::QDiffuseSpecularMaterial

QDiffuseSpecularMaterial 클래스는 퐁(Phong) 조명 효과의 기본 구현을 제공합니다. 더 보기...

헤더: #include <qdiffusespecularmaterial.h>
CMake: find_package(Qt6 REQUIRED COMPONENTS 3dextras)
target_link_libraries(mytarget PRIVATE Qt6::3dextras)
qmake: QT += 3dextras
QML에서: DiffuseSpecularMaterial
상속: Qt3DRender::QMaterial
상태: 사용 중단됨

이 클래스는 더 이상 사용되지 않습니다. 새로운 코드에서는 이 클래스를 사용하지 않는 것을 강력히 권장합니다.

속성

공개 함수

QDiffuseSpecularMaterial(Qt3DCore::QNode *parent = nullptr)
virtual ~QDiffuseSpecularMaterial()
QColor ambient() const
QVariant diffuse() const
bool isAlphaBlendingEnabled() const
QVariant normal() const
float shininess() const
QVariant specular() const
float textureScale() const

공개 슬롯

void setAlphaBlendingEnabled(bool enabled)
void setAmbient(const QColor &ambient)
void setDiffuse(const QVariant &diffuse)
void setNormal(const QVariant &normal)
void setShininess(float shininess)
void setSpecular(const QVariant &specular)
void setTextureScale(float textureScale)

신호

void alphaBlendingEnabledChanged(bool enabled)
void ambientChanged(const QColor &ambient)
void diffuseChanged(const QVariant &diffuse)
void normalChanged(const QVariant &normal)
void shininessChanged(float shininess)
void specularChanged(const QVariant &specular)
void textureScaleChanged(float textureScale)

상세 설명

퐁(Phong) 조명 효과는 앰비언트(ambient), 디퓨즈(diffuse), 스페큘러(specular)라는 세 가지 조명 구성 요소의 조합을 기반으로 합니다. 이러한 구성 요소들의 상대적 강도는 RGB 3원색으로 모델링된 반사율 계수를 통해 제어됩니다:

  • 앰비언트(Ambient)는 다른 광원이 없는 상태에서 물체가 방출하는 색상입니다.
  • 확산(Diffuse)은 조명이 거친 표면에 반사될 때 발산되는 색상입니다.
  • 스페큘러는 빛이 반사될 때 광택 있는 표면에서 발산되는 색상입니다.
  • 표면의 광택도는 float 형식의 속성으로 제어됩니다.

이 머티리얼은 단일 렌더 패스 방식을 사용하는 이펙트를 활용하며, 프래그먼트별 조명을 수행합니다. OpenGL 2, OpenGL 3 이상 및 OpenGL ES 2용 기술이 제공됩니다.

속성 설명서

alphaBlending : bool

디퓨즈 속성에서 오는 알파 정보가 렌더링 시 반영될지 여부를 나타냅니다. 기본값은 false입니다.

액세스 함수:

bool isAlphaBlendingEnabled() const
void setAlphaBlendingEnabled(bool enabled)

알림 신호:

void alphaBlendingEnabledChanged(bool enabled)

ambient : QColor

다른 광원이 없는 상태에서 객체가 발산하는 주변 색상을 나타냅니다.

액세스 함수:

QColor ambient() const
void setAmbient(const QColor &ambient)

알림 신호:

void ambientChanged(const QColor &ambient)

diffuse : QVariant

조명과 상호작용하여 거친 표면에서 반사될 때 발산되는 머티리얼의 확산 색상을 저장합니다. 이는 단색 값이거나 텍스처일 수 있습니다.

액세스 함수:

QVariant diffuse() const
void setDiffuse(const QVariant &diffuse)

알림 신호:

void diffuseChanged(const QVariant &diffuse)

normal : QVariant

머티리얼의 현재 노멀 맵 텍스처를 저장합니다. 이 값은 반드시 텍스처여야 하며, 그렇지 않은 경우 무시됩니다. 기본적으로 이 맵은 설정되어 있지 않습니다.

액세스 함수:

QVariant normal() const
void setNormal(const QVariant &normal)

알림 신호:

void normalChanged(const QVariant &normal)

shininess : float

광택 지수를 저장합니다. 광택 값이 높을수록 하이라이트는 더 작고 밝아집니다.

기본값은 150.0입니다.

액세스 함수:

float shininess() const
void setShininess(float shininess)

알림 신호:

void shininessChanged(float shininess)

specular : QVariant

조명과 상호작용하여 반짝이는 표면 반사 시 발산되는 머티리얼의 스페큘러 색상을 저장합니다. 이는 단색 값이거나 텍스처일 수 있습니다.

액세스 함수:

QVariant specular() const
void setSpecular(const QVariant &specular)

알림 신호:

void specularChanged(const QVariant &specular)

textureScale : float

현재 텍스처 배율을 저장합니다. 렌더링 시 텍스처 좌표에 곱셈자로 적용됩니다. 기본값은 1.0입니다.

textureScale을 QTextureWrapMode::Repeat와 함께 사용하면 표면 전체에 텍스처를 타일링하는 간단한 방법을 제공합니다. 예를 들어, 텍스처 스케일이 4.0 인 경우 16개(4x4)의 타일이 생성됩니다.

액세스 함수:

float textureScale() const
void setTextureScale(float textureScale)

알림 신호:

void textureScaleChanged(float textureScale)

멤버 함수 문서

[explicit] QDiffuseSpecularMaterial::QDiffuseSpecularMaterial(Qt3DCore::QNode *parent = nullptr)

parent 를 부모 객체로 하는 새로운 QDiffuseSpecularMaterial 인스턴스를 생성합니다.

[virtual noexcept] QDiffuseSpecularMaterial::~QDiffuseSpecularMaterial()

QDiffuseSpecularMaterial 를 삭제합니다.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.