Я знаю, что вы можете установить поверхность сферы или плоскости как изображение, сделав что-то подобное, когда вы сначала добавите его в сцену.Каков правильный способ обновления поверхности геометрии в iOS SceneKit?
UIImage image = UIImage.FromFile("firstimage.jpg");
Sphere.FirstMaterial.Diffuse.Contents = image;
Но как насчет того, когда вы хотите обновить его под действием пользователя ... например, при нажатии кнопки. Прямо сейчас я делаю что-то вроде этого.
UIImage newImage = UIImage.FromFile("secondimage.jpg");
//digs through the scnview and the scene, into it's child nodes, finds the geometry and replaces the image
mySCNView.Scene.RootNode.ChildNodes[0].Geometry.FirstMaterial.Diffuse.Contents = newImage;
Но это кажется грязным и на самом деле занимает около 2 или 3 секунд. Я не особо беспокоюсь о жестком коде индекса массива.
Есть ли более эффективный способ сделать этот вид обновления?
P.S. Я прошу прощения за некоторые забавные строки кода, это на самом деле написано на Xamarin.iOS, но не стесняйтесь отвечать в Swift или C, и я сделаю перевод.
Какая часть идет медленно? Загрузка изображения, поиск узла или обновление материала? –
обновление материала –