QGIS API Documentation 4.1.0-Master (3b8ef1f72a3)
Loading...
Searching...
No Matches
QgsAbstractMaterial3DHandler Class Referenceabstract

Abstract base class for material 3D handlers. More...

#include <qgsmaterial3dhandler.h>

Inheritance diagram for QgsAbstractMaterial3DHandler:

Classes

struct  PreviewMeshType
 Encapsulates information about available preview meshes. More...

Public Member Functions

virtual ~QgsAbstractMaterial3DHandler ()=default
virtual void addParametersToEffect (Qt3DRender::QEffect *effect, const QgsAbstractMaterialSettings *settings, const QgsMaterialContext &materialContext) const =0
 Adds parameters from the material settings to a destination effect.
virtual void applyDataDefinedToGeometry (const QgsAbstractMaterialSettings *settings, Qt3DCore::QGeometry *geometry, int vertexCount, const QByteArray &dataDefinedBytes) const
 Applies the data defined bytes, dataDefinedBytes, on the geometry by filling a specific vertex buffer that will be used by the shader.
virtual Qt3DCore::QEntity * createPreviewMesh (const QString &type, Qt3DCore::QEntity *parent) const
 Creates a new entity representing a suitable preview mesh for this material type.
virtual Qt3DCore::QEntity * createPreviewScene (const QgsAbstractMaterialSettings *settings, const QString &type, const QgsMaterialContext &context, Qt3DExtras::Qt3DWindow *window, Qt3DCore::QEntity *parent) const
 Builds a complete self-contained scene for previewing the material, using the specified mesh type.
virtual int dataDefinedByteStride (const QgsAbstractMaterialSettings *settings) const
 Returns byte stride of the data defined colors,used to fill the vertex colors data defined buffer for rendering.
virtual QByteArray dataDefinedVertexColorsAsByte (const QgsAbstractMaterialSettings *settings, const QgsExpressionContext &expressionContext) const
 Returns byte array corresponding to the data defined colors depending of the expressionContext, used to fill the specific vertex buffer used for rendering the geometry.
virtual QList< PreviewMeshTypepreviewMeshTypes () const
 Returns a list of available preview mesh types for the material.
virtual QMap< QString, QString > toExportParameters (const QgsAbstractMaterialSettings *settings) const =0
 Returns the parameters to be exported to .mtl file.
virtual QgsMaterialtoMaterial (const QgsAbstractMaterialSettings *settings, Qgis::MaterialRenderingTechnique technique, const QgsMaterialContext &context) const =0
 Creates a new QgsMaterial object representing the material settings.
virtual bool updatePreviewScene (Qt3DCore::QEntity *sceneRoot, const QgsAbstractMaterialSettings *settings, const QgsMaterialContext &context) const =0
 Updates an existing material preview scene with new material settings.

Static Protected Member Functions

static Qt3DRender::QParameter * findParameter (Qt3DRender::QEffect *effect, const QString &name)
 Finds an existing parameter in an effect by name.

Detailed Description

Abstract base class for material 3D handlers.

Warning
Not available in Python bindings
Since
QGIS 4.2

Definition at line 118 of file qgsmaterial3dhandler.h.

Constructor & Destructor Documentation

◆ ~QgsAbstractMaterial3DHandler()

virtual QgsAbstractMaterial3DHandler::~QgsAbstractMaterial3DHandler ( )
virtualdefault

Member Function Documentation

◆ addParametersToEffect()

virtual void QgsAbstractMaterial3DHandler::addParametersToEffect ( Qt3DRender::QEffect * effect,
const QgsAbstractMaterialSettings * settings,
const QgsMaterialContext & materialContext ) const
pure virtual

◆ applyDataDefinedToGeometry()

void QgsAbstractMaterial3DHandler::applyDataDefinedToGeometry ( const QgsAbstractMaterialSettings * settings,
Qt3DCore::QGeometry * geometry,
int vertexCount,
const QByteArray & dataDefinedBytes ) const
virtual

Applies the data defined bytes, dataDefinedBytes, on the geometry by filling a specific vertex buffer that will be used by the shader.

Reimplemented in QgsGoochMaterial3DHandler, QgsPhongMaterial3DHandler, and QgsSimpleLineMaterial3DHandler.

Definition at line 38 of file qgsmaterial3dhandler.cpp.

◆ createPreviewMesh()

Qt3DCore::QEntity * QgsAbstractMaterial3DHandler::createPreviewMesh ( const QString & type,
Qt3DCore::QEntity * parent ) const
virtual

Creates a new entity representing a suitable preview mesh for this material type.

The default implementation returns a sphere. This method can be overridden to provide more appropriate meshes when applicable for a particular material implementation.

Ownership of the returned entity resides with the parent entity.

Reimplemented in QgsSimpleLineMaterial3DHandler.

Definition at line 95 of file qgsmaterial3dhandler.cpp.

◆ createPreviewScene()

Qt3DCore::QEntity * QgsAbstractMaterial3DHandler::createPreviewScene ( const QgsAbstractMaterialSettings * settings,
const QString & type,
const QgsMaterialContext & context,
Qt3DExtras::Qt3DWindow * window,
Qt3DCore::QEntity * parent ) const
virtual

Builds a complete self-contained scene for previewing the material, using the specified mesh type.

The scene contains a mesh with the associated material applied, and appropriate lighting.

The returned entity is the scene root, parented to parent.

This method can be overridden to customize the lighting or mesh for a specific material.

Reimplemented in QgsSimpleLineMaterial3DHandler.

Definition at line 135 of file qgsmaterial3dhandler.cpp.

◆ dataDefinedByteStride()

int QgsAbstractMaterial3DHandler::dataDefinedByteStride ( const QgsAbstractMaterialSettings * settings) const
virtual

Returns byte stride of the data defined colors,used to fill the vertex colors data defined buffer for rendering.

Since
QGIS 3.18

Reimplemented in QgsGoochMaterial3DHandler, and QgsPhongMaterial3DHandler.

Definition at line 46 of file qgsmaterial3dhandler.cpp.

◆ dataDefinedVertexColorsAsByte()

QByteArray QgsAbstractMaterial3DHandler::dataDefinedVertexColorsAsByte ( const QgsAbstractMaterialSettings * settings,
const QgsExpressionContext & expressionContext ) const
virtual

Returns byte array corresponding to the data defined colors depending of the expressionContext, used to fill the specific vertex buffer used for rendering the geometry.

See also
applyDataDefinedToGeometry()
Since
QGIS 3.18

Reimplemented in QgsGoochMaterial3DHandler, QgsPhongMaterial3DHandler, and QgsSimpleLineMaterial3DHandler.

Definition at line 31 of file qgsmaterial3dhandler.cpp.

◆ findParameter()

Qt3DRender::QParameter * QgsAbstractMaterial3DHandler::findParameter ( Qt3DRender::QEffect * effect,
const QString & name )
staticprotected

Finds an existing parameter in an effect by name.

This method searches both parameters which are directly applied effect and also parameters applied to all techniques present in the effect.

Definition at line 68 of file qgsmaterial3dhandler.cpp.

◆ previewMeshTypes()

QList< QgsAbstractMaterial3DHandler::PreviewMeshType > QgsAbstractMaterial3DHandler::previewMeshTypes ( ) const
virtual

Returns a list of available preview mesh types for the material.

Reimplemented in QgsSimpleLineMaterial3DHandler.

Definition at line 51 of file qgsmaterial3dhandler.cpp.

◆ toExportParameters()

virtual QMap< QString, QString > QgsAbstractMaterial3DHandler::toExportParameters ( const QgsAbstractMaterialSettings * settings) const
pure virtual

◆ toMaterial()

virtual QgsMaterial * QgsAbstractMaterial3DHandler::toMaterial ( const QgsAbstractMaterialSettings * settings,
Qgis::MaterialRenderingTechnique technique,
const QgsMaterialContext & context ) const
pure virtual

Creates a new QgsMaterial object representing the material settings.

The technique argument specifies the rendering technique which will be used with the returned material.

Implemented in QgsGoochMaterial3DHandler, QgsMetalRoughMaterial3DHandler, QgsMetalRoughTexturedMaterial3DHandler, QgsNullMaterial3DHandler, QgsPhongMaterial3DHandler, QgsPhongTexturedMaterial3DHandler, and QgsSimpleLineMaterial3DHandler.

◆ updatePreviewScene()

virtual bool QgsAbstractMaterial3DHandler::updatePreviewScene ( Qt3DCore::QEntity * sceneRoot,
const QgsAbstractMaterialSettings * settings,
const QgsMaterialContext & context ) const
pure virtual

Updates an existing material preview scene with new material settings.

This method is called on every material setting parameter change while configuring materials, so the implementation must be cheap (e.g. involve no entity creation, just direct manipulation of existing attributes).

Returns false if the scene could not be updated in place and needs to be regenered via createPreviewScene().

Implemented in QgsGoochMaterial3DHandler, QgsMetalRoughMaterial3DHandler, QgsMetalRoughTexturedMaterial3DHandler, QgsNullMaterial3DHandler, QgsPhongMaterial3DHandler, QgsPhongTexturedMaterial3DHandler, and QgsSimpleLineMaterial3DHandler.


The documentation for this class was generated from the following files: