swift - 不创建新材料就无法修改材料
问题描述
我需要更改模型中某些材料的纹理/颜色。当我创建一个新材料并像这样分配它时
var materials = geometry.materials
for (index, material) in materials.enumerated()
{
if (shouldChangeMaterial)
{
let updated = SCNMaterial()
updated.isDoubleSided = false
updated.diffuse.contents = UIColor.red
materials[index] = updated
}
}
geometry.materials = materials
它按预期工作
但是当我尝试像这样更改现有的
var materials = geometry.materials
for (index, material) in materials.enumerated()
{
if (shouldChangeMaterial)
{
let updated = materials[index]
updated.isDoubleSided = false
updated.diffuse.contents = UIColor.red
materials[index] = updated
}
}
geometry.materials = materials
或这个
for (index, material) in materials.enumerated()
{
if (shouldChangeMaterial)
{
geometry.materials[index].diffuse.contents = UIColor.red
}
}
我得到一个全黑模型
我无法用新材料替换材料,因为材料名称用于计算shouldChangeMaterial
变量。
解决方案
推荐阅读
- r - 使用 R.Update 时的维数不正确
- sql - SQL 语句的索引
- wordpress - Wordpress:创建图片库时选择图片大小
- java - 通过对 element.getText() 的一次调用从 XPath 结果中排除某些子节点?
- javascript - 从默认路由重定向到另一条路由时的延迟
- rest - 是否可以使用 JSONPath 或 XPath 来获取查询字符串?
- android - Completable.fromAction 不执行 rjava2 中的代码
- python - Python数据类,验证初始化参数的pythonic方法是什么?
- python - Pycharm 自动完成功能不适用于某些包
- c# - ONNX Runtime C# 不记得 LSTM 网络的状态