@unknown can you update the affected versions as it is still a problem in the newest release 1.15.1.
I have figured out why this is a difficult problem to solve. The end frame had once AO turned on but that gave this bug: MC-51113 (TLDR darkens the top face of the end protal frame) I suspect that the other items suffer similar problems if the their AO is set on. Solving this problem will fix a bunch of other related bug such as MC-160917 where custom models cant have any complex geometry without being effect by the MC-51113 bug.
The current way Minecraft calculates AO is via each voxel (which is good as it's fast to compute). The downside is that any sub geometry of the voxel (i.e. 3d details in a given block) experiences unexpected darkening.
There is a solutions to this problem, and it should be relatively easy to implement:
In the model (.json) file, give the possibility to either enable or disable AO per face and/or per element, while still including AO for the root tag as it should be an indicator for the projection of AO on neighboring voxels/blocks. So to fix the case of the end portal frame just disable AO on the top face, or create a new element that only includes the top face and disable AO on that.
@unknown can you update the affected versions as it is still a problem in the newest release 1.15.1.
I have figured out why this is a difficult problem to solve. The end frame had once AO turned on but that gave this bug: MC-51113 (TLDR darkens the top face of the end protal frame) I suspect that the other items suffer similar problems if the their AO is set on. Solving this problem will fix a bunch of other related bug such as MC-160917 where custom models cant have any complex geometry without being effect by the MC-51113 bug.
The current way Minecraft calculates AO is via each voxel (which is good as it's fast to compute). The downside is that any sub geometry of the voxel (i.e. 3d details in a given block) experiences unexpected darkening.
There is a solutions to this problem, and it should be relatively easy to implement:
In the model (.json) file, give the possibility to either enable or disable AO per face and/or per element, while still including AO for the root tag as it should be an indicator for the projection of AO on neighboring voxels/blocks. So to fix the case of the end portal frame just disable AO on the top face, or create a new element that only includes the top face and disable AO on that.