USD着色之USD的材质具有的属性


  • 网站研运

    最近在研究USD材质和着色,稍微看了一下USD材质的相关属性。大致了解了USD材质的相关属性。看来USD的材质节点网络是相当复杂的。通过材质的连接,可以做到属性程序化生成。

    具体来说相当复杂,这里先贴个图吧。
    1.png

    它支持下面的材质:

    clearcoat
    clearcoatRoughness
    diffuseColor
    displacement
    emissiveColor
    ior
    metallic
    normal
    occlusion
    opacity
    roughness
    specularColor
    useSpecularWorkflow
    

    这就是我们在USD的例子中进行修改得到的测试文件:

    #usda 1.0
    (
        upAxis = "Y"
    )
    
    def Xform "TexModel" (
        kind = "component"
    )
    {
        def Mesh "card"
        {
            float3[] extent = [(-430, -145, 0), (430, 145, 0)]
            int[] faceVertexCounts = [4]
            int[] faceVertexIndices = [0, 1, 2, 3]
            rel material:binding = </TexModel/boardMat>
            point3f[] points = [(-430, -145, 0), (430, -145, 0), (430, 145, 0), (-430, 145, 0)]
            texCoord2f[] primvars:st = [(0, 0), (1, 0), (1, 1), (0, 1)] (
                interpolation = "varying"
            )
        }
    
        def Material "boardMat"
        {
            token inputs:frame:stPrimvarName = "st"
            token outputs:surface.connect = </TexModel/boardMat/PBRShader.outputs:surface>
    
            def Shader "PBRShader"
            {
                uniform token info:id = "UsdPreviewSurface"
                color3f inputs:diffuseColor.connect = </TexModel/boardMat/diffuseTexture.outputs:rgb>
                float inputs:metallic = 0
                float inputs:roughness = 0.4
                float inputs:opacity = 1
                //float inputs:ior = 0.1
                float inputs:clearcoat = 0.6
                float inputs:clearcoatRoughness = 1
                token outputs:surface
            }
    
            def Shader "stReader"
            {
                uniform token info:id = "UsdPrimvarReader_float2"
                token inputs:varname.connect = </TexModel/boardMat.inputs:frame:stPrimvarName>
                float2 outputs:result
            }
    
            def Shader "diffuseTexture"
            {
                uniform token info:id = "UsdUVTexture"
                asset inputs:file = @USDLogoLrg.png@
                float2 inputs:st.connect = </TexModel/boardMat/stReader.outputs:result>
                float3 outputs:rgb
            }
        }
    }
    

    BTW:我们是用PyCharm做USD的开发哦。有关USD更多的知识我可以稍后整理出来。


Log in to reply
 

走马观花

最近的回复

  • H
    Toou 2D 拿来即用,为简单而生。

    简称T2D,是一款采用自身模块规范编写的轻量级UI框架,遵循Qt书写与组织形式门槛极低无需深入学习简单易用可拿来即用,丰富的控件模块适合界面的快速开发,让程序人员拥有更多的精力来实现业务逻辑与算法。

    统一交互规范,丰富的Ui控件几十种常用控件放弃了Qt Controls 及 Controls 2 来提高性能。

    完善的主题系统,业务逻辑与界面主题设计分离,可通过简单修改变量自定义主题皮肤。灵活的多主题皮肤绑定机制、在不需要重启App即实现一键换肤

    ini皮肤配置规则与每一个控件融合。可在应用内配置也可在应用外动态扩展配置。

    框架自动化安装支持动态库、静态库多模式编译。使用方便更安全更自由。

    提供丰富Demo、全面的帮助文档,Api查阅快速方便。项目必备开源框架!

    已经集成最新版 Font Awesome 4.7

    开源地址:https://github.com/ShowFL/Toou-2D

    read more
  • 刚刚毕业,工作用QT开发,以后有问题多多请教各位前辈😬 抱拳了。

    read more

关注我们

微博
QQ群