2
votes

Running a fresh build of the exact same application on iOS 11.2 and 11.3, everything works fine on 11.2, but on 11.3 it appears as if none of the materials are getting rendered onto the ARKit face node, that uses a SCNMorpher and blendshape values to update.

I'm going to dig into this more and report back a fix if I can find one, but I thought I'd drop a beacon here to see if anyone else is having similar issues, and if so, if they've found any solutions, or if anyone has any ideas in general.

It is my understanding that minor version bumps should be fully backwards compatible. Is that correct?

Thanks

Update 1: This seems to effect both ARKit and SceneKit scenes.

Update 2: This seems to be related to both materials and the way lighting is handled differently in 11.3. Changing the lighting to be rendered further away, a similar effect to 11.2 is achieved. It's almost as if the base units for distance have changed from meters to inches or something. Confusingly, changing the lighting distance seems to only effect a device running 11.3 now, not 11.2. The problem now is that the rendering is completely matte. Further isolation reveals that specular is rendering normally in 11.2, but when specular is set in 11.3, either as a UIImage or a UIColor, it simply does not have any effect. I'm going to try setting the specular as something else, like a CALayer and CGImage, and see if either of those work, despite all of the above having claimed support in the documentation.

iOS 11.2 ARKit

iOS 11.3 ARKit

1

1 Answers

1
votes

iOS 11.3 seems to change the default lightingModel, which is the root cause of all the woes.

Simply setting the materials explicitly to what was previously implicit resolved all pains.

For example,

baseNode.geometry?.materials[0].lightingModel = .blinn