制作浏览Maya内置图标小工具,用来获取Maya内置图标



  • 最近我开始在Maya工作啦。Maya是一款优秀的三维软件,可以处理布景、建模、纹理、装备、渲染等操作。而且它可以支持C++和Python的开发。文档也是非常多的(参考这里)。

    我们最近的工作呢,是想要利用Maya的资源,尤其是图片资源,来制作新的界面。由于Maya是基于Qt开发的,因此要获取图片资源,除了Maya文件夹里D:\Develop\Autodesk\Maya2018\icons文件之外,还需要从资源文件中获取到。而资源文件一般是编译成C++代码放在程序的某个位置了,所以我们一般是看不到的。我们就开始想,既然Maya能够成功地读取并且显示,我们通过Maya的插件开发,不也能够获取并且显示到需要的图标吗?由于Qt的经验,我开始研究通过写Maya插件来获取到Maya资源文件的方法。

    1. 新打开Maya软件,点击右下角的脚本图标,我们开始输入脚本:
      ad141613-63a5-4a93-9b79-3d6ca44da782-image.png

    2、我们通过Qt for Python来从Maya中获取到图标信息。由于Maya是构建在Qt 5.6.1上的,当时还不叫Qt for Python,而是PySide2。当然用法也是差不多的。更重要的是Qt 5.6.1已经支持QML了,可以支持QML的基本绘图方法。所以我们打算结合Qt for Python和QML来实现相关的功能。其实这样一组合就和Maya没有什么关系了。剩下的都是Qt的技术。
    我们的脚本是这样的:

    from PySide2.QtQuick import QQuickView
    from PySide2.QtCore import QDir, QFileInfo, QUrl
    
    def getMayaResourceFileList( nameFilter ):
        dir = QDir( ":/" )
        return dir.entryList( nameFilter )
    
    view = QQuickView( )
    view.setResizeMode( QQuickView.SizeViewToRootObject )
    mainUrl = QUrl.fromLocalFile( "C:/Users/huawei/Documents/ImageGridView.qml" )
    view.setSource( mainUrl )
    view.show( )
    rootItem = view.rootObject( )
    if rootItem != None:
        rootItem.setProperty( "prefix", "qrc:/" )
        rootItem.setProperty( "model", getMayaResourceFileList( '*.png' ) )
    

    其中C:/Users/huawei/Documents/ImageGridView.qml是我本地的路径,可以改为任意的路径甚至是http路径呢。

    1. 我们还得完成ImageGridView.qml文件内容,其实也非常简单,大概是这样的:
    import QtQuick 2.6
    
    GridView
    {
        id: root
        width: 320
        height: 480
        cellWidth: 80
        cellHeight: 80
    
        delegate: Image
        {
            width: 80
            height: 80
            source: root.prefix + modelData
    
            Text
            {
                anchors
                {
                    left: parent.left
                    right: parent.right
                    bottom: parent.bottom
                }
                text: modelData
                wrapMode: Text.Wrap
            }
        }
        model: 40
        property string prefix
    }
    

    22ae8472-0bb3-4342-ae72-e1cb54bd87a7-image.png

    4、这些文件准备就位了!我们打开一下Maya软件,看看结果~
    f430332d-c824-47d3-8d1c-b17b3c53bc97-image.png
    它是一个可滑动的界面,每行显示4列,然后下面是文字的内容,展示了图标的名称。我们可以借此工具拿到我们感兴趣的图标的路径,然后应用到我们制作的界面上。其实,如果你觉得图片好,也可以通过QImage以及QPixmap给转存出去自己用。

    如果你觉得文章很棒,记得点赞哦。


Log in to reply
 

走马观花

最近的回复

  • 这张图或许阐述了这个问题。
    有效打造个人品牌.png

    其实对于我们职场人员,尤其是程序员,都有很强的作用。我们虽然产品意识比较弱,但是我们对产品的敏感性强,尤其是我们有制作过产品的经验,这反而是一个优势。

    read more
  • @jiangcaiyang 给你一个大大的赞!
    论坛最近打算再次启用iframely服务了。试试看!

    https://community.nodebb.org/topic/4401

    read more

关注我们

微博
QQ群