class QMaterial

Provides an abstract class that should be the base of all material component classes in a scene. More

Inheritance diagram of PySide6.Qt3DRender.Qt3DRender.QMaterial

Inherited by: QTextureMaterial, QPhongMaterial, QPhongAlphaMaterial, QPerVertexColorMaterial, QNormalDiffuseSpecularMapMaterial, QNormalDiffuseMapMaterial, QNormalDiffuseMapAlphaMaterial, QMorphPhongMaterial, QMetalRoughMaterial, QGoochMaterial, QDiffuseSpecularMaterial, QDiffuseSpecularMapMaterial, QDiffuseMapMaterial

Synopsis

Properties

Methods

Slots

Signals

Note

This documentation may contain snippets that were automatically translated from C++ to Python. We always welcome contributions to the snippet translation. If you see an issue with the translation, you can also let us know by creating a ticket on https:/bugreports.qt.io/projects/PYSIDE

Detailed Description

QMaterial provides a way to specify the rendering of an entity . Any aspect can define its own subclass of QMaterial so that a Material can be used to describe a visual element; for example, the way sound should reflect off an element, the temperature of a surface, and so on.

In itself, a QMaterial doesn’t do anything. It’s only when it references a QEffect node that a QMaterial becomes useful.

In practice, it often happens that a single QEffect is being referenced by several QMaterial components. This allows to only create the effect, techniques, passes and shaders once while allowing to specify the material by adding QParameter instances.

A QParameter defined on a QMaterial overrides parameter (of the same name) defined in a QEffect , QTechnique and QRenderPass , but are overridden by parameter in QRenderPassFilter and QTechniqueFilter .

QMaterial *material1 = new QMaterial();
QMaterial *material2 = new QMaterial();

// Create effect, technique, render pass and shader
QEffect *effect = new QEffect();
QTechnique *gl3Technique = new QTechnique();
QRenderPass *gl3Pass = new QRenderPass();
QShaderProgram *glShader = new QShaderProgram();

// Set the shader on the render pass
gl3Pass->setShaderProgram(glShader);

// Add the pass to the technique
gl3Technique->addRenderPass(gl3Pass);

// Set the targeted GL version for the technique
gl3Technique->graphicsApiFilter()->setApi(QGraphicsApiFilter::OpenGL);
gl3Technique->graphicsApiFilter()->setMajorVersion(3);
gl3Technique->graphicsApiFilter()->setMinorVersion(1);
gl3Technique->graphicsApiFilter()->setProfile(QGraphicsApiFilter::CoreProfile);

// Add the technique to the effect
effect->addTechnique(gl3Technique);

// Set the effect on the materials
material1->setEffect(effect);
material2->setEffect(effect);

// Set different parameters on the materials
const QString parameterName = QStringLiteral("color");
material1->addParameter(new QParameter(parameterName, QColor::fromRgbF(0.0f, 1.0f, 0.0f, 1.0f)));
material2->addParameter(new QParameter(parameterName, QColor::fromRgbF(1.0f, 1.0f, 1.0f, 1.0f)));

See also

QEffect QTechnique QParameter

Note

Properties can be used directly when from __feature__ import true_property is used or via accessor functions otherwise.

property effectᅟ: QEffect

Specifies the effect to be used with the material.

Access functions:
__init__([parent=None])
Parameters:

parentQNode

addParameter(parameter)
Parameters:

parameterQParameter

Add a parameter to the material’s parameters.

effect()
Return type:

QEffect

See also

setEffect()

Getter of property effectᅟ .

effectChanged(effect)
Parameters:

effectQEffect

Notification signal of property effectᅟ .

parameters()
Return type:

.list of Qt3DRender.QParameter

Returns a vector of the material’s current parameters

removeParameter(parameter)
Parameters:

parameterQParameter

Remove a parameter from the material’s parameters.

setEffect(effect)
Parameters:

effectQEffect

See also

effect()

Setter of property effectᅟ .