ユーザ用ツール

サイト用ツール


opengl:maya_shaderfx

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
opengl:maya_shaderfx [2014/04/22 18:05] – [ShaderFX とは] ogaopengl:maya_shaderfx [2014/04/23 01:06] (現在) – [Advanced Mode] oga
行 27: 行 27:
  
  
-===== Attribute =====+===== Vertex Attribute ===== 
 + 
 + 
 + 
 + 
 +===== Advanced Mode ===== 
 + 
 +Advanced Mode に切り替えると、よりプリミティブなノードを扱うことが可能で Group の内部構造の編集ができるようになります。 
 + 
 +  - ShaderFX を開く 
 +  - 任意の場所で右ボタンから Tools → Toggle Advanced Mode 
 + 
 +Group Node の上に四角いボタンが表示されるようになるので、click すると Group を展開できます。 
 + 
 + 
 +===== Data Access ===== 
 + 
 +ShaderFX 内部情報にアクセスするためには shaderfx コマンドを使用します。 
 + 
 +内部の情報を読み出すプログラム。 
 + 
 +<code> 
 +// ShaderFX の内部情報取得 
 + 
 +global proc a7ListShaderFx() 
 +
 +    string  $node_name= "ShaderfxShader1"; 
 + 
 +    int $count= `shaderfx -sfxnode $node_name -getNodeCount`; 
 +    int $root= `shaderfx -sfxnode $node_name -getHwShaderNodeRootGrpID`; 
 +    int $hwnode= `shaderfx -sfxnode $node_name -getHwShaderNodeID`; 
 +    print ( "count=" + $count + "\n" ); 
 +    print ( "root=" + $root + "\n" ); 
 +    print ( "hwnode=" + $hwnode + "\n" ); 
 + 
 +    string  $indent= ""; 
 +    int $ni; 
 +    for( $ni= 0 ; $ni< $count ; $ni++ ){ 
 +        int $uid= `shaderfx -sfxnode $node_name -getNodeUIDFromIndex $ni`; 
 +        string  $class_name= `shaderfx -sfxnode $node_name -getNodeClassName $uid`; 
 +        string  $name= `shaderfx -sfxnode $node_name -getPropertyValue $uid "name"`; 
 +        string  $flag= ""; 
 +        if( `shaderfx -sfxnode $node_name -isGroupStart $uid` ){ 
 +            int $gend_uid= `shaderfx -sfxnode $node_name -getGroupEndUID $uid`; 
 +            $flag+= "* Group START from " + $uid + " to " + $gend_uid; 
 +            print "group start {\n"; 
 +            $indent= "  "; 
 +        } 
 +        if( `shaderfx -sfxnode $node_name -isGroupEnd $uid` ){ 
 +            $flag+= "* Group END"; 
 +        } 
 +        if( `shaderfx -sfxnode $node_name -isGroupFromDisk $uid` ){ 
 +            int $value= `shaderfx -sfxnode $node_name -isGroupFromDisk $uid`; 
 +            $flag+= "* Group FROM DISK (" + $value + ")"; 
 +        } 
 +        print ( $indent + $uid + ": <" + $class_name + "> " + $name + " " + $flag +  "\n" ); 
 + 
 +        // Properties 
 +        string  $prop_list[]= `shaderfx -sfxnode $node_name -listProperties $uid`; 
 +        for( $prop_name in $prop_list ){ 
 +            string  $prop_type= `shaderfx -sfxnode $node_name -getPropertyType $uid $prop_name`; 
 +            switch( $prop_type ){ 
 +            case "float4": 
 +                print ( $indent + "  " + $prop_name + " <" + $prop_type + ">  skip...\n" ); 
 +                break; 
 +            case "stringlist":
 +                    string  $prop_value[]= `shaderfx -sfxnode $node_name -getPropertyValue $uid $prop_name`; 
 +                    print ( $indent + "  " + $prop_name + " <" + $prop_type + ">=\n" ); 
 +                    for( $si in $prop_value ){ 
 +                        print ( $indent + "     [" + $si + "]\n" ); 
 +                    } 
 +                } 
 +                break; 
 +            default: { 
 +                    string  $prop_value= `shaderfx -sfxnode $node_name -getPropertyValue $uid $prop_name`; 
 +                    print ( $indent + "  " + $prop_name + " <" + $prop_type + ">= [" + $prop_value + "]\n" ); 
 +                } 
 +                break; 
 +            } 
 +        } 
 + 
 +        // Sockets 
 +        int $socket_type; 
 +        for( $socket_type= 0 ; $socket_type < 2 ; $socket_type++ ){ 
 +            int $socket_count= `shaderfx -sfxnode $node_name -getSocketCount $uid $socket_type`; 
 +            int $si; 
 +            if( $socket_count != 0 ){ 
 +                switch( $socket_type ){ 
 +                case 0: print ( $indent + "  ** input socket\n" ); break; 
 +                case 1: print ( $indent + "  ** output socket\n" ); break; 
 +                } 
 +            } 
 +            for( $si= 0 ; $si < $socket_count ; $si++ ){ 
 +                string $socket_name= `shaderfx -sfxnode $node_name -getSocketName $uid $socket_type $si`; 
 +                string $socket_stype= `shaderfx -sfxnode $node_name -getSocketType $uid $socket_type $si`; 
 +                int $connected_count= `shaderfx -sfxnode $node_name -getConnectedSocketCount $uid $socket_type $si`; 
 +                print ( $indent + "    socket("+ $si + "): " + $socket_name + " <" + $socket_stype + "> c:" + $connected_count + "\n" ); 
 +                int $ci; 
 +                for( $ci= 0 ; $ci < $connected_count ; $ci++ ){ 
 +                    string $connected_node= `shaderfx -sfxnode $node_name -getConnectedNodeID $uid $socket_type $si $ci false`; 
 +                    string $connected_id= `shaderfx -sfxnode $node_name -getConnectedSocketIndex $uid $socket_type $si $ci false`; 
 +                    print ( $indent + "      connected: uid=" + $connected_node + "  socket(" + $connected_id + ")\n" ); 
 +                } 
 +            } 
 +        } 
 + 
 +        if( `shaderfx -sfxnode $node_name -isGroupEnd $uid` ){ 
 +            $indent= ""; 
 +            print "}\n"; 
 +        } 
 +    } 
 + 
 +
 +</code>
  
  
opengl/maya_shaderfx.1398157537.txt.gz · 最終更新: 2014/04/22 18:05 by oga

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki