Fondamentalement, j'essaie juste d'ajouter quelques propriétés supplémentaires au matériau "Standard" dans 3Ds Max 9. J'ai réussi à accomplir cela à travers le script max, mais il est en train de casser notre exportateur.Comment étendre un matériau 3Ds Max correctement
L'exportateur fonctionne correctement pour tout ce qui est écorché avec le matériau normal "Standard", mais la version étendue semble cacher les propriétés de la classe de base de l'exportateur.
Ce que j'est jusqu'à présent ceci:
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
)
)
)
En déclarant les variables moi-même, l'exportateur peut les lire, mais cela ne fait un lien entre les valeurs étant fixées par l'interface utilisateur. Pour résoudre ce problème, j'ai utilisé les événements 'sur XXX get/set' pour créer un lien vers les éléments cachés. Donc, ceux qui fonctionnent maintenant correctement, mais les cartes matérielles pour des choses comme diffuses et spéculaires ne fonctionnent pas (ce qui est la seule façon de texturer la chose AFAIK).
Comment devrais-je ajouter ces deux paramètres à un type de matériau, afin qu'il exporte également toutes les données de la classe 'delegate' (l'héritage de base est-il trop important à demander)?
Merci