获取材质对象

Mesh材质

CS
// 指定索引获取
Material material = @MeshInstance3D.Mesh.SurfaceGetMaterial(idx);

// 遍历
for (int i = 0; i < @MeshInstance3D.Mesh.GetSurfaceCount(); i++) {
	Material material = @MeshInstance3D.Mesh.SurfaceGetMaterial(i);
}
点击展开查看更多

材质覆盖 Material Override

CS
// 指定索引获取
Material material = @MeshInstance3D.GetSurfaceOverrideMaterial(idx)

// 遍历
for (int i = 0; i < @MeshInstance3D.GetSurfaceOverrideMaterialCount(); i++) {
	Material material = @MeshInstance3D.GetSurfaceOverrideMaterial(i);
}
点击展开查看更多

材质类型 Material

Material为材质类的基类,可向具体的子类转换

CS
// 使用as关键字
StandardMaterial3D sm = @Material as StandardMaterial3D;
ShaderMaterial shader = @Material as ShaderMaterial;
...

// 使用is关键字
if (@Material is StandardMaterial3D sm)
	// fm...
else if (@Material is ShaderMaterial shader)
	// shader...
else if (@Material is ...)
点击展开查看更多

着色器材质 ShaderMaterial

CS
// 获取Uniform值
Variant value = @ShaderMaterial.GetShaderParameter("Uniform名称");
Variant value = @ShaderMaterial.Get("shader_parameter/Uniform名称");
// 更改Uniform值
@ShaderMaterial.SetShaderParameter("Uniform名称", Value);
@ShaderMaterial.Set("shader_parameter/Uniform名称", Value);
点击展开查看更多

版权声明

作者: Chaim

链接: https://chaim.eu.org/posts/%E5%8A%A8%E6%80%81%E6%9D%90%E8%B4%A8/

许可证: CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Please attribute the source, use non-commercially, and maintain the same license.

开始搜索

输入关键词搜索文章内容

↑↓
ESC
⌘K 快捷键