98.3 开发SP渲染插件

如果能通过切换一套Shader参数值,就可以将画面切换到另一种画风,是不是很方便呢!

只需要编写插件获取、修改Shader参数为一套数值,就可以实现这个功能。

仍然在helloworld插件的基础上,将自定义按钮的点击事件,修改为设置Shader参数的功能。

1.创建插件

复制helloworld插件文件夹,改名为shader-normalize,拷贝下面代码: toolbar.qml描述了自定义按钮的属性,代码如下:

import QtQuick 2.7
import AlgWidgets 2.0
import AlgWidgets.Style 2.0

AlgButton
{
    tooltip: "规范化shader,自动填充参数"
    iconName: ""
    text: "Shader规范化"
}

main.qmltoolbar.qml描述的自定义按钮,添加到工具栏,并指定按钮点击事件,代码如下:

import QtQuick 2.7
import Painter 1.0

// Root object for the plugin
PainterPlugin
{
    // Disable update and server settings
    // since we don't need them
    tickIntervalMS: -1 // Disabled Tick
    jsonServerPort: -1 // Disabled JSON server

    // 插件加载完毕回调
    Component.onCompleted:
    {
        // 将 toolbar.qml 描述的按钮,添加到工具栏
        var InterfaceButton = alg.ui.addToolBarWidget("toolbar.qml");

        // 给按钮加事件
        if( InterfaceButton )
        {
            InterfaceButton.clicked.connect( normalizeShader );
        }
    }

    function normalizeShader()
    {
        alg.log.info( "normalizeShader")

        //输出shader参数组列表(参数是分组的)
        alg.log.info(alg.shaders.groups(0));

        //遍历所有shader实例,输出shader名字和id
        alg.shaders.instances().forEach(function(shader) {
            alg.log.info(shader.label + ": " + shader.id);
        });

        //找到使用这个shader的材质(测试发现没有被使用??)
        var materials = alg.shaders.materials(0);
        for (var key in materials) {
            alg.log.info("%1: %2".arg(key).arg(materials[key].value));
        }

        //打印shader所有参数
        //var parameters = alg.shaders.parameters(0);
        //alg.log.info(parameters);
        //在面板上找到group,然后打印shader指定group的参数
        alg.log.info(alg.shaders.parameters(0, "Coat"));

        //获取参数值
        var parameter=alg.shaders.parameter(0, "sssScale");
        alg.log.info("%1: %2".arg(parameter.description.label).arg(parameter.value));

        //设置shader参数
        alg.shaders.setParameters(0, {
            coatEnabled: true,
            ao_intensity: 0.5,
            sssScale: 0.1
        });

    }
}

2.测试插件

点击菜单 JavaScript-Reload Plugins Folder刷新插件列表,默认就会启用新创建的插件。 点击自定义的工具栏按钮,就会修改Shader参数为指定的一套数值。

Copyright © captainchen all right reserved,powered by GitbookFile Modify: 2021-08-20 17:33:25

results matching ""

    No results matching ""

    results matching ""

      No results matching ""