Intereting Posts
SKEffectNode – ограничение размера размытия CIFilter – большой черный ящик Как определить, была ли нажата ссылка, внутри UITextView, Swift Могу ли я контролировать количество ячеек в памяти в UICollectionView (Swift)? Как сохранить и получить массив байтов в базу данных sqlite3, используя BLOB в swift? Создайте случайную папку в файловой системе и сохраните загруженный файл iOS Экран iPhone Simulator черный, когда у меня есть приложение, построенное и запущенное Приложение для джейлбрейкового устройства iOS: постоянная фоновая операция HeaderFooterView UITableView не растягивается в соответствии с шириной класса Firebase facebook login для ios (быстрый) – использование неразрешенного идентификатора FBSDKLoginManager ' Когда пользователь повторно покупает при покупке приложения, вы должны вызывать функцию paymentQueue :: updatedTransactions iOS? Добавьте kAudioUnitSubType_Varispeed в AUGraph в iOS5 Поиск нерегулярного представления, содержащего точку Нечетное белое пространство: nowrap; поведение в IOS Веб-приложение чувствует себя менее отзывчивым при добавлении на главный экран iPhone iOS: UIWebViewDelegate didFailLoadWithError не вызывается при отключении соединения -1005 error

Могу ли я использовать PNG-последовательность в качестве анимированного материала на объекте SceneKit?

Я хотел бы программно изменить материал объекта, созданного с помощью SceneKit в iOS. Но я хотел бы использовать анимированные файлы изображений. PNG-последовательности отлично работают в iOS для таких вещей, как UIImageViews – как я могу использовать их в качестве материала в SceneKit?

Что-то вроде этого не работает:

floor.firstMaterial.diffuse.contents = [UIImage animatedImageNamed:@"ANIMATION_" duration:6.0f]; 

Благодаря!

нет ничего, что можно использовать из коробки.

Я бы сделал это с помощью модификаторов шейдеров. Если вы упаковываете все свои изображения в одно изображение, вы можете использовать модификатор (в SCNShaderModifierEntryPointGeometry входа SCNShaderModifierEntryPointGeometry ), чтобы обновлять координаты текстуры объекта в соответствии с u_time чтобы каждое u_time другое изображение (или суб-изображение атласа) ,

Существует гораздо более простое решение (или, по крайней мере, я думаю, что это проще), хотя я не могу подтвердить, насколько он эффективнее. Я тестировал это на iPad mini (1-й ген), и он отлично работает.

Вместо того, чтобы помещать текстуру, которая является спрайтом в содержимое материала (и скрипка с шейдером), вместо этого вы можете разместить там объект SKScene.

Таким образом, вы можете просто использовать объекты SKSpriteNode в SKScene и анимировать их с помощью объектов SCNAction. Вся анимация может управляться легко и мощно, без необходимости касаться шейдерного кода.

  NSArray<SKTexture*> *cursorTextures = @[ [SKTexture textureWithImageNamed:@"tilecursor1.png"], [SKTexture textureWithImageNamed:@"tilecursor2.png"], [SKTexture textureWithImageNamed:@"tilecursor3.png"], [SKTexture textureWithImageNamed:@"tilecursor4.png"], [SKTexture textureWithImageNamed:@"tilecursor5.png"] ]; SKSpriteNode *cursorSprite = [SKSpriteNode spriteNodeWithTexture:cursorTextures[0]]; cursorSprite.position = CGPointMake(cursorSprite.size.width/2.0, cursorSprite.size.height/2.0); [cursorSprite runAction:[SKAction repeatActionForever:[SKAction animateWithTextures:cursorTextures timePerFrame:0.1]]]; SKScene *cursorScene = [SKScene sceneWithSize:cursorSprite.size]; cursorScene.backgroundColor = [UIColor clearColor]; [cursorScene addChild:cursorSprite]; ... self.cursor.material.diffuse.contents = cursorScene;