2016-05-30 4 views
0

Основы:

У меня есть много SCNNodes, которые необходимо менять цвет сразу. Они идут от зеленого до синего. В настоящее время у меня есть два отдельных изображения для каждого из узлов (один зеленый и другой синий), и я пытаюсь переключить изображение для всех узлов. Вот мой код:SceneKit - Переход между текстурами

let blueTubeTexture = UIImage(named: "BlueTubeTexture") 
self.tube1.geometry!.firstMaterial!.diffuse.contents = blueTubeTexture 

В принципе, у меня есть много глобальных узлов (tube1, tube2, tube3 и т.д.), которые все разделяют ту же геометрию. Так как они имеют одну и ту же геометрию, изменение одного из них приводит к тому, что каждый из них сразу меняет их.


Проблема:

Единственная проблема с этим решением является то, что изменение даже одной текстуры замедляет приложение. Он глючит, когда я пытаюсь изменить текстуру трубка. Но смена всех из них сразу приводит к краху.


Что я прошу?

Меняет структуру таким образом неэффективно? Если изменение только одного изображения ставит много напряжения на процессор, возможно, это нехорошее решение. Есть ли лучший способ изменить цвет изображения следующим образом?

ответ

0

выглядит как проблема с памятью. Насколько велики эти карты? Если вы попытаетесь загрузить много изображений в память, ваше приложение будет убито системой. Вы пробовали профилировать его?

Также обратите внимание, что следующий будет также работать и сохранить выделение в UIImage:

diffuse.contents = "BlueTubeTexture" 
+0

Спасибо за подсказку. Что касается размеров карт, есть много изображений, каждый из которых довольно большой. Считаете ли вы, что было бы более эффективно, если бы я помещал их в атласы, а не 1x, 2x и 3x? –

+0

Я не уверен, что каталоги каталогов помогают текстурам, применяемым к моделям. Их размер на экране зависит от того, насколько вы ближе к объекту, а не к король устройства, которое у вас есть. Просто убедитесь, что ваши изображения имеют нужный размер. Маленькие, когда они кажутся маленькими на scree, больше, когда они появляются больше на экране. – mnuages

Смежные вопросы