Как стать автором
Обновить

Комментарии 8

сложно что-то оптимизировать, использование Metal дало бы более широкие возможности в этом плане

В SceneKit у вас есть возможность использовать свои шейдеры на MSL, если речь о такой оптимизации.
Это конечно решает часть проблем, но всё равно очень многое скрыто от глаз разработчика. К примеру, с iOS 14 увеличилось время загрузки сцены и кажется, что без вмешательства Apple, повлиять на это нельзя.
По ссылке все же ошибка, а не стандартное поведение. Такую же ошибку можно допустить и в самом Metal API и защититься от этого разработчику не получится.
Я скорее про то, что не каждый этап работы SceneKit мы можем контролировать. А так я согласен с вами, что SceneKit позволяет оптимизировать многие вещи при необходимости — это и использование шейдеров, и возможность вклиниться в отрисовку каждого кадра. Даже отдельный инструмент для профилирования есть.
Это конечно хорошо всё и я сам много времени провел делая для заказчиков игры в SpriteKit/SceneKit и немножко даже полюбил их, но к сожалению боюсь Apple совсем скоро дропнет их, сколько обновлений, а новшеств никаких нет в этих фремворках, прийдется плясать вокруг rotation3DEffect в SwiftUI для подобных задач.
Всё конечно возможно. В 2018 году на WWDC было уделено очень много времени данным инструментам и с тех пор тишина. Но вдруг это затишье перед бурей:)
Отличная статья! Спасибо! Будет продолжение с описанием анимации для сцены? Хотелось бы узнать как сделать, к примеру, 3D кнопку, которая красиво анимируется при нажатии. Я так понял у Вас есть анимация вращения карты, но как сделать что бы по касанию модель меняла форму, цвет, даже менялись текстуры?
Спасибо! На самом деле не было планов превращать это в цикл статей по SceneKit, но подумаю над этим. А так, если хочется глубже погрузиться в тему, то я бы рекомендовал начать с просмотра сессий WWDC, в том же Advances in SceneKit Rendering есть два примера кода с игровыми демо уровнями и в них раскрыты очень многие моменты — управление камерой, анимации, партиклы, звук, физика.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий