Надо научиться менять определенные параметры материалов.
Вот примерный код, но он не работает:
(
------------------------------------
fn edit_maps mat =
(
if mat.numsubs != 0 then
(
for i = 1 to mat.numsubs do
(
if mat != undefined then
(
if classof mat == SubAnim then
(
if superclassof mat.object == Missing_TextureMap then
(
print mat
)
)
edit_maps mat
)
)
)
)
------------------------------------
for o in objects do
(
if o.material != undefined do
(
edit_maps o.material
)
)
)
вот его упрощенная и немного измененная версия:
(
------------------------------------
fn edit_maps mat =
(
for i = 1 to mat.numsubs do
(
if mat != undefined then
(
if classof mat == Missing_TextureMap do print mat
edit_maps mat
)
)
)
------------------------------------
for o in objects do edit_maps o.material
)
В данном случае нужно найти все "Missing_TextureMap" и удалить их или заменить на какие-нить другие, например на Cellular () или просто распечатать.
Если обращаться к материалу напрямую, то все работает:
iskindof materialsEditor[2].diffuseMap Missing_TextureMap - хоть так
classOf materialsEditor[2].diffuseMap == Missing_TextureMap или так,
то все работает, легко находит Missing_TextureMap и меняет.
Вышеописанный способ, при запросе СlassOf выдает SubAnim - везде.
Просто офигеть. Помогите, пожалуйста, разобраться.
(
------------------------------------
fn edit_maps mat =
(
if mat.numsubs != 0 then
(
for i = 1 to mat.numsubs do
(
if mat[i] != undefined then
(
if classof mat[i] == SubAnim then
(
if classof mat[i].value == Missing_TextureMap then
(
print mat[i].value
mat[i].value=undefined
--mat[i].value=cellular();
)
)
edit_maps mat[i]
)
)
)
)
------------------------------------
for o in objects do
(
if o.material != undefined do
(
edit_maps o.material
)
)
)
Спасибо igorznag! все заработало, но есть небольшое продолжение)
Столкнулся с проблемой в материале VrayDirt. Дело в том, что вышеприведенный перебор свойств материала почему-то не видит материалы на .texmap_radius , .texmap_occluded_color, .texmap_unoccluded_color, .texmap_reflection_glossiness.
К примеру, если на диффуз положить VrayDirt и обратиться через numsubs к диффузу, то получим 10:
meditmaterials[1].diffuseMap.numsubs
Соответсвенно, если у нас в сцене есть VrayDirt с Missing_TextureMap, то вышеприведенный алгоритм Missing_TextureMap просто не увидит (.
Можно ли как-нибудь усовершенствовать код, чтобы были видны все материалы, в том числе и подматериалы VrayDirt???
Как вариант - уже написал доп. функцию, которая проверяет на наличие VrayDirt и и справляет ошибки, если они есть. Но это как-то сложно получается и не автоматизируется. Шаг в сторону и опять дописывать функции) - нехорошо.
Может быть есть вариант, как-нить через функцию getPropNames организовать?
Или никак?
Помогите усовершенствовать, пожалуйста, если это возможно!
Взамен потом могу поделиться исходником )
Можно ли как-нибудь усовершенствовать код, чтобы были видны все материалы, в том числе и подматериалы VrayDirt???
Может быть есть вариант, как-нить через функцию getPropNames организовать?
Vray у меня не установлен, поэтому помочь не могу.
Может быть исходник скрипта set Bitmap Parameters чем-то поможет.
Доступ к резюме доступен только по пакетному доступу HR менеджерам зарегистрированных компаний. Узнать о вариантах корпоративных пакетов можно по ссылке.
aly8
Надо научиться менять определенные параметры материалов.
Вот примерный код, но он не работает:
(
------------------------------------
fn edit_maps mat =
(
if mat.numsubs != 0 then
(
for i = 1 to mat.numsubs do
(
if mat != undefined then
(
if classof mat == SubAnim then
(
if superclassof mat.object == Missing_TextureMap then
(
print mat
)
)
edit_maps mat
)
)
)
)
------------------------------------
for o in objects do
(
if o.material != undefined do
(
edit_maps o.material
)
)
)
вот его упрощенная и немного измененная версия:
(
------------------------------------
fn edit_maps mat =
(
for i = 1 to mat.numsubs do
(
if mat != undefined then
(
if classof mat == Missing_TextureMap do print mat
edit_maps mat
)
)
)
------------------------------------
for o in objects do edit_maps o.material
)
В данном случае нужно найти все "Missing_TextureMap" и удалить их или заменить на какие-нить другие, например на Cellular () или просто распечатать.
Если обращаться к материалу напрямую, то все работает:
iskindof materialsEditor[2].diffuseMap Missing_TextureMap - хоть так
classOf materialsEditor[2].diffuseMap == Missing_TextureMap или так,
то все работает, легко находит Missing_TextureMap и меняет.
Вышеописанный способ, при запросе СlassOf выдает SubAnim - везде.
Просто офигеть. Помогите, пожалуйста, разобраться.
igorznag
aly8
aly8
Столкнулся с проблемой в материале VrayDirt. Дело в том, что вышеприведенный перебор свойств материала почему-то не видит материалы на .texmap_radius , .texmap_occluded_color, .texmap_unoccluded_color, .texmap_reflection_glossiness.
К примеру, если на диффуз положить VrayDirt и обратиться через numsubs к диффузу, то получим 10:
meditmaterials[1].diffuseMap.numsubs
если же запросить свойства, то получим гораздо больше:
showproperties meditmaterials[1].diffuseMap
.radius : worldUnits
.occluded_color : RGB color
.unoccluded_color : RGB color
.distribution : float
.falloff : float
.subdivs : integer
.bias : point3
.affect_alpha : boolean
.ignore_for_gi : boolean
.consider_same_object_only : boolean
.invert_normal : boolean
.work_with_transparency : boolean
.environment_occlusion : boolean
.mode : integer
.reflection_glossiness : float
.affect_reflection_elements : boolean
.texmap_radius : texturemap
.texmap_radius_on : boolean
.texmap_radius_multiplier : float
.texmap_occluded_color : texturemap
.texmap_occluded_color_on : boolean
.texmap_occluded_color_multiplier : float
.texmap_unoccluded_color : texturemap
.texmap_unoccluded_color_on : boolean
.texmap_unoccluded_color_multiplier : float
.texmap_reflection_glossiness : texturemap
.texmap_reflection_glossiness_on : boolean
.texmap_reflection_glossiness_mult : float
.excludeList : node array
.includeList : node array
.resultAffectExcludeList : node array
.resultAffectIncludeList : node array
false
Соответсвенно, если у нас в сцене есть VrayDirt с Missing_TextureMap, то вышеприведенный алгоритм Missing_TextureMap просто не увидит (.
Можно ли как-нибудь усовершенствовать код, чтобы были видны все материалы, в том числе и подматериалы VrayDirt???
Как вариант - уже написал доп. функцию, которая проверяет на наличие VrayDirt и и справляет ошибки, если они есть. Но это как-то сложно получается и не автоматизируется. Шаг в сторону и опять дописывать функции) - нехорошо.
Может быть есть вариант, как-нить через функцию getPropNames организовать?
Или никак?
Помогите усовершенствовать, пожалуйста, если это возможно!
Взамен потом могу поделиться исходником )
igorznag
Может быть исходник скрипта set Bitmap Parameters чем-то поможет.
aly8