48using namespace Qt::StringLiterals;
59 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"null"_s ) )->setHandler(
nullptr );
60 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"phong"_s ) )->setHandler(
nullptr );
61 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"phongtextured"_s ) )->setHandler(
nullptr );
62 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"simpleline"_s ) )->setHandler(
nullptr );
63 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"gooch"_s ) )->setHandler(
nullptr );
64 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"metalrough"_s ) )->setHandler(
nullptr );
76 instance()->mNullMaterialHandler = std::make_unique< QgsNullMaterial3DHandler >();
77 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"null"_s ) )->setHandler(
instance()->mNullMaterialHandler.get() );
79 instance()->mPhongMaterialHandler = std::make_unique< QgsPhongMaterial3DHandler >();
80 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"phong"_s ) )->setHandler(
instance()->mPhongMaterialHandler.get() );
82 instance()->mPhongTexturedMaterialHandler = std::make_unique< QgsPhongTexturedMaterial3DHandler >();
83 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"phongtextured"_s ) )->setHandler(
instance()->mPhongTexturedMaterialHandler.get() );
85 instance()->mSimpleLineMaterialHandler = std::make_unique< QgsSimpleLineMaterial3DHandler >();
86 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"simpleline"_s ) )->setHandler(
instance()->mSimpleLineMaterialHandler.get() );
88 instance()->mGoochMaterialHandler = std::make_unique< QgsGoochMaterial3DHandler >();
89 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"gooch"_s ) )->setHandler(
instance()->mGoochMaterialHandler.get() );
91 instance()->mMetalRoughMaterialHandler = std::make_unique< QgsMetalRoughMaterial3DHandler >();
92 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"metalrough"_s ) )->setHandler(
instance()->mMetalRoughMaterialHandler.get() );
94 instance()->mMetalRoughTexturedMaterialHandler = std::make_unique< QgsMetalRoughTexturedMaterial3DHandler >();
95 qgis::down_cast< QgsMaterialSettingsMetadata * >(
materialRegistry->materialSettingsMetadata( u
"metalroughtextured"_s ) )->setHandler(
instance()->mMetalRoughTexturedMaterialHandler.get() );
121 return instance()->mTerrainRegistry;
132 handler = metadata->handler();
145 return handler->toMaterial( settings, technique, context );
154 return handler->toExportParameters( settings );
163 handler->addParametersToEffect( effect, settings, materialContext );
171 handler->applyDataDefinedToGeometry( settings, geometry, vertexCount, dataDefinedBytes );
179 return handler->dataDefinedVertexColorsAsByte( settings, expressionContext );
188 return handler->dataDefinedByteStride( settings );
MaterialRenderingTechnique
Material rendering techniques.
void addRenderer(Qgs3DRendererAbstractMetadata *metadata)
Registers a new 3D renderer type.
bool addSymbolType(Qgs3DSymbolAbstractMetadata *metadata)
Registers a new symbol type. Takes ownership of the metadata instance.
Registry of available 3d terrain classes.
static void initialize()
Initializes the 3D framework.
static QMap< QString, QString > toMaterialExportParameters(const QgsAbstractMaterialSettings *settings)
Returns the parameters to be exported to .mtl file.
static Qgs3DTerrainRegistry * terrainRegistry()
Returns the terrain registry, used for managing 3D terrains.
static QgsMaterial * toMaterial(const QgsAbstractMaterialSettings *settings, Qgis::MaterialRenderingTechnique technique, const QgsMaterialContext &context)
Creates a new QgsMaterial object representing the material settings.
static void addMaterialParametersToEffect(Qt3DRender::QEffect *effect, const QgsAbstractMaterialSettings *settings, const QgsMaterialContext &materialContext)
Adds parameters from the material settings to a destination effect.
static QgsMaterialRegistry * materialRegistry()
Returns the material registry, used for managing 3D materials.
static Qgs3D * instance()
Returns a pointer to the singleton instance.
static const QgsAbstractMaterial3DHandler * handlerForMaterialSettings(const QgsAbstractMaterialSettings *settings)
Returns the handler to use for a material settings.
Qgs3D(const Qgs3D &other)=delete
static QByteArray materialDataDefinedVertexColorsAsByte(const QgsAbstractMaterialSettings *settings, const QgsExpressionContext &expressionContext)
Returns byte array corresponding to the data defined colors depending of the expressionContext,...
static int materialDataDefinedByteStride(const QgsAbstractMaterialSettings *settings)
Returns byte stride of the data defined colors,used to fill the vertex colors data defined buffer for...
static void applyMaterialDataDefinedToGeometry(const QgsAbstractMaterialSettings *settings, Qt3DCore::QGeometry *geometry, int vertexCount, const QByteArray &dataDefinedBytes)
Applies the data defined bytes, dataDefinedBytes, on the geometry by filling a specific vertex buffer...
Abstract base class for material 3D handlers.
Abstract base class for material settings.
virtual QString type() const =0
Returns the unique type name for the material.
static QgsMaterialRegistry * materialRegistry()
Returns registry of available 3D materials.
static Qgs3DSymbolRegistry * symbol3DRegistry()
Returns registry of available 3D symbols.
static Qgs3DRendererRegistry * renderer3DRegistry()
Returns registry of available 3D renderers.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
static QgsAbstract3DSymbol * create() SIP_FACTORY
Creates a new QgsLine3DSymbol.
Context settings for a material.
Registry of available 3d material settings classes.
Base class for all materials used within QGIS 3D views.
static QgsAbstract3DSymbol * create()
Creates a new QgsPoint3DSymbol.
static QgsAbstract3DSymbol * create() SIP_FACTORY
Creates a new QgsPolygon3DSymbol.
static QgsStyle * defaultStyle(bool initialize=true)
Returns the default application-wide style.
#define QgsDebugError(str)