gpt4 book ai didi

editor - 如何在没有 Material 编辑器的情况下访问 maxscript 中的 Material ?

转载 作者:行者123 更新时间:2023-12-01 12:43:12 25 4
gpt4 key购买 nike

在 maxscript 中似乎有两种访问 Material 的选项,即通过紧凑的 Material 编辑器和 Slate Material 编辑器。问题在于,如果设置了最大值,试图通过紧凑型编辑器(currentMaterialLibrarysceneMaterialsmeditMaterials)访问/修改 Material 的脚本会失败使用 Slate 编辑器,反之亦然。

有没有办法直接在 maxscript 中访问 Material ,而不管使用哪个编辑器?

一旦我有了 Material ,我想:

  1. 从场景中清除未分配的 Material ,这样未使用的 Material 上的纹理丢失就不会在场景打开/网络渲染时引发错误。
  2. 检查某些 Material 属性(即 Glossy 分割),这样购买的具有“不必要的高值”的模型不会破坏渲染时间。

最佳答案

如果您想查找所有现有 Material (场景中或不在场景中),以下代码片段将为您完成

for aMtlType in material.classes do 
(
for aMtl in (getClassInstances aMtlType processAllAnimatables:true) do
(
print aMtl
-- Does this material exist in the scene or not?
if (findItem sceneMaterials aMtl) == 0 do (print "This material does not exist in the scene")
)
)

我不太确定如何从现场清除它。您可以获得依赖项 (refs.dependents aMtl),然后将对此 Material 的任何引用替换为新的默认 Material 。那应该可行,尽管我还没有尝试过(甚至没有尝试运行它)。所以...好好测试并小心使用 :-)。

defMtl = ...
for d in refs.dependents aMtl do (
refIdx = 0
for i = 1 to refs.getNumRefs d do ( if (refs.getreference d i) == aMtl ) do ( refIdx = i )
refs.replaceReference aMtl refIdx defMtl
)

对于您的第二个问题 - 检查属性 - 您可以检查它是否具有适当的属性并根据需要设置值

if (hasProperty aMtl "diffuse") 做 (aMtl.diffuse = 0)

关于editor - 如何在没有 Material 编辑器的情况下访问 maxscript 中的 Material ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com