기본적으로 3Ds Max 9의 "Standard"재질에 몇 가지 속성을 추가하려고합니다. 실제로이 작업을 최대 스크립트를 통해 수행 할 수는 있지만 실제로 우리의 수출업자를 깨고있다.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'이벤트를 사용하여 숨겨진 항목에 연결했습니다. 그래서 그것들은 올바르게 작동하지만, diffuse와 specular와 같은 것들에 대한 머티리얼 맵은 작동하지 않습니다 (이것이 AFAIK를 텍스처링하는 유일한 방법입니다).
자료 유형에 이러한 몇 가지 설정을 추가해야하므로 '위임자'클래스 내의 모든 데이터를 내보낼 수 있습니다 (기본 상속이 너무 많습니다).
감사