C
Q3DSPresentation 类
表示一个 Qt 3D Studio 展示。 更多...
头文件 | #include <Q3DSPresentation> |
自 | Qt 3D Studio 2.0 |
继承 | QObject |
这个类是从 Qt 3D Studio 2.0 中引入的。
属性
|
|
公共函数
Q3DSPresentation(QObject *parent = nullptr) | |
virtual | ~Q3DSPresentation() |
void | addImageProvider(const QString &providerId, QQmlImageProviderBase *provider) |
void | createElement(const QString &parentElementPath, const QString &slideName, const QHash<QString, QVariant> &properties) |
void | createElements(const QString &parentElementPath, const QString &slideName, const QVector<QHash<QString, QVariant> > &properties) |
void | createMaterial(const QString &materialDefinition, const QString &subPresId = {}) |
void | createMaterials(const QStringList &materialDefinitions, const QString &subPresId = {}) |
void | createMesh(const QString &meshName, const Q3DSGeometry &geometry) |
void | createMeshes(const QHash<QString, const Q3DSGeometry *> &meshData) |
QStringList | createdElements() const |
QStringList | createdMaterials() const |
QStringList | createdMeshes() const |
QVector<Q3DSDataInput *> | dataInputs() const |
QVector<Q3DSDataInput *> | dataInputs(const QString &metadataKey) const |
QVector<Q3DSDataOutput *> | dataOutputs() const |
bool | delayedLoading() const |
void | deleteElement(const QString &elementPath) |
void | deleteElements(const QStringList &elementPaths) |
void | deleteMaterial(const QString &materialName) |
void | deleteMaterials(const QStringList &materialNames) |
void | deleteMesh(const QString &meshName) |
void | deleteMeshes(const QStringList &meshNames) |
void | exportShaderCache(const QUrl &shaderCacheFile, bool binaryShaders) |
void | exportShaderCache(bool binaryShaders) |
void | exportShaderCache(QByteArray &cacheData, bool binaryShaders) |
void | exportShaderCache(const QUrl &shaderCacheFile, bool binaryShaders, int compressionLevel) |
void | exportShaderCache(bool binaryShaders, int compressionLevel) |
void | exportShaderCache(QByteArray &cacheData, bool binaryShaders, int compressionLevel) |
QVariantList | getDataInputs() const |
QVariantList | getDataInputs(const QString &metadataKey) const |
QVariantList | getDataOutputs() const |
void | preloadSlide(const QString &elementPath) |
void | setDelayedLoading(bool enable) |
void | setShaderCacheData(const QByteArray &shaderCache) |
QUrl | shaderCacheFile() const |
QUrl | source() const |
uint | textureId(const QString &elementPath) |
uint | textureId(const QString &elementPath, QSize &size, GLenum &format) |
void | unloadSlide(const QString &elementPath) |
QStringList | variantList() const |
公共槽
void | fireEvent(const QString &elementPath, const QString &eventName) |
void | goToSlide(const QString &elementPath, bool next, bool wrap) |
void | goToSlide(const QString &elementPath, const QString &name) |
void | goToSlide(const QString &elementPath, unsigned int index) |
void | goToTime(const QString &elementPath, float time) |
void | setAttribute(const QString &elementPath, const QString &attributeName, const QVariant &value) |
void | setDataInputValue(const QString &name, const QVariant &value, bool force = false) |
void | setGlobalAnimationTime(qint64 milliseconds) |
void | setPresentationActive(const QString &id, bool active) |
void | setShaderCacheFile(const QUrl &fileName) |
void | setSource(const QUrl &source) |
void | setVariantList(const QStringList &variantList) |
信号
void | customSignalEmitted(const QString &elementPath, const QString &name) |
void | dataInputsReady() |
void | dataOutputsReady() |
void | delayedLoadingChanged(bool enable) |
void | elementsCreated(const QStringList &elementPaths, const QString &error) |
void | materialsCreated(const QStringList &materialNames, const QString &error) |
void | meshesCreated(const QStringList &meshNames, const QString &error) |
void | shaderCacheExported(bool success) |
void | shaderCacheFileChanged(const QUrl &fileName) |
void | shaderCacheLoadErrors(const QString &errors) |
void | slideEntered(const QString &elementPath, unsigned int index, const QString &name) |
void | slideExited(const QString &elementPath, unsigned int index, const QString &name) |
void | sourceChanged(const QUrl &source) |
void | variantListChanged(const QStringList &variantList) |
详细信息
此类提供控制演示文稿的属性和方法。
Qt 3D Studio支持在一个项目中支持多个演示文稿。总有一个主演示文稿,零个或多个子演示文稿。子演示文稿可以组成主演示文稿,作为Qt 3D Studio层的内蓉或作为纹理图。
在每个文件系统中,每个演示文稿对应一个.uip
演示文稿文件。当存在时,.uia
项目文件将这些文件关联起来,指定每个(子)演示文稿的名称,并指定哪个是主演示文稿。
.uia
项目还定义了由演示文稿导出的DataInput和DataOutput。 DataInput提供一种向演示文稿提供输入的方法,例如,通过代码控制子演示文稿的时间线。 DataOutput
提供一种在动画时间线、行为脚本或DataInput中更改演示文稿属性时获得通知的方法。
从API的角度来看,Q3DSPresentation对应主演示文稿。源属性可以引用一个.uia
或.uip
文件。当指定具有.uip
扩展名且与相同名称的.uia
存在时,将自动加载.uia
,因此可以获取子演示文稿信息。
注意:在处理C++ API时,不应直接实例化此类。Q3DSSurfaceViewer隐式创建一个Q3DSPresentation实例。这可以通过Q3DSSurfaceViewer::presentation()查询。
属性文档
createdElements : const QStringList
此属性包含在此演示文稿上所有动态创建的元素列表。
此属性是只读的。
访问函数
QStringList | createdElements() const |
通知信号
void | elementsCreated(const QStringList &elementPaths, const QString &error) |
另请参阅createElement()和createElements()。
createdMaterials : const QStringList
此属性包含在此演示文稿上所有动态创建的材料列表。
此属性是只读的。
访问函数
QStringList | createdMaterials() const |
通知信号
void | materialsCreated(const QStringList &materialNames, const QString &error) |
另请参阅createMaterial()和createMaterials()。
createdMeshes : const QStringList
此属性包含在此演示文稿上所有动态创建的网格列表。
此属性是只读的。
访问函数
QStringList | createdMeshes() const |
通知信号
void | meshesCreated(const QStringList &meshNames, const QString &error) |
另请参阅createMesh()和createMeshes()。
delayedLoading : bool
此属性控制是否在加载演示文稿时(false)或在演示文稿实际使用时(true)加载演示文稿资源。资源按幻灯片加载,因此将一次性加载幻灯片所需的全部资源。
资源可以是图像、子演示、素材、效果网格。
默认值是 false
。
访问函数
bool | delayedLoading() const |
void | setDelayedLoading(bool enable) |
通知信号
void | delayedLoadingChanged(bool enable) |
shaderCacheFile : QUrl
指定用于初始着色器初始化的着色器缓存文件。此属性值必须在演示之前设置。使用缓存的着色器可以提高演示初始化速度。
如果未设置此属性且未调用 setShaderCacheData,所有着色器将正常生成。
如果此属性指向有效的着色器缓存文件,则不支持新的着色器缓存生成。
默认值为空URL。
此属性在 Qt 3D Studio 2.5 中引入。
访问函数
QUrl | shaderCacheFile() const |
void | setShaderCacheFile(const QUrl &fileName) |
通知信号
void | shaderCacheFileChanged(const QUrl &fileName) |
另请参阅exportShaderCache() 和 setShaderCacheData。
source : QUrl
包含主演示文件(*.uia
或 *.uip
)的名称。这可能是一个本地文件或 qrc URL。
所有其他资产的名称(纹理映射的图像文件、qml行为脚本、网格文件)将相对于演示的位置解决,除非它们使用绝对路径。这允许将所有资产捆绑在 Qt 资源系统中演示旁边。
当前设置的 variantList 将修改从演示加载的变体组和标签。请参阅 Q3DSPresentation::variantList 属性。
访问函数
QUrl | source() const |
void | setSource(const QUrl &source) |
通知信号
void | sourceChanged(const QUrl &source) |
variantList : QStringList
包含在设置 source
属性时加载的(变体组):(变体)标签列表。如果此列表为空(默认值),则不应用变体过滤,并且无论演示中的变体标签如何都要加载所有项。变体机制允许一个演示项目包含多个演示变体,并且加载哪个变体集的决定是在运行时基于 variantList
确定的。
变体被分为变体组,例如,一个变体组可能是 region
,该组中的变体可以是例如 US, EU, CH
。另一个变体组可以是例如 power
,该组中的变体可以是例如 gas, electric, diesel
。要过滤此示例中的 EU 地区的电力变体,variantList 需要包含两个字符串 "region:EU" 和 "power:electric"。当然,演示项目也需要包含这些变体组和标签,并正确应用于演示内容。
当使用变体过滤器时,加载什么和哪些不加载的决策是基于演示中的每个项目进行检查的。
- 如果项目没有变体标签,它将被加载。
- 如果项目没有为检查的变体组定义标签,它将被加载。
- 如果项目具有变体组的标签,则必须将其中任何一个匹配过滤器中定义的该组的变体。
如果项目不满足上述规则,则不会加载。
访问函数
QStringList | variantList() const |
void | setVariantList(const QStringList &variantList) |
通知信号
void | variantListChanged(const QStringList &variantList) |
成员函数文档
Q3DSPresentation::Q3DSPresentation(QObject *parent = nullptr)
使用给定的 parent 构造一个 Q3DSPresentation 对象。
[信号]
void Q3DSPresentation::customSignalEmitted(const QString &elementPath, const QString &name)
当在 Qt 3D Studio 展示中执行具有 Emit Signal
处理器的动作时产生。 elementPath 指定 目标对象
,name 指定 信号名称
。
连接到此信号提供了一个在 Qt 3D Studio 展示中响应某些事件的方法。
在此示例中,按下或轻触 Cluster 对象将产生 customSignalEmitted("Cluster", "clusterPressed")
。
[信号]
void Q3DSPresentation::dataInputsReady()
当工作室项目中 DataInput 已被解析并可通过 dataInputs() 和 getDataInputs() 方法访问数据输入时产生。
[信号]
void Q3DSPresentation::dataOutputsReady()
当工作室项目中 DataOutput 已被解析并可通过 dataOutputs() 和 getDataOutputs() 方法访问数据输出时产生。
[信号]
void Q3DSPresentation::elementsCreated(const QStringList &elementPaths, const QString &error)
当响应 createElement() 或 createElements() 调用时创建了一个或多个元素。 elementPaths 列表包含了创建的元素路径。如果创建失败,error 字符串将指示原因。
注意:属性 createdElements 的通知信号。
另请参阅createElement()和createElements()。
[槽]
void Q3DSPresentation::fireEvent(const QString &elementPath, const QString &eventName)
向场景对象 elementPath 上的指定具有 eventName 的 Qt 3D Studio 展示事件分发。这些事件提供了一种与场景对象附加的基于 .qml
的 行为脚本
通信的方法,因为它们可以注册通过 Behavior::registerForEvent() 被通知。
有关 elementPath 的描述,请参见 setAttribute()。
[槽]
void Q3DSPresentation::goToSlide(const QString &elementPath, bool next, bool wrap)
此函数是为向后兼容性设计的。我们建议使用 DataInput 来控制幻灯片更改。DataInput 通过避免使用 elementPath(对设计内部结构的引用)来在设计和代码之间提供更强的契约。
根据next的值请求切换到下一张或上一张幻灯片的时间上下文(场景或组件对象)。如果时间上下文已经处于最后或第一张幻灯片,则wrap定义是否分别发生回绕到第一张或最后一张幻灯片。
如果elementPath指向时间上下文,则控制该元素。对于所有其他元素类型,将控制拥有该元素的相应时间上下文。您可以通过在元素路径前面添加“SubPresentationId:”来将命令定向到特定的子演示文稿,例如"SubPresentationOne:Scene"
。
[slot]
void Q3DSPresentation::goToSlide(const QString &elementPath, const QString &name)
此函数是为向后兼容性设计的。我们建议使用 DataInput 来控制幻灯片更改。DataInput 通过避免使用 elementPath(对设计内部结构的引用)来在设计和代码之间提供更强的契约。
根据name请求将时间上下文(场景或组件对象)切换到特定的幻灯片。如果上下文已经在该幻灯片上,则播放将从头开始。
如果elementPath指向时间上下文,则控制该元素。对于所有其他元素类型,将控制拥有该元素的相应时间上下文。您可以通过在元素路径前面添加“SubPresentationId:”来将命令定向到特定的子演示文稿,例如"SubPresentationOne:Scene"
。
[slot]
void Q3DSPresentation::goToSlide(const QString &elementPath, unsigned int index)
此函数是为向后兼容性设计的。我们建议使用 DataInput 来控制幻灯片更改。DataInput 通过避免使用 elementPath(对设计内部结构的引用)来在设计和代码之间提供更强的契约。
根据index请求将时间上下文(场景或组件对象)切换到特定的幻灯片。如果上下文已经在该幻灯片上,则播放将从头开始。幻灯片索引从1开始。
如果elementPath指向时间上下文,则控制该元素。对于所有其他元素类型,将控制拥有该元素的相应时间上下文。您可以通过在元素路径前面添加“SubPresentationId:”来将命令定向到特定的子演示文稿,例如"SubPresentationOne:Scene"
。
[slot]
void Q3DSPresentation::goToTime(const QString &elementPath, float time)
此函数是为向后兼容性设计的。我们建议使用 DataInput 来控制幻灯片更改。DataInput 通过避免使用 elementPath(对设计内部结构的引用)来在设计和代码之间提供更强的契约。
将时间上下文(场景或组件元素)的时线移动到特定位置。位置以秒的time给出。
如果elementPath指向时间上下文,则控制该元素。对于所有其他元素类型,将控制拥有该元素的相应时间上下文。您可以通过在元素路径前面添加“SubPresentationId:”来将命令定向到特定的子演示文稿,例如"SubPresentationOne:Scene"
。
指定0之前或当前幻灯片结束时间之后的时间时的行为取决于幻灯片的播放模式。
在末尾停止
- 超出有效时间范围的值会压缩到边界。例如,跳转到时间-5与跳转到时间0相同。循环
- 超出有效时间范围的值会模入有效范围。例如,在10秒的幻灯片上跳转到时间-4与跳转到时间6相同。Ping Pong
- 超出有效时间范围的值会从两端反弹。例如,跳转到时间-4与跳转到时间4相同(假设时间上下文至少4秒长),而在10秒幻灯片上跳转到时间12与跳转到时间8相同。Ping
- 小于0的值被视为时间0,而大于结束时间的值会从末端反弹(最终会碰到0)。
[signal]
void Q3DSPresentation::materialsCreated(const QStringList &materialNames, const QString &error)
在响应createMaterial()或createMaterials()调用创建了一个或多个材料时发出。创建的材料名称包含在materialNames列表中。
如果创建失败,则error字符串指示原因。
注:属性createdMaterials的提醒信号。
另请参阅createMaterial()和createMaterials()。
[signal]
void Q3DSPresentation::meshesCreated(const QStringList &meshNames, const QString &error)
当响应createMesh() 或 createMeshes() 调用创建了一个或多个网格时发出。在 meshNames 列表中包含创建的网格名称。
如果创建失败,则error字符串指示原因。
注意: 这是属性 createdMeshes 的通知器信号。
另请参阅createMesh()和createMeshes()。
[槽]
void Q3DSPresentation::setAttribute(const QString &elementPath, const QString &attributeName, const QVariant &value)
此函数是为了与旧版本兼容。我们建议使用 DataInput 来控制演示中的属性。DataInput 通过避免使用 elementPath(设计的内部结构的引用)提供了设计和代码之间更强的合同。
设置由 elementPath 指定的对象上的属性(属性)的 value。属性名是属性的 脚本名称。
元素路径通过名称引用场景中的对象,例如 Scene.Layer.Camera
。在这里,即使场景包含其他具有默认相机名称的层(例如 Scene.Layer2.Camera
),也会选择正确的相机对象。
要引用另一个对象属性中存储的对象,可以使用点语法。这最常见的例子是,通过修改 SomeMaterial.diffusemap
选择的对象的 sourcepath
属性来更改纹理贴图源。
要访问子演示中的对象,请在每个子演示之前添加名字,后跟一个冒号,例如,SubPresentationOne:Scene.Layer.Camera
。
[槽]
void Q3DSPresentation::setDataInputValue(const QString &name, const QVariant &value, bool force = false)
设置演示中的数据输入元素 name 的 value。
数据输入提供了比 Q3DSElement 和 setAttribute() 更高级、由设计师驱动的替代品。它不是暴露出一大堆具有其内部引擎名称的属性,而是允许设计师决定哪些属性应该由应用程序可写,并且可以为这些数据输入条目分配自定义名称,从而在设计师和开发者之间形成良好的合同。
此外,数据输入还可以控制时间上下文对象(场景或组件)的时间轴和当前幻灯片。因此,它也是 goToSlide() 和 goToTime() API 系列以及 Q3DSSceneElement 的替代品。
使用 force 参数始终创建一个更改事件。(默认情况下,datainput 只有在设置值与先前提交的值不同时才将更改事件转发给运行时引擎。)请注意,无论 force 参数如何,动画产生的属性更改始终优先于数据输入控制。
另请参阅 DataInput。
[槽]
void Q3DSPresentation::setGlobalAnimationTime(qint64 milliseconds)
将全局动画时间设置为手动值 milliseconds(如果非零)或恢复正常计时器(如果为零)。
[slot]
void Q3DSPresentation::setPresentationActive(const QString &id, bool active)
根据
[signal]
void Q3DSPresentation::shaderCacheExported(bool success)
当着色器缓存导出完成后发出。参数
此函数首次在Qt 3D Studio 2.5中引入。
另请参阅 exportShaderCache() 和 shaderCacheFile。
[signal]
void Q3DSPresentation::shaderCacheLoadErrors(const QString &errors)
当着色器缓存加载失败时发出。参数
此函数首次在Qt 3D Studio 2.7中引入。
[signal]
void Q3DSPresentation::slideEntered(const QString &elementPath, unsigned int index, const QString &name)
当演示或组件中的幻灯片进入时发出。参数
此信号为每个组件发出,表示在一个幻灯片更改过程中可以多次发出。
[signal]
void Q3DSPresentation::slideExited(const QString &elementPath, unsigned int index, const QString &name)
当演示或组件中的幻灯片退出时发出。参数
此信号为每个组件发出,表示在一个幻灯片更改过程中可以多次发出。
[virtual]
Q3DSPresentation::~Q3DSPresentation()
析构函数。
void Q3DSPresentation::addImageProvider(const QString &providerId, QQmlImageProviderBase *provider)
设置用于通过:url方案请求的图像的
然后可以使用图像URL方案设置纹理源路径。例如 "image://colors/blue",其中 "image://" 告诉运行时查找图像提供程序,"colors" 是图像提供程序ID,其余的是提供程序用于创建图像的图像ID。
用法类似于 https://doc.qt.ac.cn/qt-5/qquickimageprovider.html 中的示例。
// Example implementation of a request function // This returns a 50 x 50 px size green texture as a QPixmap QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) { // Size needs to be more than 0,0 or nothing will be drawn if (size) *size = QSize(50, 50); QPixmap pixmap(50, 50); pixmap.fill(QColor("green")); return pixmap; } // Image providers are added to the presentation after viewer creation viewer.create(&window, &context); viewer.presentation()->addImageProvider("green", new ImageProvider()); // Use as texture viewer.presentation()->setAttribute("Scene.Layer.Rectangle.Material.diffusemap", "sourcepath", "image://green");
此函数首次在Qt 3D Studio 2.5中引入。
void Q3DSPresentation::createElement(const QString &parentElementPath, const QString &slideName, const QHash<QString, QVariant> &properties)
为指定由parentElementPath指定的元素添加一个新的子元素到带有slideName的幻灯片中。目前仅支持模型和组元素的创建。新的元素的属性由properties哈希表以名值对的形式指定。属性的名称与setAttribute()函数识别的名称相同。
还会为新模型元素创建一个引用材质元素。可以在properties哈希中指定源材质名称,该源材质必须存在于创建元素的同一个演示文稿中。
使用sourcepath
属性指定模型网格。这可能是一个指向.mesh
文件的本地文件路径,一个工作室网格原语(例如#Cube
),或使用createMesh()动态创建的网格名称。
可以将元素的属性/属性绑定到现有数据输入以进行控制。可以使用自定义的"controlledproperty"属性在properties哈希中指示控制绑定。属性值的格式为"$<datainputname> <attributename>",即"$Datainput_1 rotation $Datainput_2 diffusecolor"。如果数据输入名称与UIA文件中定义的数据输入不匹配,绑定没有影响。
元素在接收到elementsCreated()信号后即可以使用。
注意:如果您应用程序正在创建和删除大量元素,建议您在创建新元素时重用先前删除的元素名称。这是因为Qt 3D Studio ogl-runtime的内部字符串表实现出于性能原因不支持移除字符串,所以总是使用新的唯一名称会导致内存泄漏。
另请参阅createElements()、createMaterial()、createMesh()、elementsCreated()、setAttribute()和dataInputs()。
void Q3DSPresentation::createElements(const QString &parentElementPath, const QString &slideName, const QVector<QHash<QString, QVariant> > &properties)
为指定由parentElementPath指定的元素添加多个新子元素到带有slideName的幻灯片中。元素属性在properties中指定。有关更多详细信息,请参阅createElement()。
另请参阅Q3DSPresentation::createElement()和Q3DSPresentation::elementsCreated()。
void Q3DSPresentation::createMaterial(const QString &materialDefinition, const QString &subPresId = {})
按照materialDefinition参数创建材质,并将其放入由subPresId参数指定的子演示文稿中。如果subPresId为空,则材质将在主演示文稿中创建。
materialDefinition参数可以包含Qt 3D Studio材质定义文件的文件路径或Qt 3D Studio材质定义格式中的实际材质定义。材质定义是一个XML文件,它指定了材质属性。它们不是人为编写的 - 要创建一个,只需在Qt 3D Studio编辑器中创建一个新的基本材质并编辑检查器中的材质属性即可。属性存储在项目中materials
文件夹中的materialName.materialdef
文件中,您可以将其包含到应用程序的资源中,使用该方法使用。
创建后,该材质可以通过设置新元素的 material
属性为其创建材质的名称来用于通过 createElement() 创建的新元素。材质名称由材质定义的 name
属性指定。
一旦接收到对该材质的 materialsCreated() 信号,材质就准备好使用了。
注意: 如果您的应用频繁创建和删除很多材质,建议在创建新材质时重用先前删除的材质名称。这是因为 Qt 3D Studio ogl-runtime 内部的字符串表实现出于性能考虑不支持删除字符串,因此始终使用新唯一名称会导致内存泄漏。
注意: 在某些情况下,创建使用自定义着色器和具有米制纹理的材质可能会损坏其他元素上的纹理,如果场景中已经由现有基本材质使用了相同的纹理,因为基本材质不会为其纹理创建米级别。典型症状是在使用自定义材质创建新元素后,另一个元素上出现黑色纹理。
另请参阅:createMaterials(),createElement() 和 materialsCreated()。
void Q3DSPresentation::createMaterials(const QStringList &materialDefinitions, const QString &subPresId = {})
将 materialDefinitions 参数指定的多个材质创建到由 subPresId 参数指定的子演示中。如果 subPresId 为空,则材质将在主演示中创建。
有关更多详细信息,请参阅 createMaterial()。
另请参阅:createMaterial() 和 materialsCreated()。
void Q3DSPresentation::createMesh(const QString &meshName, const Q3DSGeometry &geometry)
创建由给定的 geometry 指定的网格。给定的 meshName 可以用作未来 createElement() 调用创建的模型元素的 sourcepath
属性值。
一旦接收到对该网格的 meshesCreated() 信号,网格就准备好使用了。
另请参阅:createElement(),createMeshes() 和 meshesCreated()。
void Q3DSPresentation::createMeshes(const QHash<QString, const Q3DSGeometry *> &meshData)
创建由给定的 meshData 指定的多个网格。数据是网格名称和几何图形对的。有关更多详细信息,请参阅 createMesh()。
提供的几何图形的所有权保留在调用者那里。
注意: 如果您的应用频繁创建和删除很多网格,建议在创建新网格时重用先前删除的网格名称。这是因为 Qt 3D Studio OpenGL Runtime 内部的字符串表实现出于性能考虑不支持删除字符串,因此始终使用新唯一名称会导致内存泄漏。
另请参阅:createMesh() 和 meshesCreated()。
QVector<Q3DSDataInput *> Q3DSPresentation::dataInputs() const
返回为此次演示定义的数据输入列表。使用setDataInputValue()接口通过数据输入名称设置数据输入值,或者直接调用Q3DSDataInput::setValue为特定数据输入设置值。
另请参阅setDataInputValue()和Q3DSDataInput。
QVector<Q3DSDataInput *> Q3DSPresentation::dataInputs(const QString &metadataKey) const
返回具有指定metadataKey的此次演示定义的数据输入列表。
另请参阅setDataInputValue()和Q3DSDataInput。
QVector<Q3DSDataOutput *> Q3DSPresentation::dataOutputs() const
返回此次演示定义的数据输出列表。使用Qt的connect()方法,将槽连接到需要DataOutput的valueChanged()信号,以便在DataOutput追踪的值更改时获得通知。
另请参阅Q3DSDataOutput。
void Q3DSPresentation::deleteElement(const QString &elementPath)
删除由elementPath指定的元素及其所有子元素。仅支持删除使用createElement()或createElements()动态创建的元素。
另请参阅deleteElements()和createElement。
void Q3DSPresentation::deleteElements(const QStringList &elementPaths)
删除由elementPaths指定的多个元素及其所有子元素。仅支持删除使用createElement()或createElements()动态创建的元素。
另请参阅deleteElement。
void Q3DSPresentation::deleteMaterial(const QString &materialName)
从演示中删除由materialName指定的材质。要删除子演示的材质,类似地使用子演示ID作为前缀,例如:"SubPresentationOne:MyMaterial"
。
仅支持删除使用createMaterial()或createMaterials()动态创建的材质。
另请参阅deleteMaterials()和createMaterial。
void Q3DSPresentation::deleteMaterials(const QStringList &materialNames)
从演示中删除由materialNames指定的材质。要删除子演示的材质,类似地使用子演示ID作为前缀,例如:"SubPresentationOne:MyMaterial"
。
仅支持删除使用createMaterial()或createMaterials()动态创建的材质。
另请参阅deleteMaterial。
void Q3DSPresentation::deleteMesh(const QString &meshName)
删除由 meshName 指定的网格。仅支持对使用 createMesh() 或 createMeshes() 动态创建的网格进行删除。
也请参阅 deleteMeshes() 和 createMesh()。
void Q3DSPresentation::deleteMeshes(const QStringList &meshNames)
删除由 meshNames 指定的网格。仅支持对使用 createMesh() 或 createMeshes() 动态创建的网格进行删除。
也请参阅 deleteMesh()。
void Q3DSPresentation::exportShaderCache(const QUrl &shaderCacheFile, bool binaryShaders)
将当前使用的着色器写入由 shaderCacheFile URL 指定的文件。如果 binaryShaders 属性为 true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。使用 shaderCacheFile 属性指定无着色器缓存文件或空或不有效的着色器缓存文件允许着色器生成。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
此函数首次在Qt 3D Studio 2.5中引入。
也请参阅 shaderCacheFile、shaderCacheExported 和 qCompress。
void Q3DSPresentation::exportShaderCache(bool binaryShaders)
导出当前使用的着色器并将结果缓存使用 base64 编码写入 stderr。此函数被提供作为从没有可写磁盘的环境中提取着色器缓存的一种方式。base64 输出需要转换回二进制表示形式才能用作着色器缓存文件。Qt 3D Studio Viewer 提供了命令行参数 --convert-shader-cache
来执行此转换。
如果 binaryShaders 属性为 true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。使用 shaderCacheFile 属性指定无着色器缓存文件或空或不有效的着色器缓存文件允许着色器生成。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
此函数首次在Qt 3D Studio 2.5中引入。
也请参阅 shaderCacheFile、shaderCacheExported 和 qCompress。
void Q3DSPresentation::exportShaderCache(QByteArray &cacheData, bool binaryShaders)
将当前使用的着色器导出到由 cacheData 参数指定的字节数组中。如果 binaryShaders 属性为 true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。
此函数首次在 Qt 3D Studio 2.6 中引入。
也请参阅 setShaderCacheData、shaderCacheExported 和 qCompress。
void Q3DSPresentation::exportShaderCache(const QUrl &shaderCacheFile, bool binaryShaders, int compressionLevel)
将当前使用的着色器写入由shaderCacheFile URL指定的文件中。如果binaryShaders属性为true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。导出的着色器使用compressionLevel指定的压缩级别进行压缩。-1
表示默认的qCompress压缩级别。0
表示不压缩。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。使用 shaderCacheFile 属性指定无着色器缓存文件或空或不有效的着色器缓存文件允许着色器生成。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
此函数首次在Qt 3D Studio 2.7中引入。
也请参阅 shaderCacheFile、shaderCacheExported 和 qCompress。
void Q3DSPresentation::exportShaderCache(bool binaryShaders, int compressionLevel)
导出当前使用的着色器并将结果缓存使用 base64 编码写入 stderr。此函数被提供作为从没有可写磁盘的环境中提取着色器缓存的一种方式。base64 输出需要转换回二进制表示形式才能用作着色器缓存文件。Qt 3D Studio Viewer 提供了命令行参数 --convert-shader-cache
来执行此转换。
如果binaryShaders属性为true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。导出的着色器使用compressionLevel指定的压缩级别进行压缩。-1
表示默认的qCompress压缩级别。0
表示不压缩。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。使用 shaderCacheFile 属性指定无着色器缓存文件或空或不有效的着色器缓存文件允许着色器生成。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
此函数首次在Qt 3D Studio 2.7中引入。
也请参阅 shaderCacheFile、shaderCacheExported 和 qCompress。
void Q3DSPresentation::exportShaderCache(QByteArray &cacheData, bool binaryShaders, int compressionLevel)
将当前使用的着色器导出到由cacheData参数指定的字节数组中。如果binaryShaders属性为true
,则导出预编译的着色器。否则,导出压缩的着色器源代码。导出的着色器使用compressionLevel指定的压缩级别进行压缩。-1
表示默认的qCompress压缩级别。0
表示不压缩。
导出完成时,会发出 shaderCacheExported 信号。
应在所有应在应用程序启动时初始化的着色器都已初始化的应用程序执行点处执行导出着色器缓存。
注意: 仅支持未从着色器缓存最初加载着色器的情况下导出着色器缓存。
此函数首次在Qt 3D Studio 2.7中引入。
也请参阅 setShaderCacheData、shaderCacheExported 和 qCompress。
QVariantList Q3DSPresentation::getDataInputs() const
返回为此次演示定义的数据输入列表。使用setDataInputValue()接口通过数据输入名称设置数据输入值,或者直接调用Q3DSDataInput::setValue为特定数据输入设置值。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
另请参阅setDataInputValue()和Q3DSDataInput。
QVariantList Q3DSPresentation::getDataInputs(const QString &metadataKey) const
返回具有指定metadataKey的此次演示定义的数据输入列表。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
另请参阅setDataInputValue()和Q3DSDataInput。
QVariantList Q3DSPresentation::getDataOutputs() const
*
Q3DSPresentation::getDataOutputs 返回DataOutput。返回定义为此演示的数据outputs的列表。使用Qt的connect()方法将插槽连接到所需的DataOutput中的valueChanged()信号,以在DataOutput跟踪的值发生变化时接收通知。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
另请参阅Q3DSDataOutput。
void Q3DSPresentation::preloadSlide(const QString &elementPath)
将标识为elementPath的幻灯片资源预载到内存中。所需的所有组件资源都将异步加载。
elementPath是演示和组件中幻灯片的标识符。
演示、组件和幻灯片之间用":"分隔,例如 My-presentation:Scene.Layer.Speedometer:Main-slide。
如果elementPath不包含任何":",则表示主演示和主组件中的幻灯片名称。如果包含一个":",则表示主演示中的组件:幻灯片,如果是两个":",则表示演示:组件:幻灯片。
如果您想指定子演示中的主幻灯片,您需要指定完整路径。例如 My-sub-presentation:Scene:Main-slide。
此函数仅在启用延迟加载时有效。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
void Q3DSPresentation::setShaderCacheData(const QByteArray &shaderCache)
指定用于初始化着色器的shaderCache数据。在展示开始之前必须调用此方法。使用缓存的着色器可以提高初始化速度。
如果没有调用此方法并且没有设置shaderCacheFile属性,则所有着色器将正常生成。
如果调用此方法,则不支持生成新的着色器缓存。
此函数首次在 Qt 3D Studio 2.6 中引入。
另请参阅 exportShaderCache() 和 shaderCacheFile。
uint Q3DSPresentation::textureId(const QString &elementPath)
返回由elementPath指定的图层或图像关联的OpenGL纹理ID。
例如,Scene.Layer
返回图层的纹理ID,而Scene.Layer.Rectangle.Material.diffusemap
返回图像或子演示的纹理ID。
此函数首次在Qt 3D Studio 2.5中引入。
uint Q3DSPresentation::textureId(const QString &elementPath, QSize &size, GLenum &format)
返回由elementPath指定的图层或图像关联的OpenGL纹理ID。纹理的size和format将返回到对应的参数中。
例如,Scene.Layer
返回图层的纹理ID,而Scene.Layer.Rectangle.Material.diffusemap
返回图像或子演示的纹理ID。
此函数首次在Qt 3D Studio 2.7中引入。
void Q3DSPresentation::unloadSlide(const QString &elementPath)
将内存中由elementPath标识的幻灯片资源卸载。如果当前幻灯片已被更改,则资源将在更改时卸载。
elementPath是演示和组件中幻灯片的标识符。
演示文稿、组件和幻灯片之间用英文冒号":"分隔,例如 My-presentation:speedometer:main-slide。
如果elementPath不包含任何":",则指定主演示文稿和主组件中幻灯片的名称;如果包含一个":",则指定主演示文稿中的组件:幻灯片,如果包含两个":",则指定演示文稿:Scene.Layer.Speedometer:Main-slide。
如果您想指定子演示中的主幻灯片,您需要指定完整路径。例如 My-sub-presentation:Scene:Main-slide。
此函数仅在启用延迟加载时有效。
注意: 此函数可通过元对象系统从 QML 调用。请参阅 Q_INVOKABLE。
在特定的Qt许可下可用。
了解更多信息。