Скайбокс scenekit мерцает при движении камеры

скайбокс имеет изображения высокого разрешения 1500x1500 для сетчатки

SCNScene *scene = [SCNScene scene];

scene.background.contents = @[[UIImage imageNamed:@"left.png"],[UIImage imageNamed:@"left.png"],[UIImage imageNamed:@"top.png"],[UIImage imageNamed:@"botom.png"],[UIImage imageNamed:@"back.png"],[UIImage imageNamed:@"front.png"]];

и камера настроена как:

_cameraNode                 = [SCNNode node];
_cameraNode.camera          = [SCNCamera camera];
_cameraNode.position        = SCNVector3Make(0, 0, 10000);
_cameraNode.camera.xFov     = 55;
_cameraNode.camera.zFar     = 2100000;
_cameraNode.camera.aperture = 1/50;

Я перемещаю камеру по ее значению z на 100 с приращением. Когда камера достигает отметки 252000, скайбокс начинает мерцать, как будто он приближается и отдаляется. проблема усугубляется, если камера движется дальше, пока сцена не станет черной (черный цвет — это цвет фона SCNView). Как избежать такого мерцания и возможности камеры в самой сцене? Что я делаю не так?


person Hashmat Khalil    schedule 17.01.2015    source источник
comment
Вы когда-нибудь решали это?   -  person Nerrolken    schedule 02.11.2016
comment
да, я пробовал, и это сработало. я переработал свою 3D-сцену, где размеры и размер объекта были уменьшены, и она перестала мерцать. Я также узнаю, что нельзя использовать размер объекта реального мира. было бы намного лучше уменьшить все объекты пропорционально.   -  person Hashmat Khalil    schedule 02.11.2016


Ответы (1)


Как я сказал в комментариях, я переработал свою 3D-сцену, в которой размеры и размер объекта были уменьшены. Я также узнал, что нельзя использовать размер объектов реального мира. Было бы намного лучше уменьшить все объекты пропорционально. Не нужно создавать огромную сцену с реальными размерами и размерами. Для сжатия также потребуется меньшая текстура, что может быть полезно для оптимизации памяти. С тех пор, как я применил эти изменения, я не видел никаких мерцаний.

person Hashmat Khalil    schedule 19.11.2016
comment
Принятие теоретических ответов не помогает другим. Пожалуйста, поделитесь кодом вашего решения, чтобы все могли извлечь выгоду. - person Gyani; 01.12.2016
comment
Трехмерные объекты были смоделированы с помощью инструментов трехмерной разработки. поэтому код (задачи c) или Xcode не участвовали. Если вы смоделировали все свои объекты, вам следует быть осторожным с размером геометрии и пропорциями по отношению к другим объектам. например, если высота стены 3 метра, то высота мыши будет 0,05 метра. поэтому следует подумать об этих размерах и измерениях. (Я предполагаю, что вы используете инструмент моделирования для создания своей мыши и стены. Можно было бы использовать код только для моделирования геометрии, но это уже другая история.) - person Hashmat Khalil; 01.12.2016
comment
@HashmatKhalil Поможет ли в этом уменьшение моделей с помощью кода или редактора сцен? - person ColdSteel; 29.12.2016
comment
Я смоделировал свои ассеты с помощью scenekit. Я бы порекомендовал масштабировать активы с помощью ваших инструментов моделирования, например, если ваша модель имеет высоту, скажем, 1 метр, и текстура подходит для этой высоты, но она не будет хороша для сжатой на 10 см. это будет использовать много памяти . но если у вас нет такого огромного коэффициента масштабирования, тогда можно масштабировать модели с помощью кода. - person Hashmat Khalil; 29.12.2016