更改现有材质

material.py

print("Executing material script!")

newScene()
loadGeometry("$VRED_EXAMPLES/geo/teddy.osb")
calcVertexNormals()
updateScene()

fur = findMaterial("fur_white")

fur.fields().setVec3f("diffuseColor", 0.3, 0.2, 0.5)
fur.fields().setVec3f("specularColor", 0.2, 0.1, 0.8)

此示例脚本加载在 VRED Examples 文件夹中找到的泰迪几何体,然后查找毛发材质 fur_white,并使用这些新值更改漫反射和镜面反射颜色。fur.fields().setVec3f 表示对象 (fur)、其特性 (fields) 及其值类型 (setVec3f)。添加特性名称并提供值类型的值。

由于存在各种值类型,因此您需要了解特性的值类型。使用节点编辑器可以实现此目的。将材质从“材质编辑器”拖动到“节点编辑器”,然后将光标悬停在特定特性(左列)的值(右列)上。值的工具提示将提供特性的值类型。

“节点编辑器”显示具有值类型的工具提示

例如,在图中,SFInt8 是值类型。要更改毛发的 lightMode 特性,应使用 fur.fields().setInt8("lightMode", 1)。

有关更多帮助,请参考 Python 文档中的 vrFieldAccess 文档。这将提供字段的返回值类型。这有助于了解要调用的函数。

注意:

不要期望 UI 立即更新,不过渲染可能立即更新,因为 UI 更新可能会对渲染性能产生负面影响。