Defina CALayer como o conteúdo difuso do SCNMaterial

Eu estive pesquisando em toda a Internet nos últimos dias sem sucesso. Infelizmente, a documentação da Apple sobre esse problema específico é vaga e nenhum código de amostra está disponível (pelo menos foi o que eu descobri). Qual parece ser o problema que você pode perguntar ...

Estou tentando definir a camada de uma visão geral como o conteúdo do material usado para renderizar a tela de um modelo do iPhone (Sim, trippy: P). O mapeamento UV da tela do iPhone é definido de 0 a 1, para que não ocorra nenhum problema no mapeamento da textura / camada nos tecidos.

Então, em vez de fazer com que essa camada apareça renderizada no iPhone, da mesma forma que a imagem à esquerda, em vez disso, eu faço isso renderizada no iPhone como a imagem à direita

Renderização correta Renderização incorreta

Observe também que quando eu defino um ponto de interrupção e depuro o nó real do iPhone e o visualizo no Xcode, uma renderização completamente diferente é mostrada e a camada fica meio corrigida quando eu continuo a execução:

Agora então ... Como faço para corrigir esse problema ?? Eu tentei brincar com o conteúdo do difuso transformar matriz, mas nada é corrigido. Também tentei redimensionar o UIView para 256x256 (já que o UV parece ser 256x256, como mostrado no blender - o pacote de modelagem em 3D), mas isso não corrige nada.

Aqui está o código para a camada:

UIView *screen = [[UIView alloc] initWithFrame:self.view.bounds];
screen.backgroundColor = [UIColor redColor];

UIView *temp = [[UIView alloc] initWithFrame:CGRectMake(0, 0, screen.bounds.size.width, 60)];
temp.backgroundColor = [UIColor colorWithRed:0 green:(112.f/255.f) blue:(235.f/255.f) alpha:1];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectInset(temp.bounds, 40, 0)];
label.frame = CGRectOffset(label.frame, 40, 0);
label.textColor = [UIColor colorWithRed:0 green:(48.f/255.f) blue:(84.f/255.f) alpha:1];
label.text = @"Select Track";
label.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:30];
label.minimumScaleFactor = 0.001;
label.adjustsFontSizeToFitWidth = YES;
label.lineBreakMode = NSLineBreakByClipping;
[temp addSubview:label];

UIView *separator = [[UIView alloc] initWithFrame:CGRectMake(0, temp.bounds.size.height - 2, temp.bounds.size.width, 2)];
separator.backgroundColor = [UIColor colorWithRed:0 green:(48.f/255.f) blue:(84.f/255.f) alpha:1];
[temp addSubview:separator];
[screen addSubview:temp];
screen.layer.contentsGravity = kCAGravityCenter;

Editar
O que é ainda mais estranho é que, se eu capturar uma UIImage da exibição usando:

- (UIImage *) imageWithView:(UIView *)view
{
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return img;
}

e use isso como conteúdo difuso ... tudo funciona perfeitamente bem ?! É realmente estranho e frustrante, pois o tamanho da imagem é exatamente o mesmo que o do uiview ...

Editar 2

Acabei usando apenas uma imagem da visualização como textura, o que torna as coisas muito mais estáticas do que eu precisava. Não definirei isso como a resposta, porque ainda aguardarei uma correção correta para esse problema, mesmo que em muito tempo. Portanto, se você tem uma resposta e este tópico foi aberto por um longo tempo, faça um favor, se puder. A documentação desta seção é tão ruim.

questionAnswers(2)

yourAnswerToTheQuestion