2009-05-14 10 views
0

基本的に、私は3Ds Max 9の "Standard"マテリアルにいくつかのプロパティを追加しようとしています。実際にこれをmaxスクリプトで達成することはできましたが、私たちの輸出業者を壊しています。3Ds Maxマテリアルを正しく拡張するには

エクスポータは通常の「標準」マテリアルでスキニングされたものであれば正常に動作しますが、拡張バージョンではエクスポータから基本クラスのプロパティが隠れているようです。

私はこれまで持っていることはこれです:変数を自分自身を宣言することにより


plugin material Standard_WithOutlines 
name:"Standard & Outlines" 
classID:#(0x73212413, 0x1ca9e3e6) 
extends:Standard replaceUI:false version:1 
(
    parameters shaderParameters 
    (
     diffuse type:#color 
     glossiness type:#float 
     specular type:#color 
     specularLevel type:#float 
     selfIllumColor type:#color 
     selfIllumAmount type:#float 
     opacity type:#float 

     on diffuse get val do delegate.diffuse 
     on glossiness get val do delegate.glossiness/100.0 
     on specular get val do delegate.specular 
     on specularLevel get val do delegate.specularLevel 
     on selfIllumColor get val do delegate.selfIllumColor 
     on selfIllumAmount get val do delegate.selfIllumAmount 
     on opacity get val do delegate.opacity/100.0 

     on diffuse set val do delegate.diffuse = val 
     on glossiness set val do delegate.glossiness = val * 100.0 
     on specular set val do delegate.specular = val 
     on specularLevel set val do delegate.specularLevel = val 
     on selfIllumColor set val do delegate.selfIllumColor = val 
     on selfIllumAmount set val do delegate.selfIllumAmount = val 
     on opacity set val do delegate.opacity = val * 100.0 
    ) 

    parameters MainParams rollout:ExtendedMatRollout 
    (
     ShowOutlining type:#boolean animatable:false default:false ui:outline_Enabled 
     OutlineColour type:#color animatable:false default:(color 0 0 0) ui:outline_Colour 
     OutlineThickness type:#float animatable:false default:5 ui:outline_Thickness 
    ) 

    rollout ExtendedMatRollout "Extended Parameters" 
    (
     groupBox outlinegrp "Outlining" pos:[8,0] width:312 height:62 
     checkbox outline_Enabled "Enabled" pos:[18,16] width:128 height:16 
     colorPicker outline_Colour "Colour:" pos:[160,34] width:56 height:20 enabled:ShowOutlining 
     spinner outline_Thickness "Thickness:" pos:[50,36] width:80 height:16 enabled:ShowOutlining range:[0,100,0] 
     on outline_Enabled changed state do 
     (
      outline_Colour.enabled = state 
      outline_Thickness.enabled = state 
     ) 

    ) 
)

、輸出国はそれらを読むことができるが、これは実際にUIによって設定された値にリンクしませんでした。それを解決するために、私は 'on XXX get/set'イベントを使って隠しアイテムにリンクしました。だから今は正しく動作しますが、拡散と鏡面反射のようなもののマテリアルマップは機能しません(AFAIKのテクスチャを作る唯一の方法です)。

「デリゲート」クラス内のすべてのデータをエクスポートするように、これらの設定をマテリアルタイプに追加するにはどうすればよいですか(基本的な継承はあまりにも多くありません)。

おかげ

答えて

0

二possiblities:

  1. あなたの輸出国は、すべてのparamblocksを列挙していますか?私はスクリプト内のあなたのパラメータが追加のpblockになると思います。あなたの輸出業者があなたの問題かもしれないpblock 0を見ているだけの場合。

  2. パラメータがスクリプトとデリゲートで同じ名前になる前は、この使用法は見ていませんでした。私は、あなたは通常、スクリプト内に新しいパラメータを作成し、異なる名前を使用してデリゲートのパラメータを適切に割り当てることになっていると思います。少なくとも、それは私がそれをした方法です。

0

ここには基本的な拡張シェーダがあります。 私は、問題はあなたのロールアウトがパラメータに指定されていないということです。 定義されていない場合は、見つからない場合は、exporter getはすべてバグです。

plugin material Matte name:"Matte" classID:#(0x61108483, 0x4d218a72) extends:Standard replaceUI:true version:1 
( 
    parameters main rollout:params 
    (
     kdColor type:#color default:[90,90,90] ui:mkdColor 
     on kdColor set val do delegate.diffuse_color = val 
    ) 

    rollout params "Matte Parameters" 
    (
     -- Basic matte parameters 
     group "Basic Parameters" (
      colorpicker mkdColor "Diffuse: " across:2 
     ) 

    ) 
) 
関連する問題