作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 maxscript 中似乎有两种访问 Material 的选项,即通过紧凑的 Material 编辑器和 Slate Material 编辑器。问题在于,如果设置了最大值,试图通过紧凑型编辑器(currentMaterialLibrary
、sceneMaterials
、meditMaterials
)访问/修改 Material 的脚本会失败使用 Slate 编辑器,反之亦然。
有没有办法直接在 maxscript 中访问 Material ,而不管使用哪个编辑器?
一旦我有了 Material ,我想:
最佳答案
如果您想查找所有现有 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/
我是一名优秀的程序员,十分优秀!