Основы:
У меня есть много SCNNodes, которые необходимо менять цвет сразу. Они идут от зеленого до синего. В настоящее время у меня есть два отдельных изображения для каждого из узлов (один зеленый и другой синий), и я пытаюсь переключить изображение для всех узлов. Вот мой код:SceneKit - Переход между текстурами
let blueTubeTexture = UIImage(named: "BlueTubeTexture")
self.tube1.geometry!.firstMaterial!.diffuse.contents = blueTubeTexture
В принципе, у меня есть много глобальных узлов (tube1, tube2, tube3 и т.д.), которые все разделяют ту же геометрию. Так как они имеют одну и ту же геометрию, изменение одного из них приводит к тому, что каждый из них сразу меняет их.
Проблема:
Единственная проблема с этим решением является то, что изменение даже одной текстуры замедляет приложение. Он глючит, когда я пытаюсь изменить текстуру трубка. Но смена всех из них сразу приводит к краху.
Что я прошу?
Меняет структуру таким образом неэффективно? Если изменение только одного изображения ставит много напряжения на процессор, возможно, это нехорошее решение. Есть ли лучший способ изменить цвет изображения следующим образом?
Спасибо за подсказку. Что касается размеров карт, есть много изображений, каждый из которых довольно большой. Считаете ли вы, что было бы более эффективно, если бы я помещал их в атласы, а не 1x, 2x и 3x? –
Я не уверен, что каталоги каталогов помогают текстурам, применяемым к моделям. Их размер на экране зависит от того, насколько вы ближе к объекту, а не к король устройства, которое у вас есть. Просто убедитесь, что ваши изображения имеют нужный размер. Маленькие, когда они кажутся маленькими на scree, больше, когда они появляются больше на экране. – mnuages